ros2 bag 自定义消息(msg)读取

文章介绍了如何使用rosbags库从ROS2bag文件中读取自定义消息类型的数据,并将其以明文格式(如txt)保存。由于ros2bagplay方法速度慢且可能引发多线程问题,作者选择了rosbags库,该库提供db3文件的读写接口,且不依赖ROS环境。在Python3下,通过示例代码展示了如何读取和转换ROS2自带及自定义消息格式的数据,包括图像数据的处理和保存。

需求

最近从甲方拿到的数据是ros2 bag包,含自定义的消息类型,在安装了ros2之后并编译消息文件之后,查询到有一个rosbags库可以直接序列化数据,也就可以把数据以明码文件的形式(如txt)保存到电脑上了。

方法

rosbags库

这里没有使用ros2 bag play XXXX的方式进行数据读取。

因为,一方面播放bag的方式速度慢;

另一方面,ros话题订阅中的callback函数是创建新线程运行的,也就是可能同时运行,如果要保存的数据有先后之分,比如从0到1000为保存的图像命名,则需要使用index_img++;多线程之间会发生冲突、顺序颠倒的情况,导致部分图像命名一致,新保存的图像覆盖旧图像。当然这也可以使用加线程锁的的方法解决。

rosbags具有如下特点

  • 可以无缝实现bag和db3的互相转换
  • 提供了db3文件的读写接口,非常方便。
  • 转换速度很快,因为不需要按照bag播放速度读取。
  • 不用依赖ros2、ros1

关键是这个包还不用依赖ros2和ros1,在python3下可以直接使用
废话不多说,
其文档在https://ternaris.gitlab.io/rosbags/index.html
代码托管在gitlab上,https://gitlab.com/ternaris/rosbags
安装

pip install rosbags

参考:https://heroacool.blog.youkuaiyun.com/article/details/128834476

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值