상세 컨텐츠

본문 제목

ROS2 패키지 만들기

Programming

by 신농해태 2021. 8. 23. 15:17

본문

반응형

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>

 

728x90
LIST

관련글 더보기

댓글 영역