패키지 빌드

평범한컴공생·2022년 8월 5일
0

[ROS2]

목록 보기
12/19
post-thumbnail

배경

colcon은 ROS 2의 빌드 도구이다.

다음 명령어로 colcon을 설치하자.

sudo apt install python3-colcon-common-extensions

기본

ROS의 워크스페이스는 특정 구조를 가진 하나의 디렉터리이다.

대부분 src라는 하나의 서브 디렉터리가 있고, 그 안에 ROS의 패키지의 소스 코드가 위치한다.

colconout-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

패키지 생성

colconREP 149에 정의된 package.xml양식을 사용한다.

colcon은 다양한 빌드 형식을 지원한다. 권장되는 빌드 형식은 ament_cmake, ament_python이다. 또한 순수한 cmake패키지도 지원한다.

ros2 pkg create 명령어를 사용하여 새 패키지를 만들 수 있다.

catkincatkin_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의 설치 위치와 작업 공간의 위치에 따라 달라질 수 있다. 위 작업을 취소하려면 해당 스크립트에서 추가된 sourceexport를 제거하면 된다.

colcon Tab 완성

colcon-argcomplete패키지를 설치하면 bash처럼 코드를 완성시켜준다.

echo "source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ~/.bashrc

해당 명령은 colcon의 설치 위치와 작업 공간의 위치에 따라 달라질 수 있다. 위 작업을 취소하려면 해당 스크립트에서 추가된 sourceexport를 제거하면 된다.

profile
학부 연구생(220627~)

0개의 댓글