[Navigation] 2. package 생성

bbolddagu·2023년 5월 10일
1

IoT

목록 보기
4/7

패키지(Package)

ROS 2에서 패키지는 코드를 구성하는 조직 단위로 사용됩니다. 코드를 설치하거나 다른 사람들과 공유하려면 패키지로 구성해야 합니다. 패키지를 사용하면 ROS 2 작업을 릴리스하고 다른 사람들이 쉽게 빌드하고 사용할 수 있게 할 수 있습니다.

ROS 2에서 패키지를 생성하기 위해서는 빌드 시스템으로 ament와 빌드 도구로 colcon을 사용합니다. 공식적으로 지원되는 CMake 또는 Python을 사용하여 패키지를 생성할 수 있으며, 다른 빌드 유형도 존재할 수 있습니다.


📚 ROS2 package 구성

  • ROS 2 Python and CMake packages는 각각 최소한의 contents를 가지고 있음
  • 🙋 나는 Python 사용

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/

📚 Packages in a workspace

  • 하나의 작업 공간에는 여러 개의 패키지를 원하는 만큼 포함할 수 있으며, 각각의 패키지는 자체 폴더에 위치합니다. 또한 한 작업 공간에 다른 빌드 유형의 패키지 (CMake, Python 등)를 가질 수 있습니다. 그러나 중첩된 패키지는 사용할 수 없습니다.
  • 권장하는 방법은 작업 공간 내에 src 폴더를 만들고, 그 안에서 패키지를 생성하는 것입니다. 이렇게 하면 작업 공간의 최상위 수준을 "깔끔하게" 유지할 수 있습니다.

1) 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

📚 Build a package

# Linux

cd ~/ros2_ws

colcon build

# 📖 To build only the my_package package next time, you can run:
colcon build --packages-select my_package

📚 Source the setup file

  • 새 패키지를 생성하기 위해서, 새 터미널 열기
# Linux

source install/local_setup.bash

📚 Use the package

ros2 run my_package my_node

0개의 댓글