이번에는 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]
이러한 메시지들을 생성하는 방법은 다음과 같다.
$ 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
)
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
메시지를 사용하는 모든 패키지의 목록을 표시한다.