[ROS] ROS 메시지(message)와 관련된 명령어

HY K·2024년 8월 8일

ROS1

목록 보기
14/34

이번에는 ROS의 메시지(message)와 관련된 명령어를 공부해보도록 하자.
참고한 링크는 다음과 같다.
https://cafe.naver.com/openrt/2847
https://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv

💡 ROS 메시지란?
노드 간의 데이터를 주고 받을 때 사용하는 형식으로, 기본적인 자료형, 간단한 자료구조 및 배열과 같은 구조를 사용하고 있다. 메시지를 통해서 통신을 할 때에는 TCPROS 혹은 UDPROS와 같은 프로토콜을 사용한다.

좀 더 구체적으로 메시지의 타입들을 정의하면 다음과 같다.

  • int8, int16, int32, int64 (plus uint*)
  • float32, float64
  • string
  • time, duration
  • other msg files
  • variable-length array[] and fixed-length array[C]

이러한 메시지들을 생성하는 방법은 다음과 같다.

1. 커스텀 메시지를 사용하는 법

$ cd catkin_ws/src
$ cd my_first_ros_pkg
$ mkdir -p msg
$ echo "int 64 num" > msg/Num.msg

이러면 my_first_ros_pkg 내부의 msg 폴더에 Num.msg가 작성되게 된다. 커스텀 메시지를 작성한 것이다. 물론 당연히 더 복잡한 형식의 메시지도 가능하다.

이렇게 구성을 한 이후에는 package.xml 파일에 특별한 문장을 포함해야 한다.

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

그리고 CMakeLists.txt 파일 역시 마찬가지로 수정을 해줘야 한다.

fine_package(catkin REQUIRED COMPONENTS
	roscpp
    rospy
    std_msgs
    message_generation
)
...
catkin_package(
	...
    CATKIN_DEPENDS message_runtime ...
    ...
)
...
add_message_file(
	FILES
    Num.msg
)
...
generate_messages(
	DEPENDENCIES
    std_msgs
)

2. rosmsg 관련 명령어

1. rosmsg list

$ rosmsg list

모든 메시지를 목록으로 표현한다. 현재 ROS에 설치되어 있는 패키지들의 모든 메시지를 포함한다.

2. rosmsg show [message_name]

$ rosmsg show <message_name>

지정한 메시지의 정보를 표현한다.

3. rosmsg md5 [message_name]

$ rosmsg md5 <message_name>

메세지의 md5 정보를 확인한다.
간혹 메시지 통신 중 MD5 문제가 발견되면 확인할 필요가 있는데, 자주 사용하지는 않는다.

💡 MD5란?
Message-Digest algorithm 5의 약어로, 128비트 암호화 해시 함수이다. 주로 프로그램이나 파일이 원본 그대로인지 검사하는 무결성 검사에 사용된다.

4.rosmsg package [package_name]

$ rosmsg package <package_name>

특정 패키지에서 사용되는 메시지들을 확인할 수 있다.

5. rosmsg package

$ rosmsg package

메시지를 사용하는 모든 패키지의 목록을 표시한다.

profile
로봇, 드론, SLAM, 제어 공학 초보

0개의 댓글