如何在ROS2中回放ROS1的bag包-rosbag_v2法


问题叙述

目前是ROS1到ROS2的过度阶段,由于ROS2内部的机制大幅变动,导致我们ROS1录制的bag包和ROS2的bag包并不能通用。如何在ROS2中回放ROS1格式的bag包?


解决方案

通过使用安装rosbag_v2插件来解决。(注:本方法仅支持标准消息类型的rosbag转换,如果带有自定义msg的rosbag则不适用)
rosbag2_bag_v2 是一个ROS2的插件,用于读取ROS1的bag文件。在安装和使用这个插件之前需要保证以下几点:
1.需要安装好ROS 2和ROS 1。本文以ubuntu 20.04 ROS2 foxy和ROS1 noetic的环境为例。(ROS2 foxy安装教程ROS1 noetic安装教程
2.需要安装好ros1_bridge包(通过命令sudo apt install ros-foxy-ros1-bridge安装,foxy根据具体ROS2版本更改,或参见官方页面安装教程 )。
3.需要安装rosbag2包(一般ROS2安装过程中会默认安装,如果没有安装的话参见官方页面.)


满足以上几点后,开始安装和使用rosbag_v2插件

安装rosbag_v2相关依赖和插件:

sudo apt install ros-foxy-rosbag2-bag-v2-plugins ros-foxy-ros1-bridge ros-foxy-ros1-rosbag-storage-vendor ros-foxy-rosbag2*

(注:这里的foxy需要根据环境的ROS2版本更改)

设置环境变量:

source /opt/ros/noetic/setup.bash
source /opt/ros/foxy/setup.bash

或将上面两行添加到.bashrc 文件末尾后打开一个新终端。(注:这里的两个路径根据环境的ROS1、ROS2安装位置更改)

测试:

ros2 bag info -s rosbag_v2 your_bag_file.bag

查看.bag信息,如下图,包含topic等信息。
在这里插入图片描述

ros2 bag play -s rosbag_v2 your_bag_file.bag

回放.bag,正常的效果如下图。
在这里插入图片描述
如果.bag中带有自定义msg,则会出现以下报错。
在这里插入图片描述
与此同时,可以通过以下命令监听.bag中的数据或记录为rosbag2形式的可供ROS2直接使用的数据包。
在这里插入图片描述
在这里插入图片描述


参考资料

ROS2 foxy安装教程
ROS1 noetic安装教程
ROS2入门教程-源码安装ros1_bridge
ros1_bridge主页
rosbag_v2插件官方主页:
ros1 bag to ros2 bag play
ros2入门教程-rosbag和ros2 bag 转换
ROS2 回放 ros1.bag 文件?血泪总结

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值