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외의 다른 디렉토리는 비어있다.
- 흔히 src라는 하위 디렉토리가 존재한다.
- colcon은 out of sorce builds를 한다.
- 기본적으로는 src디렉토리와 동등한 위치에 다음과 같은 디렉토리를 생성한다.
- build 디렉토리
- intermediate file들이 저장되는 곳이다. 각 패키지에 대해서 CMake가 호출되는 등의 작업이 이루어지는 하위 폴더가 생성된다.
- install 디렉토리
- 각 패키지들이 설치되는 곳이다. 기본적으로는 각 패키지는 별도의 하위 디렉토리에 나누어서 설치된다
- log 디렉토리
- colcon호출에 대한 각각의 로그 정보들을 담고 있다.
- build 디렉토리
- 기본적으로는 src디렉토리와 동등한 위치에 다음과 같은 디렉토리를 생성한다.
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


source an underlay
- 기존의 ROS 2 설치의 환경을 설정하고, workspace가 예제 패키지를 위해서 필요한 빌드 종속성을 제공하는 것이 중요하다.
- 이러한 작업은 바이너리 설치 or 소스 설치에서 제공하는 설정 스크립트를 sourcing하면서 이루어진다.
- 즉, 다른 colcon 작업 공간을 사용하는 방법이다. 이를 우리는 underlay환경이라고 한다.
- 이러한 작업은 바이너리 설치 or 소스 설치에서 제공하는 설정 스크립트를 sourcing하면서 이루어진다.
- 우리가 위에서 설정한 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


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로 빠르게 이동한다.
- 이를 통해 패키지 디렉토리로 손쉽게 이동하여 작업을 진행할 수 있습니다.
- 예를 들어, 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에서 이 설정을 제거하려면:
- 시스템의 셸 시작 스크립트를 찾는다. 일반적으로는 ~/.bashrc, ~/.zshrc와 같은 파일이다.
- 해당 파일을 열고 source 및 export 명령어가 추가된 부분을 찾아 삭제함.
- 파일을 저장하고 닫은 후, 셸을 다시 시작하거나 source ~/.bashrc 또는 source ~/.zshrc 명령을 실행하여 변경 사항을 적용시켜준다.
- 이 과정을 통해 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'ROS 2' 카테고리의 다른 글
| ROS 2 Tutorials : Creating a package (0) | 2025.01.13 |
|---|---|
| ROS 2 Tutorials : Creating a workspace (0) | 2025.01.13 |
| ROS 2 Tutorials : Recording and playing back data (0) | 2025.01.12 |
| ROS 2 Tutorials : Launching nodes (0) | 2025.01.12 |
| ROS 2 Tutorials : Using rqt_console to view logs (1) | 2025.01.11 |