(민형기님 ros2 무료강의 정리 노트)
Topic은 정리할게 많아서 두번 나눠서 정리했다.
turtlesim의 거북이 주행명령을 찾아보려면, 아래 명령어를 실행시킨다.
topic list -t # -t를 붙이면 data type까지 알 수 있다.
실행해보면, 아래와 같이 여러 Data type이 나오는데, 속도 관련은 geometry_msgs/msg/Twist다.

그렇다면, interface show를 통해 데이터의 구성을 살펴보자. Linear는 선형 이동이고, angular는 예상대로 축을 중심으로 어떻게(Yaw, Pitch, Raw) 돌 것이냐에 관한 것이다.
ros2 interface show geometry_msgs/msgd/Twist

이제 이동 관련한 Data와 Interface를 알았으니, 이 거북이를 움직여보자. pub이라는 명령어를 통해 거북이가 움직이도록 publish 할 수 있다.
ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2, y: 0, z: 0}, angular: {x: 0, y: 0, z: 1.8}}"
# X방향으로 2만큼, Z를 중심으로 1.8만큼 회전.
# --once : 1회 움직임
# --rate 1 : 1Hz 마다 움직임
이 때 중요한 것은 x: 2 와 같이 x와 클론(:)을 붙여쓰고, 값은 띄어쓰기를 해야한다는 점이다. (아 이래서 로봇공학 박사님들이 가독성 떨어지게 매번 클론(:)을 붙여쓰는지 이해가 되었다. x : 2가 훨씬 가독성 좋은데 굳이 x: 2로 쓰시는 이유를...)
명령어 pub을 통한 publish는 여러 개도 가능하다. 터미네이터를 나눠서 다른 움직임을 부여해보자!
그리고 rqt_graph 명령어를 통해 2개의 terminal이 cmd_vel 명령어를 전달하고 있음도 알 수 있다.
rqt_graph

오늘 새벽도 알차다.