colcon
은 ROS 2의 빌드 도구이다.
다음 명령어로 colcon
을 설치하자.
sudo apt install python3-colcon-common-extensions
ROS의 워크스페이스는 특정 구조를 가진 하나의 디렉터리이다.
대부분 src
라는 하나의 서브 디렉터리가 있고, 그 안에 ROS의 패키지의 소스 코드가 위치한다.
colcon
은 out-of-source build
방식이다. 기본적으로 src
디렉터리를 피어로 다음 디렉터리를 생성한다.
build
디렉터리는 중간 파일이 위치하는 디렉터리이다. 각 패키지에 대해 CMAKE가 호출되는 하위 폴더가 생성된다.install
디렉터리는 각 패키지가 설치되는 위치이다. 기본적으로 각 패키지는 별도의 하위 디렉터리에 설치된다.log
디렉터리는 로그 정보가 저장되는 디렉터리이다.
catkin
과 달리devel
디렉터리는 존재하지 않는다.
ros2_example_ws
디렉터리를 새로 생성하자.
mkdir -p ~/ros2_example_ws/src
cd ~/ros2_example_ws
빈 디렉터리 src
까지 생성되었다.
/home/jyp/ros2_example_ws/
└── src
1 directory
예제 디렉터리를 깃허브에서 받아오자.
git clone https://github.com/ros2/examples src/examples -b foxy
./
└── src
└── examples
├── CONTRIBUTING.md
├── LICENSE
├── rclcpp
├── rclpy
└── README.md
4 directories, 3 files
기존의 ROS2를 소싱하여 예제에 필요한 빌드 종속성을 워크스페이스에 제공해야 한다.
이는 설정 스크립트를 소싱하여 해결할 수 있다. 이러한 환경을 언더레이라 한다.
ros2_examples_ws
디렉터리는 오버레이다. 소수의 패키지만을 사용할 때 오버레이를 사용한다.
워크스페이스의 루트 위치에서 colcon build
를 수행하자.
ament_cmake
같은 빌드 형식은 devel
디렉터리가 존재하지 않고, 패키지를 설치해야 하므로 colcon
은 옵션 --symline-install
을 지원한다. 해당 옵션은 source
디렉터리 내의 파일을 변경하여 설치 파일도 변경할 수 있도록 해준다.
colcon build --symline-install
tree -d -L 1 ./
./
├── build
├── install
├── log
└── src
4 directories
colcon test
colcon
의 빌드가 성공적으로 수행되면, 출력은 install
디렉터리에 저장된다.
설치된 실행 파일이나 라이브러리를 사용하려면, 먼저 경로를 추가해야 한다.
colcon
은 환경 설정을 돕는 bash
파일이나 bat
파일을 install
디렉터리 안에 생성한다.
해당 파일은 필요한 모든 경로를 자동으로 추가해주고, 패키지가 내보낸 모든 배시나 셸 명령도 제공한다.
. install/setup.bash
환경 설정이 끝났다면, 이제는 실행할 수 있다.
2개의 터미널을 열어 서브스크라이버용 노드와 퍼블리셔용 노드를 실행하자.
ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function
ros2 run examples_rclcpp_minimal_publisher publisher_member_function
colcon
은 REP 149
에 정의된 package.xml
양식을 사용한다.
colcon
은 다양한 빌드 형식을 지원한다. 권장되는 빌드 형식은 ament_cmake
, ament_python
이다. 또한 순수한 cmake
패키지도 지원한다.
ros2 pkg create
명령어를 사용하여 새 패키지를 만들 수 있다.
catkin
의catkin_create_package
와 동일하다.
colcon_cd
colcon_cd
명령어는 현재 디렉터리를 패키지 디렉터리로 변경하게 해준다.
echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
echo "export _colcon_cd_root=/opt/ros/foxy/" >> ~/.bashrc
해당 명령은 colcon_cd
의 설치 위치와 작업 공간의 위치에 따라 달라질 수 있다. 위 작업을 취소하려면 해당 스크립트에서 추가된 source
와 export
를 제거하면 된다.
colcon
Tab 완성colcon-argcomplete
패키지를 설치하면 bash
처럼 코드를 완성시켜준다.
echo "source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ~/.bashrc
해당 명령은 colcon
의 설치 위치와 작업 공간의 위치에 따라 달라질 수 있다. 위 작업을 취소하려면 해당 스크립트에서 추가된 source
와 export
를 제거하면 된다.