본문 바로가기

ROS (Robot Operating System)

[ROS: Robot Operating System] 2-3. ROS Message (메세지)의 이해

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]' 입력해주면 된다.