
Noda A 처럼 하나 이상의 토픽을 발행할 수 있으며 'Publisher' 기능과 동시에 토픽을 구독하는 'Subscriber' 역할도 동시에 수행할 수 있음.
ROS 프로그래밍시에 70% 이상이 토픽으로 사용될 정도로 통신 방식 중에 가장 기본이 되며 가장 널리쓰이는 방법
$ ros2 run turtlesim turtlesim_node
$ ros2 node info /turtlesim

turtlesim 노드가 어떤 통신을 수행하는지 보여줌.

$ ros2 topic list -t
$ rqt_graph
turtlesim 노드가 어떤 토픽들을 사용하여 통신하는지 보여줌.
$ ros2 run turtlesim turtle_teleop_key


hide부분을 잘 조정하면 더 많은 정보를 볼 수 있다.
$ ros2 topic info /turtle1/cmd_vel

토픽에 대한 상세 정보를 보여주는 코드이다.
Type: geometry_msgs/msg/Twist : 토픽이 사용하는 메시지 타입이다. Twist 메시지는 로봇의 선속도와 각속도를 나타낸다.
Publisher count: 1 토픽에 데이터를 발행(publish)하는 노드가 1개 있다는 의미
Subscriber count: 1 토픽의 데이터를 구독(subscribe)하는 노드가 1개 있다는 의미
$ ros2 topic echo /turtle1/cmd_vel

해당 명령어를 실행 후 거북이를 조종해보면 속도, 각도를 print해준다.
$ ros2 topic bw /turtle1/cmd_vel

$ ros2 topic hz /turtle1/cmd_vel

주기(주파수)를 모니터링한다.
average rate: 토픽의 평균 메시지 발행 빈도 (Hz)
min: 가장 짧은 메시지 간 간격 (초)
max: 가장 긴 메시지 간 간격 (초)
std dev: 메시지 간 간격의 표준 편차 (초)
window: 평균을 계산하는 데 사용된 최근 메시지 수
$ ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

해당 명령어를 실행하면 부드러운 곡선을 그린다.
$ ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

해당 명령어를 실행하면 무한으로 원을 그린다.
$ ros2 bag record /turtle1/cmd_vel

1.이 명령어는 /turtle1/cmd_vel 토픽의 데이터를 기록
2.스페이스바를 눌러 기록을 정지하거나 재개할 수 있음
3."Subscribed to topic '/turtle1/cmd_vel'"지정된 토픽을 성공적으로 구독했음을 확인

보면 파일이 생겼음

$ ros2 bag info <your directory>
를 실행해주면 bag의 정보를 볼 수있음
$ ros2 bag play <your directory>
를 하면 녹화한 turtle을 볼 수 있음