패키지 만들기

저작권: 쿼드(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

Python

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

3. 작업공간의 패키지

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

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

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

실습

1. 패키지 생성

먼저 ROS 2 설치 소스를 찾습니다 .

새 패키지에 대해 이전 자습서 에서 만든 ros2_ws작업 공간을 사용하겠습니다 .

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

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

src이제 작업 공간 디렉토리 내에 이라는 새 폴더가 생겼습니다 my_package.

명령을 실행하면 터미널에서 다음 메시지를 반환합니다.

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

2. 패키지 빌드

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

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

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

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

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

3. install 파일 소싱

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

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

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

4. 패키지 사용

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

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

5. 패키지 내용 확인

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

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

6. package.xml 사용자 지정

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

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

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

그런 다음 license라인을 업데이트하십시오. 오픈 소스 라이선스에 대한 자세한 내용은 여기에서 확인할 수 있습니다 . 이 패키지는 연습용이므로 모든 라이선스를 사용해도 안전합니다. 다음을 사용합니다. Apache License 2.0

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

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

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

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

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

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

Last updated

Was this helpful?