[ROS2] (11)-데이터 기록한 뒤 재생하기

데이터 기록하여 재생하기

ros2에서는 여러 개의 토픽 데이터를 데이터 베이스에 저장해두었다가 나중에 다시 재생시켜볼 수 있다. 이를 통해 실험 결과를 재생성하거나 작업 결과물을 다른 사람들과 공유할 수도 있다.

데이터 기록하기

turtlesim 예제를 통해 키보드 입력 값을 기록해보자. 먼저 2개의 노드를 각각 실행한다(ros2 run turtlesim turtlesim_node, ros2 run turtlesim turtle_teleop_key).

퍼블리시 중인 토픽 데이터만 기록할 수 있으므로, 현재 활성화된 토픽은 확인해보자.

$ ros2 topic list

아래와 같이 5개의 토픽이 출력된다.

/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

이 중에서 /turtle1/cmd_vel 토픽을 출력해보자. 새로운 커맨드 창에 ros2 topic echo /turtle1/cmd_vel을 입력한다. 처음에는 어떤 값도 출력하지 않는다. /turtle_teleop 노드를 실행한 터미널 창을 활성화시키고 화살표 키보드를 눌러보면 토픽이 출력된다.

이제 이 토픽을 기록해보자. 먼저 데이터를 저장할 폴더로 이동한 뒤, 기록을 시작한다. ros2 bag record <topic_name>을 통해 기록할 수 있다.

$ cd tutorial_launch
$ ros2 bag record /turtle1/cmd_vel

기록을 시작한 뒤, /tutle_teleop 노드를 실행한 터미널 창을 활성화시키고 키보드를 입력해보자. 충분히 입력한 뒤에 기록을 하고 있는 터미널 창에서 ctrl + c 를 눌러 기록을 중지한다.

기본적으로 rosbag2_year_month_day-hour_minute_second 형식으로 저장된다. 파일 이름을 바꾸고 싶을 때는 ros2 bag record -o <file_name> <topic_name>의 형식으로 입력할 수 있다. ros2 bag record <topic_name1> <topic_name2> 를 통해 여러 개의 토픽을 기록할 수도 있다. -a 를 입력해주면 활성화된 모든 토픽을 저장한다.

저장된 bag file의 정보를 보고싶으면 ros2 bag info <bag_fime_name>을 이용하면 된다.

데이터 재생하기

먼저, 실행중인 노드를 모두 종료하고, 새로운 터미널 창에서 turtlesim_node만 실행해준다. ros2 bag play <bag_file_name>을 입력해주면 재생이 시작된다. turtlesim 창을 볼 수 있도록 띄워두고 재생해보자. 기록한대로 거북이가 움직이는 것을 확인할 수 있다.

댓글남기기