1. Cmake와 Pytho을 사용하여 패키지를 만들수 있고, ROS2에서 공식적으로 지원된다.
CMake :
package.xml,
CMakeLists.txt
예) 필수 파일
my_package/
Cmakelists.txt
package.xml
Python :
package.xml,
setup.py,
setup.cfg : 실행 패키지, ros2 run으로 실행함
/<package_name> : 패키지내임과 같은 이름, __init__.py를 포함, 패키지를 찾을때 사용됨
예) 필수 파일
my_package/
setup.py
package.xml
resource/my_package
workspace에서 패키지 구성 : 하나의 workspace에는 다른 빌드타입(CMake, Python 등)으로 구성된 패키지를 가질 수 있다.
예)
workspace_folder/
src/
package_1/
CMakeLists.txt
package.xml
package_2/
setup.py
package.xml
resource/package_2
...
package_n/
CMakeLists.txt
package.xml
2. 패키지 만들기
1) CMake
cd ~/dev_ws/src
패키지만들기 : ros2 pkg create --build-type ament_cmake <package_name>
ros2 pkg create --build-type ament_cmake --node-name my_node my_package
자동으로 패키지 필요 파일들이 생성됨
2)Python
cd ~/dev_ws/src
패키지만들기 : ros2 pkg create --build-type ament_python <package_name>
ros2 pkg create --build-type ament_python --node-name my_node my_package
자동으로 패키지 필요 파일들이 생성됨
3. Build a package
workspace에 패키지를 넣는것은 특히 중요하며, workspace root에서 colcon build를 실행하면 한번에 많은 package들을 build하게 됩니다.
workspace의 루트로 간다.
cd ~/dev_ws
colcon build 입력엔터하면, workspace에 있는 모든 package가 모두 빌드됩니다.
colcon build --packages-select my_package 입력엔터하면, workspace내에서 my_package만 선택하여 빌드합니다.
4. source the setup file
. install/setup.bash
5. package 사용하기
ros2 run my_package my_node
6. 패키지 내용 만들어보기
dev_ws/src/my_package
ros2 pkg create
1) CMake
CMakeLists.txt
include
package.xml
src
2) Python
my_package
package.xml
resource
setup.cfg
setup.py
test
7. package.xml를 Customize 해보기
dev_ws/src/my_package에서 package.xml를 열어본다
1) CMake
1<?xml version="1.0"?>
2<?xml-model
3 href="http://download.ros.org/schema/package_format3.xsd"
4 schematypens="http://www.w3.org/2001/XMLSchema"?>
5<package format="3">
6 <name>my_package</name>
7 <version>0.0.0</version>
8 <description>TODO: Package description</description>
9 <maintainer email="user@todo.todo">user</maintainer>
10 <license>TODO: License declaration</license>
11
12 <buildtool_depend>ament_cmake</buildtool_depend>
13
14 <test_depend>ament_lint_auto</test_depend>
15 <test_depend>ament_lint_common</test_depend>
16
17 <export>
18 <build_type>ament_cmake</build_type>
19 </export>
20</package>
2) Python
1<?xml version="1.0"?>
2<?xml-model
3 href="http://download.ros.org/schema/package_format3.xsd"
4 schematypens="http://www.w3.org/2001/XMLSchema"?>
5<package format="3">
6 <name>my_package</name>
7 <version>0.0.0</version>
8 <description>TODO: Package description</description>
9 <maintainer email="user@todo.todo">user</maintainer>
10 <license>TODO: License declaration</license>
11
12 <test_depend>ament_copyright</test_depend>
13 <test_depend>ament_flake8</test_depend>
14 <test_depend>ament_pep257</test_depend>
15 <test_depend>python3-pytest</test_depend>
16
17 <export>
18 <build_type>ament_python</build_type>
19 </export>
20</package>
ROS2 간단한 service client python 코딩하기 (0) | 2021.08.24 |
---|---|
ROS2 C++ 간단한 publisher 과 subscriber 만들어보기 (0) | 2021.08.23 |
ROS2 파일 런치하여 한번에 실행하기 (0) | 2021.08.21 |
ROS2 turtlesim action 액션 (0) | 2021.08.20 |
ROS2 turtlesim parameter 파라미터 (0) | 2021.08.20 |
댓글 영역