ROS는 패키지 단위로 개발되며, 각 패키지들은 실행 가능한 최소 하나의 노드를 가진다.
패키지 생성
$ cd ~/catkin_ws/src
# 모든 패키지는 workspace/src에 위치해야함
$ catkin create pkg test --catkin-deps roscpp
# test 패키지는 roscpp 패키지에 의존함(사용함)
패키지를 만들면 CMakeLists.txt와 package.xml 파일과 include, src 디렉토리가 자동으로 생성된다.
현재 파일 구조
test/
├── CMakeLists.txt
├── include
│ └── test
├── package.xml
└── src
만들어진 CMakeLists.txt 내용
cmake_minimum_required(VERSION 4.0.2)
project(test) #패키지 이름
find_package(catkin REQUIRED COMPONENTS
roscpp #패키지 생성할 때 정해준 의존 패키지
)
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES test
# CATKIN_DEPENDS roscpp
# DEPENDS system_lib
)
include_directories(
# include
${catkin_INCLUDE_DIRS}
)
패키지는 하나 이상의 노드를 모아놓은 집합이다. 위에서 생성한 패키지를 구성할 노드를 만들어보자.
Publisher 노드 publisher 노드는 연속적으로 메시지를 송출한다. 내 이름을 메시지로 보내는 publisher 노드를 만들어보자.
~/catkin_ws/src/test$ ls
CMakeLists.txt include package.xml src
~/catkin_ws/src/test$ cd src
# 모든 노드들은 패키지/src에 만들어진다.
~/catkin_ws/src/test/src$ vim test_publisher.cpp