Backgroud
오픈소스 기반의 ROS (Robot Operating System)는 로봇 애플리케이션을 만들기 위한 라이브러리 및 도구 모음 입니다. 디바이스 드라이버에서 알고리즘에 이르기까지 강력한 개발자 도구를 갖춘 ROS는 로봇 프로젝트에 필요한 많은 것을 갖추고 있습니다. ROS 의 두 번째 버전 ROS2 에서는 기존 버전에서 문제를 많이 개선해서 실시간 (Realtime) 성이 보장된 로봇 애플리케이션 프레임워크를 제공합니다.
Goal
지난 포스팅에서 (ROS 에서 가장 기본이 되는) turtlesim 예제를 빌드하고 실행했습니다.
[ROS2 ] Turtlesim 실행하기
Backgroud 오픈소스 기반의 ROS (Robot Operating System)는 로봇 애플리케이션을 만들기 위한 라이브러리 및 도구 모음 입니다. 디바이스 드라이버에서 알고리즘에 이르기까지 강력한 개발
makepluscode.tistory.com
이번 포스팅에서는 다수의 노드에서 발생한 메시지와 데이터를 로깅하고 재생하는 방법에 대해서 설명합니다. 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 |