이전 글에서 rosbag 파일에 저장된 토픽중 image 메세지 토픽을 저장하는 방법에 대해 설명했다.
그런데 그 방법의 단점은 바로 따로 rosbag play를 해줘야 한다는 것이었는데, 그렇게 할 경우 rosbag play 속도를 image_view extract_images 명령이 따라가지 못해 프레임 드랍이 생긴다는 것이다. :(
내가 원하는건 하나도 빠짐없이 전부 저장하는 것인데....
그래서 찾아보니 별도의 launch 파일을 만들어서 roslaunch 명령으로 실행하는 방법이 있다. :)
먼저 아래와 같이 save_image.launch 파일을 만들자.
<launch>
<arg name="bag_path" default="/home/kbk/tmp/bagfiles/"/>
<arg name="bag_file" default="zed_lidar"/>
<arg name="image_topic" default="/zed/zed_node/left/image_rect_color"/>
<node pkg="rosbag" type="play" name="rosbag" required="true" args="--clock $(arg bag_path)$(arg bag_file).bag"/>
<node name="extract" pkg="image_view" type="extract_images" respawn="false" required="true" output="screen" cwd="ROS_HOME">
<remap from="image" to="$(arg image_topic)"/>
<param name="sec_per_frame" type="double" value="0.01" />
</node>
</launch>
이제 save_image.launch 파일을 roslaunch 명령어를 사용해 실행시키자.
roslaunch save_image.launch bag_file:=zed_lidar_data_1
이렇게 실행하면 /home/kbk/tmp/bagfiles/zed_lidar_data_1.bag 파일의 /zed/zed_node/left/image_rect_color 메세지 토픽이 ~/.ros 경로에 frame####.jpg 파일명으로 저장된다.
아래와 같이 .ros 경로에 저장된 파일을 홈 디렉토리의 frames 폴더로 이동시킨다.
$ mv ~/.ros/frame*.jpg ~/frames
반응형
'IT 개발 > ROS' 카테고리의 다른 글
livox MID-40 센서 데이터를 rosbag 파일로 저장하기 (1) | 2024.02.15 |
---|---|
rosbag 파일에서 pcd와 image 추출하기 (0) | 2023.11.23 |
roscore / rosmaster 강제로 종료하기 (0) | 2023.08.24 |
[CMake Error] Could not find a package configuration file provided by "pcl_ros" with any of the following names: (0) | 2023.08.23 |
ROS 에서 PointCloud2 데이터를 PCD 로 저장하기 (feat. LOAM) (0) | 2023.06.08 |