왕다방

인공지능 & 로봇 사용자들의 자유게시판입니다. 인공지능, 가정용로봇, 서비스로봇, 인공지능스피커 등 자유롭게 올려주세요. 질문과답변도 이곳에 올려주세요.

제목ROS2: 패키지(package) 만들기2021-12-10 02:53
작성자user icon Level 4

88x31.png


패키지package)는 하나 이상의 노드(node)가 기능적 단위로 묶인 ROS 코드의 컨테이너입니다.

코드를 설치하거나 공유하기 위해서는 패키지를 구성해야합니다.



1. 빌드 시스템(build system)과 빌드 툴(build tool)


ROS2는 ament를 빌드 시스템으로 사용하고 colcon을 빌드 툴로 사용합니다. 

빌드 시스템은 단일 패키지를 빌드하는데 사용됩니다. ament는 다시 2가지로 나눠지는데 C++에서는 CMake 기반의 ament_cmake, 파이썬에서는 ament_python을 사용합니다.

빌드시스템과 빌드툴의 차이는 단일 패키지를 빌드하는가 전체 패키지를 빌드하는가에 있습니다.



2. 패키지 구성


패키지 구성을 확인하기위해 오버레이 작업공간에 패키지를 만들어보겠습니다.


지난번 글에 작성한 오버레이 작업공간의 src 폴더로 이동합니다.

  $ cd ~/dev_ws/src


패키지를 생성하려면 다음 명령어를 입력합니다.

  $ ros2 pkg create [패키지 이름] --build-type [빌드 타입]


빌드 타입은 C++ 패키지의 경우 ament_cmake, 파이썬 패키지의 경우 ament_python을 입력합니다.

  $ ros2 pkg create cmake_pkg --build-type ament_cmake

  $ ros2 pkg create python_pkg --build-type ament_python


생성된 파일은 다음과 같습니다.

 dev_ws

  └ src

       └ cmake_pkg

           └ include

               └ cmake_pkg

           └ src

           └ CMakeLists.txt 

           └ package.xml 

       └ python_pkg

           └ python_pkg

               └ __init__.py

           └ resource

               └ python_pkg

           └ test

               └ test_copyright.py

               └ test_flake8.py

               └ test_pep257.py

           └ package.xml 

           └ setup.cfg 

           └ setup.py 



1) package.xml


ROS 패키지의 필수 구성요소로 패키지 정보를 기술합니다.

mb-file.php?path=2021%2F12%2F10%2FF4367_1.png
mb-file.php?path=2021%2F12%2F10%2FF4368_2.png
 

<package></package> : 패키지 설정부분입니다. ROS2에서는 format 버전이 3입니다.

<name></name> : 패키지 이름을 입력합니다.

<version></version> : 패키지 버전을 입력합니다.

<description></description> : 패키지를 설명합니다.

<maintainer></maintainer> : 패키지 관리자 이름과 이메일 주소를 입력합니다.

<license></license> : 라이센스를 입력합니다.

<buildtool-depend></buildtool-depend> : 빌드 툴 의존성을 입력합니다.

<test-depend></test-depend> : 패키지를 테스트할 때 필요한 의존성 패키지를 입력합니다.



2) CMakeLists.txt


CMake 빌드 설정 파일입니다. C++ 패키지나 RQt 플러그인의 경우 ament 빌드 시스템에서는 CMake를 사용합니다. Make가 유닉스 계열만 지원하는 것과 달리 CMake는 리눅스, OS X뿐만 아니라 윈도우 계열도 지원합니다.

mb-file.php?path=2021%2F12%2F10%2FF4369_3.png
 


3) setup.py


파이썬 패키지 빌드 설정 파일입니다.

mb-file.php?path=2021%2F12%2F10%2FF4370_4.png
 


4) setup.cfg


파이썬 패키지 환경설정 파일입니다.

mb-file.php?path=2021%2F12%2F10%2FF4371_5.png
 


3. 패키지 빌드


패키지를 빌드하기 위해서는 저번 글에서 설치한 colcon을 사용합니다.


우선 파이썬 패키지에서 노드를 하나 생성하겠습니다. 노드를 생성하려면 패키지 생성 명령어에서 옵션으로 --node name을 주면 됩니다. 패키지 이름은 my_package, 노드 이름은 my_node로 생성하겠습니다.

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


생성한 노드를 확인해보겠습니다. 

노드의 위치는 ~/dev_ws/src/my_package/my_package/my_node.py 입니다.

mb-file.php?path=2021%2F12%2F10%2FF4373_7.png

'Hi from my_package.' 라는 메시지가 프린트 되는 노드입니다.


작업공간 루트(dev_ws)로 이동합니다.

  $ cd ..


colcon으로 패키지를 빌드합시다. 패키지를 빌드할때는 --packages-select 옵션을 주면 됩니다.

  $ colcon build --packages-select my_package


오버레이 작업공간 환경설정을 합니다.

  $ . install/setup.bash


my_node를 실행해봅시다.

  $ ros2 run my_package my_node

mb-file.php?path=2021%2F12%2F10%2FF4372_6.png 


터미널에 'Hi from my_package.' 가 프린트 되었습니다!

#ROS2# 노드# 패키지
댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)