首页 > 编程知识 正文

ros2 bag record,ros录制bag包命令

时间:2023-05-03 18:14:08 阅读:274663 作者:3795

0. 前言

目前是ROS1到ROS2的过度阶段,由于ROS2内部的机制大幅变动,导致我们ROS1录制的bag包和ROS2的bag包并不能通用。网上基本上均是如何将ros2录制的bag包转换为ros1格式的bag包的方案,这里做出归纳,并给出全套的解决方案。
测试环境:
ubuntu 20.04
ROS 1 noetic
ROS 2 foxy
两个版本的ROS 均需要按照官网教程进行安装,这里可以参照作者之前写的文章来安装。

1.ROS2和ROS1录制的文件格式

ros2录制的bag包文件,录制完后会生成一个目录,在目录下会生成多个文件,如下:

ros1 录制的bag文件,只有一个文件:例如 2021-05-19-19-10-18.bag

2. ROS2转ROS1的bag包

为了将录制的ROS2的bag包转换ROS1格式的bag包,大致流程需要以下步骤:

1.播放ros2的包
2.ros1监听到ros2播放的topic,然后再录制topic即可

当不需要使用自定义消息类型进行两个ROS 通信的时候,没有必要通过源码编译安装ros1_bridge

我们可以直接安装ros-eloquent-ros1-bridge,这个库包主要是用于ros2和ros1之间的通信

sudo apt updatesudo apt install ros-foxy-ros1-bridge

启动 一个新的终端

source /opt/ros/noetic/setup.bashroscore

再启动一个新的终端

source /opt/ros/noetic/setup.bashsource /opt/ros/foxy/setup.bashros2 run ros1_bridge dynamic_bridge // --bridge-all-topics

再启动一个新的终端

source /opt/ros/foxy/setup.bashros2 bag play rosbag2_2021_05_19-11_28_34/

再启动一个新的终端

source /opt/ros/noetic/setup.bashrosbag record /image /scan

等待录制完成即可尝试播放

rosbag play rosbag2_2021_05_19-11_28_34.bag 3. ROS1转ROS2的bag包

这里一定要注意顺序。因为我们原有的rosbag是ros1格式,用的是ros2里面的bag工具,所以要先source ROS1,再source ROS2,否则可能出现问题。

…详情请参照古月居

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。