파일 시스템과 빌드 시스템, 빌드 툴은 필수 지식.
파일이름 | 내용 | ||
---|---|---|---|
package.xml | 패키지 설정파일 | setup.py | 파이썬 패키지 설정 파일 |
CMakeLists.txt | 빌드 설정 파일 | setup.cfg | 파이썬 패키지 환경 설정 파일 |
plugin.xml | RQt 플러그인 설정 파일 | ||
CHANGELOG.rst | 패키지 변경 로그 파일 | ||
LICENSE | 라이선스 파일 | ||
README.md | 패키지 설명 파일 |
기술 방법
https://www.youtube.com/watch?v=_1MpViU1Kjo&list=PL12w7vYWefUwSg5frw_tIHVp9XRwS8Ipt&index=13
패키지 설정파일은 ROS 패키지의 필수 구성 요소로써 패키지의 정보를 기술하는 파일.
기술 내용은 패키지 이름, 저작자, 라이선스, 의존성 패키지 등이 있으며, XML 형식으로 기술 → ‘package.xml’
ROS2의 빌드 시스템인 ament에서 C++ 언어를 사용한 패키지나 RQt Plugin의 경우 CMake(Cross Platform Make)를 이용하고 있고, 이를 패키지 폴더의 ‘CMakeLists.txt’라는 파일에 빌드 환경을 기술하여 사용하고 있다.
CMake를 이용하는 이유는 ROS 패키지를 Multi Platform(e.g. Windows, Linux, BSD)에서 빌드할 수 있도록 하기 위함.
기본 형태
설명
cmake_minimum_required(VERSION 3.5)
운영체제에 설치된 cmake의 최소 요구 버전. 이보다 낮은 cmake를 사용할 경우 버전 업데이트가 필요.
project(my_first_ros_rclcpp_pkg)
패키지의 이름. (my_first_ros_rclcpp_pkg
는 임의의 패키지 폴더 이름임)
package.xml의 <name> 태그에 기술한 이름과 다르면 빌드 에러 발생.
Line 5 ~ 12
C언어와 C++ 언어를 사용할 때, 각 기준 버전을 기재함. 기본적으로 C는 99, C++은 14
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)
find_package
항목은 ament 빌드를 할 때 요구되는 구성 요소 패키지.
rclcpp를 사용하는 경우 ament_cmake와 rclcpp는 기본으로 포함 시켜야 하며, std_msgs와 같은 인터페이스 패키지나 의존성 패키지를 기술하게 된다.
여기에 입력된 패키지가 없을 경우, colcon build 시에 에러 발생
즉, 사용자가 만든 패키지가 의존하는 다른 패키지를 먼저 설치하게 만드는 옵션