ROS 환경에서 2개 이상의 node는 topic을 통해 통신을 하게 된다. 이때 Topic을 발행하는 쪽이publisher, 이를 수령하는 쪽이 Subscriber의 역할을 한다. 간단하게 tutorial로 준 talker, listener node의 동작을 본다.

좌측 상단이 talker,  우측 상단이 listener

좌측 상단이 talker, 우측 상단이 listener

위 화면을 보면 talker node에서 listener node로 /chatter라는 이름의 topic을 전달하는 것을 확인할 수 있다. 현재 시행되는 node, topic은 아래 명령들로 확인이 가능하다.

rosnode list # node
rostopic list # topic
rostopic info *topic_name* #t opic and node info
rqt_graph # graphical analysis

rostopic echo *topic_name* # display topic contents on terminal

같은 방식으로 turtlesim에서 시도해본다.

Screenshot from 2022-08-04 16-58-29.png

위에서 볼 수 있듯이 node는 turtlesimdraw_square 두 개가 켜져있다.

turtlesim node는 graphical interface를 표출해주는 node이며 draw_square는 turtlesim node를 실제적으로 움직이는 node이다. 서로 주고받는 topic은 아래와 같다.

turtlesim에서 draw_square에 보내는 topic /turtle1/pose는 turtlesim/Pose

Screenshot from 2022-08-04 17-05-14.png

draw_square에서 turtlesim에 보내는 topic /turtle1/cmd_vel는 geometry_msgs/Twist

Screenshot from 2022-08-04 17-06-56.png

draw_square는 turtlesim의 현재 위치와 orientation에 대한 정보를 받아와서 turtlesim에 다음 방향의 각도와 속도 정보를 발행한다.


Custom Publisher & Subscriber