ROS 2

ROS 2 Tutorials : Using colcon to build packages

정지홍 2025. 1. 13. 15:11

Using colcon to build packages — ROS 2 Documentation: Jazzy documentation

 

Using colcon to build packages — ROS 2 Documentation: Jazzy documentation

Remember to use a x64 Native Tools Command Prompt for VS 2019 for executing the following command, as we are going to build a workspace. colcon test --merge-install You also need to specify --merge-install here since we used it for building above.

docs.ros.org

 

 

background

  • colcon은 ROS 빌드 도구인 catkin_make , catkin_make_isolated , catkin_tools , ament_tools의 발전된 버전이다.

 

 

basics

  • ROS의 workspace는 특정한 구조를 가진 directory이다.
    • 흔히 src라는 하위 디렉토리가 존재한다.
      • src라는 디렉토리에는 ROS package의 소스코드가 위치한다.
    • 전형적으로, src외의 다른 디렉토리는 비어있다.
  • colcon은 out of sorce builds를 한다.
    • 기본적으로는 src디렉토리와 동등한 위치에 다음과 같은 디렉토리를 생성한다.
      • build 디렉토리
        • intermediate file들이 저장되는 곳이다. 각 패키지에 대해서 CMake가 호출되는 등의 작업이 이루어지는 하위 폴더가 생성된다.
      • install 디렉토리
        • 각 패키지들이 설치되는 곳이다. 기본적으로는 각 패키지는 별도의 하위 디렉토리에 나누어서 설치된다
      • log 디렉토리
        • colcon호출에 대한 각각의 로그 정보들을 담고 있다.

 

create a workspace

  • 1. 우선 다음의 명령어로 workspace를 만들자.
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws

  • 2. add some sources를 하자... 아래 명령어 입력
git clone https://github.com/ros2/examples src/examples -b jazzy

위와 같이 입력하자.
cd해서 ll해보면 다음과 같이 출력된다.

 

 

source an underlay

  • 기존의 ROS 2 설치의 환경을 설정하고, workspace가 예제 패키지를 위해서 필요한 빌드 종속성을 제공하는 것이 중요하다.
    • 이러한 작업은 바이너리 설치 or 소스 설치에서 제공하는 설정 스크립트를 sourcing하면서 이루어진다.
      • 즉, 다른 colcon 작업 공간을 사용하는 방법이다. 이를 우리는 underlay환경이라고 한다.
  • 우리가 위에서 설정한 ros2_ws는 기존 ros2설치 위에 오버레이로 구성된다. 일반적으로는 작은 수의 패키지에서 작업할 계획이라면 모든 package를 동일한 작업 공간에 넣는것보다는 오버레이를 사용하는 것이 권장된다.

 

Build the workspace

  • workspace의 최상위 디렉토리에서, colcon build라는 명령어를 입력하자
  • ament_cmake와 같은 빌드유형은 devel공간 개념을 지원하지 않으며, 패키지가 설치되어야 하기 때문에, colcon은 --symlink-install옵션을 지원한다.
    • 이 옵션으로 설치된 파일을 소스 공간에서 파일을 변경함으로써 수정하는 것이 가능하다. 이를 통해서 더 빠른 반복 작업이 가능
      • 즉, --symlink-install명령어를 사용하면, 소스코드의 변경사항을 바로 설치된 파일에 반영할 수 있어서, 매번 패키지를 다시 설치 않고도 수정 사항을 즉시 확인할 수 있다.
source /opt/ros/jazzy/setup.bash

export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/opt/ros/jazzy

sudo apt install ros-jazzy-ament-cmake

# 최상위 디렉토리에 가서...
colcon build --symlink-install

  • 그리고 아래 명령어 입력
colcon test

 

 

Source the environment

  • colcon이 성공적으로 빌드되면, output들은 install directory안에 있을것이다.

  • 설치한 실행파일이나 라이브러리를 사용하기 전에, 이것들에게 나의 path와 library path를 추가해줘야한다.
  • colcon은 install dir안에 bash파일을 발생시킬것이며, 이는 환경 set up에 도움을 줄것이다.
    • 이 파일은 모든 필요한 요소들을 나의 path, 라이브러리path에 추가해줄것이다.

 

Try a demo

  • source install/setup.bash 를 입력하고 아래 2개의 코드를 각각 다른 터미널에 입력하자.
    • 1번째는 subscriber이며, 두번째는 publisher다.
ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function

ros2 run examples_rclcpp_minimal_publisher publisher_member_function

subscriber
publisher

 

 

 

Create your own package

  • colcon은 REP 149에서 정의된 package.xml 사양을 사용하며 여러 빌드 유형을 지원한다.
  • 권장되는 빌드 유형은 ament_cmake와 ament_python이다. 또한 순수 cmake 패키지도 지원한다.
  • ament_python 빌드 예시: ament_index_python 패키지처럼, setup.py가 빌드의 주요 진입점이다.
  • ament_cmake 빌드 예시: demo_nodes_cpp와 같은 패키지는 ament_cmake 빌드 유형을 사용하며, 빌드 도구로 CMake를 사용한다.
  • 편리하게, ros2 pkg create 도구를 사용하여 템플릿을 기반으로 새로운 패키지를 생성할 수 있다.
    • 이 도구는 패키지의 기본 구조를 자동으로 생성해 주기 때문에 패키지를 쉽게 만들 수 있습니다.

 

Setup colcon_cd

  • colcon_cd 명령어는 셸의 현재 작업 디렉토리를 특정 패키지의 디렉토리로 빠르게 변경할 수 있도록 도와준다.
    • 예를 들어, colcon_cd  some_ros_package 명령을 실행하면, 현재 작업 디렉토리가~/ros2_ws/src/some_ros_package로 빠르게 이동한다.
      • 이를 통해 패키지 디렉토리로 손쉽게 이동하여 작업을 진행할 수 있습니다.
echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
echo "export _colcon_cd_root=/opt/ros/jazzy/" >> ~/.bashrc

 

  • colcon_cd 명령어를 설치한 방식이나 작업 공간의 위치에 따라 설정 방법이 달라질 수 있다.
  • 일반적으로 이 명령어를 사용하려면 시스템의 셸 시작 스크립트에 source와 export 명령어가 추가된다.

 

Linux 및 macOS에서 이 설정을 제거하려면:

  1. 시스템의 셸 시작 스크립트를 찾는다. 일반적으로는 ~/.bashrc, ~/.zshrc와 같은 파일이다.
  2. 해당 파일을 열고 source 및 export 명령어가 추가된 부분을 찾아 삭제함.
  3. 파일을 저장하고 닫은 후, 셸을 다시 시작하거나 source ~/.bashrc 또는 source ~/.zshrc 명령을 실행하여 변경 사항을 적용시켜준다.
  4. 이 과정을 통해 colcon_cd 명령어에 대한 설정을 원래 상태로 되돌릴 수 있다.

 

Setup colcon tab completion

  • colcon command는 bash와 bash같은 쉘에서 command완성을 지원한다.
    • 대신에 이를 위해서 colcon-argcomplete package가 설치되어야한다.

 

setup colcon mixins

  • 명령줄 옵션을 자주 입력해야 하거나 기억하기 어려운 경우, colcon mixins를 사용하여 이를 간소화할 수 있다.
  • 예를 들어, CMake 빌드 유형을 Debug로 변경하려면 일반적으로 다음 명령어를 사용한다.
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Debug
  • 하지만 colcon mixins는 이러한 명령어를 단축시켜 쉽게 사용할 수 있게 해준다.
  • 기본적인 colcon mixins를 설치하려면 아래 명령어를 실행하자.
colcon mixin add default https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
colcon mixin update default
 
  • mixin을 사용하여 디버그하려면 아래와 같이 입력하자.
colcon build --mixin debug