从ROS2的bag包中提取出imu、image数据,或者将imu、image数据打包成一个ROS2的bag包

主要参考代码:

链接:ROS2_CONVERT

主要有下面的功能

  • 订阅一个ros2的图片话题,并将接收到的消息转换为png图片存储起来。
  • 将一个ros2的bag包(比如example.dp3)中的图片话题提取出来,保存为图片名为时间戳的png图片
  • 将一个ros2包中的imu话题提取出来,保存为imu.csv文件
  • imu.csv中包含的imu数据转换为一个ros2的包
  • 把图片数据按一个或者多个话题写入ros2的bag包
  • 同时将imu数据和图片数据转换成ros2的包

不管是写入还是读出,imu和图片的存储格式都遵循下面这样的格式

图片
图片名为时间戳。当你要将图片写进bag包的时候,保存这些图片的文件夹名字一定要为bag包中想指定的话题名称,比如要指定的话题名字为"cam0",那么这些图片就要保存在cam0文件夹下面。因为在slam或者双目中是需要两个图片话题,这样就要将左右相机的图片分别保存进两个文件夹中。
image
IMU:
命名为imu.csv,按照time,ax,ay,az,gx,gy,gz的格式保存就行。
IMU
从ros2的bag包中提取的数据也会以这样的格式保存。

依赖项

需要安装ROS2和OpenCV

编译

mkdir -p WS_space/src
cd WS_space
git clone http://github.com/freesix/covert_ros2.git src/
source /opt/ros/humble/setup.bash
colcon build
source install/setup.bash

运行

订阅一个ROS2的话题,将收到的图片消息转为png图片保存

ros2 launch ros2_bag_to_image topic_to_image.launch.py  \
	input/topic:=/cam0 compressed:=True

参数说明

参数默认值描述
input/topic/image_raw需要订阅的ROS2话题
output/path/tmp/保存png图片的路径
campressed表明话题图片是压缩类型,对应话题类型为sensor_msgs/msg/CompressedImage

将bag包中图片提取出来为png图片保存

$ ros2 launch ros2_bag_to_image bag_to_image.launch.py \
        input/path:=/PATH_TO/input_bag/ \
        input/topics:="['camera1/image_rawcompressed', 'camera2/image_raw']"

参数说明

参数默认值描述
input/pathbag包的路径
input/bag_formatcdrbag包的格式
input/bag_storage_idsqlite3bag包中数据编码格式
input/topics话题列表,要提取那些图片话题
output/path保存提取出的png图片路径

将bag包中的IMU数据提取出来保存到imu.csv文件

ros2 launch ros2_bag_to_imu topic_to_imu.launch.py \
    input/path:=/imu output/path:=/out input/topics:="topic1"

参数说明

参数默认值描述
input/pathbag包的路径
input/bag_formatcdrbag包的格式
input/bag_storage_idsqlite3bag包中数据编码格式
input/topicsbag包中的imu话题名
output/path保存提取出的IMU数据路径

图片保存转换为bag包

切记存储图片的文件夹名称一定要为转换的bag包中话题名

ros2 launch data_to_bag img_to_bag.launch.py \ 
    input/path:=/img output/path:=/out input/img_topics:="['topic1', 'topic2']"

IMU数据转换为bag包

切记保存IMU数据的文件名要为imu.csv

ros2 launch data_to_bag imu_to_bag.launch.py  \
    input/path:=/imu output/path:=/out input/imu_topic:="/imu0" 

图片和IMU数据同时写入bag包中

ros2 launch data_to_bag data_to_bag.launch.py  \
    input/path:=/imu output/path:=/out input/imu_topic:="/imu0/"  \ 
    input/img_topics:="['topic1', ..., 'topicN']"
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值