ros2 bag record 输出csv, txt 等文本文件

正常来说,ros2 bag从ros1的rosbag升级过来,变规范了之后也变僵硬了,少了许多方便的服务。直接输出文本的服务没了,只有一种输出格式,db3。长这样,一个bag文件夹里面两个文件,db3和yaml。

一开始想看看有没有成熟的转文本工具,试了试鱼总(鱼香ROS)的ros2bag_convert,(https://github.com/fishros/ros2bag_convert.git),报错:

FileNotFoundError: [Errno 2] No such file or directory: 'bag_bigmama03060517_0.db/rosout.csv'

然后试了试疑似官方的ros2 bag convert,(https://github.com/ros2/rosbag2.git)

藏在很深的地方,

仔细一看,从包倒包,压包分包,压根就没想让你转格式,得,找半天最后还得靠自己。

打蛇七寸,擒贼擒王,饮水思源,你ros2 bag record是用来计数据的,数据哪里来,topic处来,

那我为啥非得从你bag一中间商那拿货,我直接上ros2 topic批发不香吗,而且人家ros2 topic echo有--csv选项,支持直接将消息以CSV格式输出。到这总体思路就清晰了,后面是琐碎步骤。

因为我本来是想bag一个机器人的关节运动过程的,bag已经有了所以偷懒不想再操作一遍机器人,于是直接一终端ros2 bag play,另一终端ros2 topic echo 了。

先启动机器人,

ros2 topic list 检查看到/joint_states有在,

那么在开头的bag文件夹里新开终端,输入

ros2 topic echo <你的topic名> --csv > <你的目标文本文件名>.csv,

新开另一终端

ros2 bag play <你的纪录文件名>.db3

先在echo的那个终端enter,再play。

安静等他跑完。

Play那里跑完会自己退出,echo 那得自己手动Ctrl+C。

回去文件夹里看看,多了个csv,这个复制到Windows里面自动识别为Excel表格。

想要变txt的话,右键用text editor 打开,

再新建一个文件,把csv内容全选复制过去,

保存的时候文件名以txt为后缀,

拿到Windows里面发给师兄,完事!!!

### 将ROS1 Bag文件转换为ROS2格式的方法 为了实现从ROS1到ROS2Bag文件转换,在Linux环境下可以采用间接方法完成此操作。由于官方并没有提供直接工具支持这种跨版本转换,因此通常先将ROS1的数据导出成中间格式如CSV或JSON,再通过编写脚本或其他方式重新录制这些消息进入新的ROS2环境下的Bag文件中。 一种推荐的方式是利用`ros2bag_convert`项目来处理这个问题[^1]。虽然该项目主要用于把ROS2 bag转为其他形式比如CSV,但是其源码和思路可以帮助理解如何解析并重构bag内的数据结构。具体来说: 对于原始ROS1 bag文件中的每一条记录,提取其中的消息类型以及具体内容;之后创建对应的ROS2话题发布者,并按照相同的时间戳发送同样的信息至本地网络接口上被rosbag2命令监听捕获下来形成最终目标格式的bag档案。 另外值得注意的是,考虑到两个不同版本间可能存在的话题名称差异、消息定义变化等问题,在实际迁移过程中还需要额外注意调整映射关系以确保兼容性[^2]。 ```bash # 假设已经安装好必要的依赖项并且配置好了工作空间 source /opt/ros/<distro>/setup.bash # 替换<distro>为你使用的ROS发行版 # 导入ROS1 bag内容到数据库或者其他临时存储介质内 rosrun rosbag play input_ros1.bag # 启动一个能够接收来自上述播放器发出的信息并将它们桥接到ROS2端口上去的服务程序 ros2 run ros1_bridge dynamic_bridge --bridge-all-topics # 开始在一个新终端里执行rosbag2 record指令保存下所有经过桥梁转发过来的新格式数据流 ros2 bag record -a -o output_directory/ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值