Backgroud
오픈소스 기반의 ROS (Robot Operating System)는 로봇 애플리케이션을 만들기 위한 라이브러리 및 도구 모음 입니다. 디바이스 드라이버에서 알고리즘에 이르기까지 강력한 개발자 도구를 갖춘 ROS는 로봇 프로젝트에 필요한 많은 것을 갖추고 있습니다. ROS 의 두 번째 버전 ROS2 에서는 기존 버전에서 문제를 많이 개선해서 실시간 (Realtime) 성이 보장된 로봇 애플리케이션 프레임워크를 제공합니다.
Goal
지난 포스팅에서 (ROS 에서 가장 기본이 되는) turtlesim 예제를 빌드하고 실행했습니다.
이번 포스팅에서는 다수의 노드에서 발생한 메시지와 데이터를 로깅하고 재생하는 방법에 대해서 설명합니다. ROS bag 은 시간 (timestamp) 를 포함한 직렬화된 메시지 파일을 만드는 개발 도구 입니다. ROS bag 도구를 이용하면 node 간의 주고 받는 topic, message 를 저장하여 재생할 수 있습니다.
Step by step
지난 포스팅을 참고하여 Turtlesim 예제를 실행 합니다. 그리고 새로운 terminal 에서 rqt_graph 를 실행 합니다.
ros2 run rqt_graph rqt_graph
위에서 실행한 rqt_graph 를 이용하면 turtlesim 예제의 구조를 보다 자세히 알 수 있습니다.
- turtlesim 과 teleop_turtle 의 2개의 노드로 구성 됩니다.
- turtlesim 은 cmd_vel 을 구독하고, feedback 과 status 를 발행합니다.
- teleop_turtle 는 feedback 과 status 를 구독하고 cmd_vel 를 발행합니다.
발행하고 구독하는 토픽 메시지 (topic message) 를 저장하고 재생해보기 위해, 필요한 package 를 설치합니다.
sudo apt-get install ros-dashing-ros2bag*
sudo apt-get install ros-dashing-rosbag2-storage-default-plugins
설치가 완료되면 다음 명령어로 토픽 메시지를 rosbag 파일로 저장 합니다.
~/log$ ros2 bag record -a
[INFO] [rosbag2_storage]: Opened database 'rosbag2_2020_12_16-06_52_20'.
[INFO] [rosbag2_transport]: Listening for topics...
[INFO] [rosbag2_transport]: Subscribed to topic '/rosout'
[INFO] [rosbag2_transport]: Subscribed to topic '/parameter_events'
[INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/color_sensor'
[INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/pose'
[INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/rotate_absolute/_action/status'
[INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/rotate_absolute/_action/feedback'
[INFO] [rosbag2_transport]: Subscribed to topic '/turtle1/cmd_vel'
저장된 파일의 형태는 meta 파일과 SQLite (*.db3) 형식 입니다.
~/log/rosbag2_2020_12_16-06_55_52$ ls
metadata.yaml rosbag2_2020_12_16-06_55_52.db3
meta 파일에는 저장된 ROS 노드와 토픽 메시지의 정보가 기술되어있습니다.
$ cat metadata.yaml
rosbag2_bagfile_information:
version: 1
storage_identifier: sqlite3
relative_file_paths:
- rosbag2_2020_12_16-06_55_52.db3
duration:
nanoseconds: 678665973
starting_time:
nanoseconds_since_epoch: 1608130552315711735
message_count: 90
topics_with_message_count:
- topic_metadata:
name: /turtle1/color_sensor
type: turtlesim/msg/Color
serialization_format: cdr
message_count: 45
- topic_metadata:
name: /turtle1/pose
type: turtlesim/msg/Pose
serialization_format: cdr
message_count: 45
저장된 db3 로 재생이 가능합니다.
os2 bag play rosbag2_2020_12_16-04_04_11/
'로보틱스 > ROS' 카테고리의 다른 글
ROS2 노드간 통신 인터페이스 (0) | 2021.10.25 |
---|---|
ROS2 Node 와 Topic 기본 개념 (0) | 2021.10.12 |
ROS Classic 에서 ROS2 로 넘어가야 하는 이유 II (0) | 2021.09.14 |
ROS Classic 에서 ROS2 로 넘어가야 하는 이유 I (0) | 2021.09.14 |
Ubuntu 20.04 에서 ROS2 Foxy Fitzroy설치하기 (0) | 2021.09.11 |
ROS2 기본예제 Turtlesim 실행하기 (0) | 2021.01.02 |
Ubuntu 18.04 에서 ROS2 Dashing Diademata 설치하기 (0) | 2020.12.31 |
로봇을 위한 소프트웨어 플랫폼, ROS (0) | 2019.04.22 |