[ROS2] 패키지, 빌드

송민영·2021년 12월 18일
0
  • 설치된 패키지 확인
$ ros2 pkg list
  • 특정 패키지 내에 포함된 노드 확인
$ ros2 pkg executables <패키지명>
  • 패키지의 노드 실행
    각 노드별로 다른 터미널 창을 켜서 입력해야 한다.
$ ros2 run <패키지명> <노드명> 
  • 현재 실행중인 노드/토픽/서비스 리스트 확인
$ ros2 node list
$ ros2 topic list
$ ros2 service list
  • 노드, 토픽의 그래픽 뷰
$ rqt_graph
  • 노드 정보
    지정된 노드의 Publishers, Subscriber, Service, Aaction, Parameter 정보를 확인할 수 있다
$ ros2 node info /<노드명>

CLI 명령어

ros2 [verbs][sub-verbs] [options][arguments]

  • launch
    • 특정 패키지의 특정 런치파일 실행
      • 런치 파일 : 실행해야하는 노드, 파라미터 등을 정의함. ROS1에서는 XML문서로 구성되어 있음.
  • run
    • 특정 패키지의 특정 노드 실행
  • action
  • bag
  • component
  • daemon
  • doctor
  • extension_points
  • extensions
  • interface
  • lifecycle
  • multicast
  • node
  • param
  • pkg
  • security
  • service
  • topic
  • wtf

정보 명령어

기능 보조 명령어

파일시스템

설치 방법

바이너리 설치

ex. $ sudo apt install ros-foxy-teleop-twist-joy

패키지 명으로만으로 설치 가능.
설치된 파일은 /opt/ros/foxy 에 저장되어 ros2 run 이나 ros2 launch로 해당 패키지내의 실행 가능한 노드를 실행시킬 수 있다.

소스코드 설치

ex.

$ git clone https://github.com/ros2/teleop_twist_joy.git
$ cd ~/robot_ws/
$ colcon build --symlink-install --packages-select teleop_twist_joy 

패키지를 수정하여 사용하고자 할 경우나 소스 코드 내용을 확인할 필요가 있을 때

설치 폴더

기본 설치 폴더

'/opt/ros/[버전이름]' 폴더에 설치
ROS를 설치할 때 선택했던 패키지와 ROS 구동 프로그램이 포함됨

▪ /bin : 실행 가능한 바이너리 파일
▪ /cmake : 빌드 설정 파일
▪ /include : 헤더 파일
▪ /lib : 라이브러리 파일
▪ /opt : 기타 의존 패키지
▪ /share : 패키지의 빌드, 환경 설정 파일
▪ local_setup. : 환경 설정 파일
▪ setup.
: 환경 설정 파일

사용자 작업 폴더

사용자가 원하는 곳에 생성할 수 있음.
사용자가 작성한 패키지와 공개된 다른 개발자의 패키지를 저장하고 빌드하는 공간

▪ /build : 빌드 설정 파일용 폴더
▪ /install msg, srv : 헤더 파일과 사용자 패키지 라이브러리, 실행 파일용 폴더
▪ /log : 빌드 로깅 파일용 폴더
▪ /src : 사용자 패키지용 폴더

  • /src 내부
    ▪ /src C/C++ 코드용 폴더
    ▪ /include C/C++ 헤더 파일용 폴더 (폴더 안에는 각 패키지 이름별 폴더로 패키지별 헤더를 구분함)
    ▪ /param 파라미터 파일용 폴더
    ▪ /launch roslaunch에 사용되는 launch 파일용 폴더
    ▪ /패키지이름폴더 Python 코드용 폴더
    ▪ /test 테스트 코드 및 테스트 데이터용 폴더
    ▪ /msg 메시지 파일용 폴더
    ▪ /srv 서비스 파일용 폴더
    ▪ /action 액션 파일용 폴더
    ▪ /doc 문서용 폴더
    ▪ package.xml: 패키지 설정 파일 (REP-0140, REP-0149 참고)
    ▪ CMakeLists.txt: C/C++ 빌드 설정 파일
    ▪ setup.py: 파이썬 코드 환결 설정 파일
    ▪ README: 사용자 문서, github 리포지토리의 메인에 표시된다.
    ▪ CONTRIBUTING: 해당 패키지 개발에 공헌하는 방법을 기술하는 파일
    ▪ LICENSE: 이 패키지의 라이선스를 기술하는 파일
    ▪ CHANGELOG.rst: 이 패키지의 버전별 변경 사항 모음 파일 (REP-0132 참고)

빌드

빌드 시스템

: 단일 패키지 대상 (낮은 레벨, 의존성 낮음)

  • ROS 1 (ROS Fuerte 까지): rosbuild (CMake)
  • ROS 1 (ROS Groovy 이후): catkin (CMake)
  • ROS 2: ament (CMake), Python setuptools (Full support)
    • ament_cmake : ROS1의 catkin 업그레이드 버전. CMake의 빌드 설정 파일인 CMakeList.txt 기반으로 빌드
    • CMake를 사용하지 않는 Python 패키지 관리도 가능

빌드 툴

: 전체 패키지 대상 (상위 레벨, 의존성 높음)

rosbuild, catkin_make, catkin_make_isolated, catkin_tools, ament_tools 그리고 현재 ROS 2 버전에서 널리 사용되고 있는 colcon이 있음

  • ament_tools
    : ROS 2의 ament_cmake 및 ament_python, 순수 CMake 패키지를 모두 지원하는 툴로 catkin_make, catkin_make_isolated, catkin_tools 모두의 기능을 사용할 수 있으며 ROS 2 Bouncy 버전 이전까지 사용되었다.

  • colcon
    : ROS 1과 ROS 2 모두를 지원하기 위하여 통합된 빌드 툴로서 소개되었으며 ROS 2 Bouncy 이후 ROS 2의 기본 빌드 툴로 사용 중에 있다.

빌드 방법

  • 소스 코드가 있는 workspace로 이동하고 colcon build 명령어로 전체를 빌드.
  • 특정 패키지만 선택하여 빌드하고자 할 때에는 --packages-select 옵션을 이용하고 symlink를 이용하려면 --symlink-install 옵션을 붙여줌.

$ cd ~/robot_ws && colcon build --symlink-install
$ cd ~/robot_ws && colcon build --symlink-install --packages-select [패키지 이름]

  • Multiple workspace : ROS2에서는 복수의 독립된 워크스페이스를 사용할 수 있음
  • No non-isolated build : 모든 패키지 별도로 빌드
  • No devel space : 패키지를 빌드 한 후 설치해야 패키지를 사용할 수 있다. colcon build --symlink-install 와 같은 옵션을 사용하면 패키지 설치 없이도 패키지 사용할 수 있음.

빌드 시스템에 필요한 부가 기능

vcstool (버전 컨트롤 시스템 툴)

여러 리포지토리 작업을 보다 쉽게 관리할 수 있도록 설계됨.

ex)

$ wget https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos
$ vcs import src < ros2.repos

rosdep (의존성 관리 툴)

package.xml에 기술된 의존성 정보를 가지고 의존성 패키지들을 설치해 주는 역할.

ex)

$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro foxy -y --skip-keys "console_bridge fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers"

bloom (바이너리 패키지 관리 툴)

패키지 개발자가 개발한 패키지를 유지보수 및 관리하기 위한 툴이다.

패키지 파일 사용 방법

패키지 설정 파일

package.xml

패키지의 정보를 기술 (패키지 이름, 저작자, 라이선스, 의존성 패키지 등)
각 패키지당 무조건 1개의 패키지 설정 파일 (package.xml)을 포함

빌드 설정 파일

CMakeLists.txt

파이썬 패키지 설정 파일

setup.py

파이썬 패키지 환경 설정 파일

setup.cfg

rqt 플러그인 설정 파일

plugin.xml

패키지 변경로그 파일

CHANGELOG.rst

라이선스 파일

LICENSE

패키지 설명 파일

README.md

0개의 댓글