ROS2 Tutorial (Basic)
  • 교육 안내
  • ROS2 개요
  • ROS2 환경 구성
  • turtlesim, ROS2 rqt
  • 노드(Node) 이해하기
  • 토픽(Topic) 이해하기
  • 서비스(Service) 이해하기
  • 파라메터(Parameter) 이해하기
  • 액션(Action) 이해하기
  • rqt_console 을 이용해 로그 보기
  • 노드 실행하기(launch)
  • 데이터 기록 및 재생
  • ROS2 프로그래밍 시작
  • 작업공간 만들기
  • 패키지 만들기
  • 간단한 게시자와 구독자 노드 만들기
  • 간단한 서비스 및 클라이언트 작성
  • 사용자 정의 msg 및 srv 파일 생성
  • 사용자 정의 인터페이스 구현
  • 파라메터 사용하기
  • 문제 식별에 ros2doctor 사용하기
Powered by GitBook
On this page
  • 개요
  • 1. ROS2 패키지란 무엇입니까?
  • 2. 무엇이 ROS2 패키지를 구성합니까?
  • 3. 작업공간의 패키지
  • 실습
  • 1. 패키지 생성
  • 2. 패키지 빌드
  • 3. install 파일 소싱
  • 4. 패키지 사용
  • 5. 패키지 내용 확인
  • 6. package.xml 사용자 지정

Was this helpful?

Export as PDF

패키지 만들기

저작권: 쿼드(QUAD) 드론연구소 https://smartstore.naver.com/maponarooo

개요

1. ROS2 패키지란 무엇입니까?

패키지는 ROS 2 코드의 컨테이너로 간주될 수 있습니다. 코드를 설치하거나 다른 사람과 공유하려면 패키지로 구성해야 합니다. 패키지를 사용하면 ROS 2 작업을 릴리스하고 다른 사람들이 쉽게 빌드하고 사용할 수 있습니다.

ROS 2에서 패키지 생성은 빌드 시스템으로 ament를 사용하고 빌드 도구로 colcon을 사용합니다. 공식적으로 지원되는 CMake 또는 Python을 사용하여 패키지를 만들 수 있지만 다른 빌드 유형이 존재합니다.

2. 무엇이 ROS2 패키지를 구성합니까?

ROS 2 Python 및 CMake 패키지에는 각각 고유한 최소 필수 콘텐츠가 있습니다.

cmake

  • package.xml패키지에 대한 메타 정보를 포함하는 파일

  • CMakeLists.txt패키지 내에서 코드를 빌드하는 방법을 설명하는 파일

Python

  • package.xml패키지에 대한 메타 정보를 포함하는 파일

  • setup.py패키지 설치 방법에 대한 지침 포함

  • setup.cfg패키지에 실행 파일이 있는 경우 ros2 run 로 찾을 수 있습니다 .

  • <package_name> 디렉토리에는 __init__.py이 포함됩니다.

가능한 가장 간단한 패키지는 다음과 같은 파일 구조를 가질 수 있습니다.

cmake

my_package/
     CMakeLists.txt
     package.xml

Python

my_package/
      setup.py
      package.xml
      resource/my_package 

"본 교재에서는 Python을 기준으로 학습 합니다"

3. 작업공간의 패키지

단일 작업 공간에는 각각 자체 폴더에 원하는 만큼 많은 패키지가 포함될 수 있습니다. 하나의 작업 공간(CMake, Python 등)에 다양한 빌드 유형의 패키지를 포함할 수도 있습니다. 패키지를 중첩할 수 없습니다.

가장 좋은 방법은 작업 공간 src내에 폴더를 만들고 거기에 패키지를 만드는 것입니다. 이렇게 하면 작업 공간의 최상위 수준이 "깨끗한" 상태로 유지됩니다.

간단한 작업 공간은 다음과 같습니다.

workspace_folder/
    src/
      package_1/
          CMakeLists.txt
          package.xml

      package_2/
          setup.py
          package.xml
          resource/package_2
      ...
      package_n/
          CMakeLists.txt
          package.xml

실습

1. 패키지 생성

패키지 생성 명령을 실행하기 전에 폴더 src가 있는지 확인하십시오 .

cd ~/ros2_ws/src

ROS 2에서 새 패키지를 생성하기 위한 명령 구문은 다음과 같습니다.

ros2 pkg create --build-type ament_python --node-name my_node my_package

src이제 작업 공간 디렉토리 내에 이라는 새 폴더가 생겼습니다 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

새 패키지에 대해 자동으로 생성된 파일을 볼 수 있습니다.

2. 패키지 빌드

작업 공간 루트에서 실행하여 한 번에 많은 패키지를 빌드할 수 있기 때문에 작업 공간에 패키지를 배치하는 것은 특히 유용합니다 . 그렇지 않으면 각 패키지를 개별적으로 빌드해야 합니다.colcon build

작업 공간의 루트로 돌아갑니다.

cd ~/ros2_ws

이제 패키지를 빌드할 수 있습니다.

colcon build

실행 중 ros_tutorials패키지도 빌드되었음을 알 수 있습니다 . 작업 공간에 몇 개의 패키지만 있으면 괜찮지만 패키지가 많으면 시간이 오래 걸릴 수 있습니다.

다음에 my_package패키지 만 빌드하려면 다음을 실행할 수 있습니다.

colcon build --packages-select my_package

3. install 파일 소싱

새 패키지와 실행 파일을 사용하려면 먼저 새 터미널을 열고 기본 ROS2 를 소싱하십시오.

그런 다음 디렉터리 내에서 ros2_ws다음 명령을 실행하여 작업 영역을 소싱합니다.

source install/local_setup.bash

이제 작업 영역이 경로에 추가되었으므로 새 패키지의 실행 파일을 사용할 수 있습니다.

4. 패키지 사용

패키지 생성 중 --node-name인수를 사용하여 생성한 실행 파일을 실행하려면 다음 명령을 입력합니다.

ros2 run my_package my_node

그러면 터미널에 메시지가 반환됩니다.

Hi from my_package.

5. 패키지 내용 확인

ros2_ws/src/my_package내부에는 ros2 pkg create에 의해자동으로 생성된 파일과 폴더가 표시됩니다.

my_package  package.xml  resource  setup.cfg  setup.py  test

my_package 디렉토리 안에 my_node.py 가있습니다 . 향후 모든 사용자 지정 Python 노드가 생성될위치입니다.

6. package.xml 사용자 지정

패키지를 만든 후 반환 메시지에서 필드 description및 license TODO가 포함되어 있음 을 알 수 있습니다. 패키지 설명과 라이센스 선언은 자동으로 설정되지 않지만 패키지를 릴리스하려는 경우 필요하기 때문입니다. maintainer필드 를 채워야 할 수도 있습니다.

원하는 텍스트 편집기를 사용하여 ros2_ws/src/my_package/package.xml를엽니다.

<?xml version="1.0"?>
<?xml-model
   href="http://download.ros.org/schema/package_format3.xsd"
   schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
 <name>my_package</name>
 <version>0.0.0</version>
 <description>TODO: Package description</description>
 <maintainer email="user@todo.todo">user</maintainer>
 <license>TODO: License declaration</license>

 <test_depend>ament_copyright</test_depend>
 <test_depend>ament_flake8</test_depend>
 <test_depend>ament_pep257</test_depend>
 <test_depend>python3-pytest</test_depend>

 <export>
   <build_type>ament_python</build_type>
 </export>
</package>

maintainer에자동으로 입력되지 않은 경우 이름과 이메일을 라인에 입력하십시오 . 그런 다음 description행을 편집하여 패키지를 요약합니다.

<description>Beginner client libraries tutorials practice package</description>
<license>Apache License 2.0</license>

편집이 완료되면 저장하는 것을 잊지 마십시오.

라이센스 태그 아래에 _depend로 끝나는 일부 태그 이름이 표시됩니다 . 이것은 colcon이 검색할 수 있도록 package.xml 패키지에 대한 종속성을 나열하는 곳입니다. 현재는간단하고 종속성이 없지만 다음 자습서에서 이 공my_package간이 활용되는 것을 볼 수 있습니다.

package.xml파일에는 와 동일한 설명, 관리자 및 라이센스 필드가 포함되어 있으므로 setup.py도 동일하게설정해야 합니다. 두 파일에서 정확히 일치해야 합니다. 버전과 이름( package_name)도 정확히 일치해야 합니다.

setup.py를선호하는 텍스트 편집기로 엽니다 .

from setuptools import setup

package_name = 'my_py_pkg'

setup(
 name=package_name,
 version='0.0.0',
 packages=[package_name],
 data_files=[
     ('share/ament_index/resource_index/packages',
             ['resource/' + package_name]),
     ('share/' + package_name, ['package.xml']),
   ],
 install_requires=['setuptools'],
 zip_safe=True,
 maintainer='TODO',
 maintainer_email='TODO',
 description='TODO: Package description',
 license='TODO: License declaration',
 tests_require=['pytest'],
 entry_points={
     'console_scripts': [
             'my_node = my_py_pkg.my_node:main'
     ],
   },
)

일치하도록 maintainer, maintainer_email항목을편집합니다 .

파일을 저장하는 것을 잊지 마십시오.

Previous작업공간 만들기Next간단한 게시자와 구독자 노드 만들기

Last updated 1 year ago

Was this helpful?

먼저 .

에서 만든 ros2_ws작업 공간을 사용하겠습니다 .

그런 다음 license라인을 업데이트하십시오. 확인할 수 있습니다 . 이 패키지는 연습용이므로 모든 라이선스를 사용해도 안전합니다. 다음을 사용합니다. Apache License 2.0

ROS 2 설치 소스를 찾습니다
새 패키지에 대해 이전 자습서
오픈 소스 라이선스에 대한 자세한 내용은 여기에서