Package 만들어보기


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