ros2 topic list·echo·info

키를 누를 때 오가는 메시지를 내 눈으로 볼 수 있을까?

목록과 타입

-t를 붙이면 타입도 보입니다

거북이와 키보드 노드를 띄운 채로, ③ 터미널에서 ros2 topic list -t를 칩니다. 토픽 이름 옆 대괄호 안에 그 토픽에 흐르는 메시지의 타입(type)이 나옵니다. /turtle1/cmd_vel에는 geometry_msgs/msg/Twist가 흐릅니다.

긴 줄은 …로 줄였습니다. 타입 이름 읽는 법은 4강 1편에서 봅니다.

엿듣기

echo로 메시지를 찍어 봅니다

ros2 topic echo /turtle1/cmd_vel을 치면 처음에는 아무것도 나오지 않습니다. ② 키보드 창에서 화살표 키를 누를 때마다 메시지가 한 덩어리씩 찍힙니다. ↑ 키는 linear의 x에 2.0을 담아 보냅니다.

---는 메시지 하나가 끝났다는 표시입니다. 멈출 때는 Ctrl+C를 누릅니다.

쉬지 않는 토픽

위치는 쉬지 않고 흘러옵니다

/turtle1/pose는 /turtlesim이 거북이의 위치(x, y)와 방향(theta)을 내보내는 토픽입니다. 키를 누를 때만 오는 cmd_vel과 달리, 가만히 있어도 화면이 넘칠 만큼 계속 찍힙니다.

값은 거북이가 있는 자리에 따라 다릅니다. 얼마나 자주 오는지는 7편에서 잽니다.

요약 보기

info로 타입과 짝을 셉니다

ros2 topic info /turtle1/cmd_vel은 이 토픽의 타입과, 발행하는 쪽과 구독하는 쪽이 몇인지 알려 줍니다. 구독이 2인 것은 거북이와, 아직 켜 둔 echo가 함께 듣고 있기 때문입니다.

echo를 끄면 Subscription count는 1이 됩니다. 끝에 -v를 붙이면 노드 이름까지 자세히 나옵니다.

거꾸로 찾기

이름으로 타입을, 타입으로 이름을

타입만 알고 싶으면 ros2 topic type을 씁니다. 반대로 ros2 topic find에 타입을 주면 그 타입이 흐르는 토픽을 찾아 줍니다. 처음 보는 로봇에서 "속도 명령은 어느 토픽으로 보내지?"를 찾을 때 씁니다.

습관

보내기 전에 타입부터 봅니다

토픽에 무언가를 보내거나 받기 전에, 먼저 ros2 topic info로 타입을 확인하는 습관을 들입니다. 이름이 같아도 타입이 다른 퍼블리셔와 서브스크라이버는 이어지지 않습니다.

14강 5편에서 TurtleBot3의 /cmd_vel이 Twist가 아니라 TwistStamped인 것을 이 명령으로 확인합니다.

다음 편

엿듣기만 하지 말고 직접 보내 볼까요?

6편손으로 거북이 돌리기 3강 목록