ROS Message (메세지)의 이해
1. Message (메세지)의 개념
- 메세지는 Topic이 데이터나 정보를 주고 받을 때 사용하는 포맷이다.
- 토픽과 조금 혼동될 수도 있는데, 토픽은 데이터라고 보면 되고, 메세지는 정의된 자료형이라고 생각하면 쉬울 듯 하다.
2. 메세지 확인 예제
rostopic을 입력해보면, 아래와 같이 옵션들을 확인할 수 있다.
- 토픽의 타입을 알기 위해 type 옵션을 사용해볼 예정이다.
- /turtle1/cmd_vel 토픽이 어떤 메세지 타입을 주고 받는지 확인해보기 위해 rostopic type /turtle1/cmd_vel 을 입력해본다.
- /turtle1/cmd_vel 토픽은 geometry_msgs/Twist 라는 메세지를 이용한다. 즉, geometry_msgs라는 폴더안에 있는 Twist.msg 파일이라는 의미이다. ROS의 표준 메세지 중에 하나이다.
- 아래와 같이 rosmsg 를 입력하면 옵션을 확인할 수 있다.
- rosmsg show geometry_msgs/Twist 를 입력해본다.
- geometry_msgs/Twist는 Vector로 이루어졌고, linear와 angular 의 x, y, z 좌표를 나타낸다.
3. 토픽과 메세지
- 이전 "토픽"에 대한 포스팅의 자료와 더불어, 토픽과 메세지에 대한 예제를 해본다.
- 토픽 예제에서는 rostopic echo 를 이용하여 방향키를 조정하면 /turtle1/cmd_vel 토픽이 /turtlesim 노드로 전달되는 것을 확인하였다. (참조: https://neosla.tistory.com/)
- 이번에는 명령을 주는 것을 해보겠다.
rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[1.0, 0.0, 3.0]' '[0.0, 2.0, 2.1]'
- rostopic pub은 publish를 하겠다는 의미이고, rostopic list 를 입력해서 확인할 수 있다.
- rostopoic pub -1 은 한 번 실행 후 종료를 한다는 의미이고, /turtle1/cmd_vel 은 토픽 이름이며, geometry_msgs/Twist는 메세지 형태이다.
- /turtle1/cmd_vel 토픽의 메세지가 ['linear', 'angular'] 형태로 되어 있기 때문에 '[x, y, z]' '[x, y, z'] 형태로 값을 입력해준다. 만약, '[x, y, z]'로 입력하면 아래와 같이 arguments가 충분치 않다는 에러가 나타난다.
- 적절한 값을 입력해 주면, publish가 되고, Turtlesim이 움직이는 것을 확인할 수 있다. 필자의 거북이는 원을 그리며 돌았다.
- 아래와 같이, 그래프를 확인하면 /rostopic_9252_1554442016596 이라는 노드가 생성되어 /turtle1/cmd_vel 의 토픽을 publish 하는 것을 확인할 수 있다.
- 그래프를 확인했을 때, 노드가 생성되지 않은 것은, pub 에서 -1을 옵션을 주었기 때문이다. rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -- '[1.0, 0.0, 3.0]' '[0.0, 2.0, 2.1]' 입력해주면 된다.
'ROS (Robot Operating System)' 카테고리의 다른 글
[ROS: Robot Operating System] 3-2. ROS+아두이노IDE+OpenCM9.04 (0) | 2019.04.22 |
---|---|
[ROS: Robot Operating System] 3-1. ROS 파일시스템 (0) | 2019.04.08 |
[ROS: Robot Operating System] 2-1. ROS Node (노드)의 이해 (0) | 2019.04.05 |
[ROS: Robot Operating System] 1-3. ROS 용어 정리 (0) | 2019.04.04 |
[ROS: Robot Operating System] 1-2. ROS 설치 (0) | 2019.04.04 |