ROS 2에서 패키지는 코드를 구성하는 조직 단위로 사용됩니다. 코드를 설치하거나 다른 사람들과 공유하려면 패키지로 구성해야 합니다. 패키지를 사용하면 ROS 2 작업을 릴리스하고 다른 사람들이 쉽게 빌드하고 사용할 수 있게 할 수 있습니다.
ROS 2에서 패키지를 생성하기 위해서는 빌드 시스템으로ament
와 빌드 도구로colcon
을 사용합니다. 공식적으로 지원되는CMake
또는Python
을 사용하여 패키지를 생성할 수 있으며, 다른 빌드 유형도 존재할 수 있습니다.
package.xml
: 패키지에 대한 메타 정보를 포함
resource/<package_name>
: 패키지에 대한 리소스를 지정
setup.cfg
: 패키지에 실행 가능한 파일이 포함되어 있는 경우 ros2 run이 해당 파일을 찾을 수 있도록 하기 위한 파일
setup.py
: 패키지를 설치하는 방법에 대한 지침을 포함
<package_name>
- 패키지와 동일한 이름을 가진 디렉토리로, ROS 2 도구에서 패키지를 찾는 데 사용되며, __init__.py
파일이 포함됩니다.
my_package/
package.xml
resource/my_package
setup.cfg
setup.py
my_package/
# Linux
cd ~/ros2_ws/src
# Python으로 패키지 생성
ros2 pkg create --build-type ament_python <package_name>
# --node-name 옵션 사용해서 노드 쉽게 생성
ros2 pkg create --build-type ament_python --node-name my_node my_package
➡ 다음과 같이 결과 값 나옴
going to create a new package
package name: my_package
destination directory: /home/user/ros2_ws/src
package format: 3
version: 0.0.0
description: TODO: Package description
maintainer: ['<name> <email>']
licenses: ['TODO: License declaration']
build type: ament_python
dependencies: []
node_name: my_node
creating folder ./my_package
creating ./my_package/package.xml
creating source folder
creating folder ./my_package/my_package
creating ./my_package/setup.py
creating ./my_package/setup.cfg
creating folder ./my_package/resource
creating ./my_package/resource/my_package
creating ./my_package/my_package/__init__.py
creating folder ./my_package/test
creating ./my_package/test/test_copyright.py
creating ./my_package/test/test_flake8.py
creating ./my_package/test/test_pep257.py
creating ./my_package/my_package/my_node.py
# Linux
cd ~/ros2_ws
colcon build
# 📖 To build only the my_package package next time, you can run:
colcon build --packages-select my_package
# Linux
source install/local_setup.bash
ros2 run my_package my_node