ROS Package Tutorial
1. Catkin package란?
Catkin 패키지는 package.xml, CMakeLists.txt 와 같은 파일을 포함한다. 이때, package.xml은 패키지의 메타 정보를 제공하며, CMakeLists.txt는 CMake라는 빌드시스템의 입력파일이다.
# Catkin package의 예시 구조 first_package/ ├── CMakeLists.txt └── package.xml
Catkin package와 관련된 작업들은 주로 catkin workspace에서 이루어지며, 보통 catkin_ws라는 이름으로 작업공간을 생성한다.
# Catkin Workspace 예시 구조 catkin_ws/ # 작업공간 └── src/ # 소스 폴더 ├── CMakeLists.txt # 최상위 CMake 파일 ├── package_1/ ├── CMakeLists.txt # package_1의 CMake 파일 └── package.xml # package_1에 대한 package 파일 ... └── package_n/ ├── CMakeLists.txt # package_n에 대한 CMake 파일 └── package.xml # package_n에 대한 package 파일
2. Create Package
2.1 Catkin Workspace 생성
아래 명령어를 통해 catkin workspace 생성하고 build할 수 있다. 이때, catkin_make는 일종의 tool로 cmake + make 정도로 이해하면 될 것 같다. src폴더를 생성해주지 않으면 “~/catkin_ws/src” does not exist와 같은 error가 발생한다.
src 폴더만 있던 catkin_ws상에서 catkin_make를 실행하면 build와 devel 폴더가 생성되는 것을 확인할 수 있다.
$ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws $ catkin_make
# Catkin Workspace catkin_ws/ # 작업공간 ├── build/ ├── devel/ └── src/
2.2 Catkin Package 생성
catkin_create_pkg를 통해서 package가 생성된다. 이때 생성 할 package 이름은 space없이 언더바를 사용하여 작성한다.
$ cd ~/catkin_ws/src $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
위의 명령어를 실행하면 아래와 같은 구조가 만들어짐을 확인할 수 있다.
# Catkin Workspace 구조 catkin_ws/ # 작업공간 └── src/ # 소스 폴더 ├── CMakeLists.txt # 최상위 CMake 파일 ├── beginner_tutorials/ ├── include ├── src ├── CMakeLists.txt # first_pkg의 CMake 파일 └── package.xml # first_pkg에 대한 package 파일