[ROS2-python 기초]custom message 만들고 빌드하기

정예슬·2023년 6월 15일
1

ROS

목록 보기
4/6

ROS2에서 custom message를 만들어서 발행해 보자.


create new package

워크스페이스에 src 폴더를 생성하고, src 내부에서 새로운 패키지를 생성한다. (다음 명령어 실행)

$ ros2 pkg create --build-type ament_cmake my_msgs

패키지를 생성하면, CMakeLists.txt, package.xml 파일이 생성되었을 것이다.

새로운 메시지를 만들기 위해서는, msg 폴더를 생성하고 그 내부에서 커스텀 메시지 내용을 정의한다.

$ mkdir msg

예를 들어, bounding box message를 발행하고자 한다면 다음과 같이 쓸 수 있다.

한번에 여러 개의 메시지들을 정의하고 빌드 후 사용할 수 있다. (메시지 명에 '_'와 같은 특수문자의 사용은 금한다. 메시지명은 카멜 케이스로 정의하자.)

메시지를 정의했으면, CMakeLists.txt와 packages.xml 파일을 수정해 주어야 한다.

CMakeLists.txt에 다음 내용을 추가한다.

find_package(rosidl_default_generators REQUIRED)

rosidl_generate_interfaces(${PROJECT_NAME}
  "msg/BoundingBoxes.msg"
 )

package.xml에 다음 내용을 추가한다.

<build_depend>rosidl_default_generators</build_depend>
<exec_depend>rosidl_default_runtime</exec_depend>
<member_of_group>rosidl_interface_packages</member_of_group>

워크스페이스 내부에서 다음 명령어를 실행하여 패키지를 빌드한다.

$ colcon build --packages-select my_msgs

워크스페이스 내 전체 메시지를 빌드하려면, colcon build를 실행하면 된다.

colcon build가 설치되지 않은 경우, 다음의 명령어로 설치하면 된다.

$ pip install -U colcon-common-extensions

빌드 후에는 워크스페이스에 대하여 source를 실행시켜주면 빌드한 메시지들을 사용할 수 있다.

$ source my_ws/install/setup.bash

빌드가 잘 적용 되었는지는 interface로 확인해 볼 수 있다.

$ ros2 interface list 
$ ros2 interface list|grep ~

topic에 대한 상세한 정보는 다음과 같이 확인한다.

$ ros2 interface show my_topic

profile
춘식이랑 함께하는 개발일지

0개의 댓글