Linear Algebra
🔥

009 ROS 2 토픽 (topic)

토픽이란?

토픽은 비동기식 단방향 메시지 송수신 방식으로 msg 메시지 형태를 발행하는 Publisher와 메시지를 구독하는 Subscriber 간의 통신으로 볼 수 있다. ROS 프로그래밍을 하게되면 70% 이상이상이 토픽으로 사용된다.
비동기성과 연속성을 가지기 때문에 센서 값 전송 및 항시 정보를 주고받아야하는 부분에 사용된다!

토픽 관련 명령어

토픽 목록 확인 (ros2 topic list)

현재 개발 환경에서 동작 중인 모든 노드들의 토픽 정보를 볼 수 있다.
$ ros2 run turtlesim turtlesim_node $ ros2 topic list -t /parameter_events [rcl_interfaces/msg/ParameterEvent] /rosout [rcl_interfaces/msg/Log] /turtle1/cmd_vel [geometry_msgs/msg/Twist] /turtle1/color_sensor [turtlesim/msg/Color] /turtle1/pose [turtlesim/msg/Pose]
Bash
복사

토픽 정보 확인 (ros2 topic info)

토픽 메시지의 형태, 토픽의 Publisher와 Subscriber 정보를 확인 할 수 있다.
$ ros2 topic info /turtle1/cmd_vel Type: geometry_msgs/msg/Twist Publisher count: 1 Subscriber count: 1
Bash
복사

토픽 내용 확인 (ros2 topic echo)

특정 토픽의 메시지 내용을 실시간으로 표시한다.
$ ros2 topic echo /turtle1/cmd_vel linear: x: 1.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0
Bash
복사

토픽 대역폭 확인 (ros2 topic bw)

메시지의 대역폭, 송수신 받는 토픽 메시지의 크기 또한 확인할 수 있다. 송수신 되는 토픽의 초당 대역폭을 알 수 있다.
$ ros2 topic bw /turtle1/cmd_vel Subscribed to [/turtle1/cmd_vel] average: 1.74KB/s mean: 0.05KB min: 0.05KB max: 0.05KB window: 100
Bash
복사

토픽 주기 확인 (ros2 topic hz)

토픽의 전송 주기를 확인 할 수 있다.
$ ros2 topic hz /turtle1/cmd_vel average rate: 33.212 min: 0.029s max: 0.089s std dev: 0.00126s window: 2483
Bash
복사

토픽 지연 시간 확인 (ros2 topic delay)

토픽은 네트워크 장비를 거치기 때문에 지연 시간(latency)이 존재한다. 이를 확인할 수 있다.
$ ros2 topic delay /TOPIC_NAME average delay: xxx.xxx min: xxx.xxxs max: xxx.xxxs std dev: xxx.xxxs window: 10
Bash
복사

토픽 발행 (ros2 topic pub)

$ ros2 topic pub <topic_name> <msg_type> "<args>"
Bash
복사

ROS2 bag 파일 이용하기

ROS애서는 발행하는 토픽을 파일 형태로 저장하고 필요할 때 저장된 토픽을 다시 불러와 동일한 타이밍으로 재생할 수 있다. 이를 rosbag이라고 한다. 쉽게 말해 원하는 토픽을 기록하고 재생한다.
SLAM 알고리즘 개발 시 카메라, 라이다 등의 센서 정보와 로봇의 위치 정보 오도메트리와 같은 상태 정보가 필요하다. 이러한 데이터는 매번 취득하기 어렵기 때문에 알고리즘의 입력 값을 고정하고 반복해서 테스트 하기 위해 사용된다.

bag 기록하기 (ros2 bag record)

아래 명령어를 실행한 뒤 Ctrl + C 를 눌러 종료하면 된다. 실행 후에는 이름에 맞는 폴더가 생성된다.
$ ros2 bag record -o 이름 /turtle1/cmd_vel
Bash
복사

bag 정보 보기 (ros2 bag info)

$ ros2 bag info rosbag2_2022_03_26-11_53_43/ Files: rosbag2_2022_03_26-11_53_43_0.db3 Bag size: 24.8 KiB Storage id: sqlite3 Duration: 60.624s Start: Mar 26 2022 11:54:32.863 (1648263272.863) End: Mar 26 2022 11:55:33.487 (1648263333.487) Messages: 86 Topic information: Topic: /turtle1/cmd_vel | Type: geometry_msgs/msg/Twist | Count: 86 | Serialization Format: cdr
Bash
복사

bag 재생 하기 (ros2 bag play)

$ ros2 bag play rosbag2_2022_03_26-11_53_43/
Bash
복사

Reference