ROS中bag的录制、播放和使用

这篇具有很好参考价值的文章主要介绍了ROS中bag的录制、播放和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

传感器获取到的信息,有时我们可能需要实时处理,有时可能只是采集数据,事后分析,比如:
机器人导航实现中,可能需要绘制导航所需的全局地图,地图绘制实现,有两种方式

  • 方式1:可以控制机器人运动,将机器人传感器感知到的数据时时处理,生成地图信息。
  • 方式2:同样是控制机器人运动,将机器人传感器感知到的数据留存,事后,再重新读取数据,生成地图信息。

两种方式比较,显然方式2使用上更为灵活方便。在ROS中关于数据的留存以及读取实现,提供了专门的工具: rosbag。rosbag本质也是ros的节点,当录制时,rosbag是一个订阅节点,可以订阅话题消息(这是ROS核心的数据通讯,ros开发每天都会打交道的话题通讯机制)并将订阅到的数据写入磁盘文件;当重放时,rosbag是一个发布节点,可以读取磁盘文件,发布文件中的话题消息。这就有助于我们基于离线数据快速重现曾经的实际场景,进行可重复、低成本的分析和调试。如果有ROS基础,下面的内容将很好理解,否则并不能快速学会使用:

一、bag录制

录制所有话题数据(此时会在当前路径下生成名称为当前时间的bag包):

rosbag record -a

录制指定话题数据:

rosbag record <topic_name1> <topic_name2> <topic_name3> ...

指定指定话题数据并指定保存bag的路径名称:

rosbag record  -O <bagname> <topic_name1> <topic_name2> <topic_name3> ...

例如:
ROS中bag的录制、播放和使用,ubuntu,自动驾驶,SLAM

二、bag信息查看

rosbag info指令可以数据包中包含的话题名称,话题数量,话题消息类型等信息:

rosbag info <bagname>

ROS中bag的录制、播放和使用,ubuntu,自动驾驶,SLAM

通过rqt_bag命令将bag进行(数据流)可视化

rqt_bag <bagname>

ROS中bag的录制、播放和使用,ubuntu,自动驾驶,SLAM

三、bag播放

bag的回放就像放视频一样,可以再现数据录制时的实时数据流,但是有一些命令可以控制播放时间、速率、话题等功能:
回放指定bag(一般最常用)

rosbag play <bagname> 

回放当前目录下所有bag

rosbag play *

从指定时间(n = 指定时间s)开始回放bag

rosbag play -s n <bagname>

延时指定时间(n = 延时时间s)开始回放bag

rosbag play -d n <bagname>

播放指定结束时间(n = 指定秒数)的bag

rosbag play -u n <bagname>

从指定时间(n = 开始时间s)开始播放到指定时间(m = 指定播放时间s)的bag

rosbag play -s n -u m <bagname>

按指定倍率(n = 倍率)回放bag

rosbag play -r n <bagname>

只播放感兴趣的 topic

rosbag play <bagname> --topic /topic1 /topic2 ...

播放bag的 topic重命名:

rosbag play <bagname> /topic1:=/topic1

回放包时,其他节点可以接受实时的话题数据,进行SLAM或者显示等处理,播放例如我们利用可视化工具rviz查看小车的点云和图像话题:
ROS中bag的录制、播放和使用,ubuntu,自动驾驶,SLAM
ROS中bag的录制、播放和使用,ubuntu,自动驾驶,SLAM

四、bag的使用(以A-LOAM为例)

A-LOAM是一个纯激光SALM,订阅一个激光消息进行SLAM处理,因此首先我们要获取点云话题,即需要知道其话题名以及消息类型,通过rosbag info查看即可:
ROS中bag的录制、播放和使用,ubuntu,自动驾驶,SLAM
通过rostopic可以在命令行订阅消息,查看其内容(每个话题都一定包含header消息,其中有消息的时间戳stamp和其对应的坐标系frame_id--noarr参数是把点云原始数据data折叠起来了,否则满屏显示"<array type: uint8, length: 460800>"看不到消息其他内容):
ROS中bag的录制、播放和使用,ubuntu,自动驾驶,SLAM

知道bag中的点云话题/point_raw后,在代码中订阅点云消息

ros::Subscriber subLaserCloud = nh.subscribe<sensor_msgs::PointCloud2>(/point_raw, 100, laserCloudHandler);

其中sensor_msgs::PointCloud2是点云消息类型,一些特殊的数据例如点云、IMU和图像等,ROS中有定义好的消息类型,我们还可以定义自己的消息(底层就是一个C++类);/point_raw就是要订阅的话题名称;100是缓存队列的长度,防止处理时间跟不上bag播放速度而丢失数据;laserCloudHandler是回调函数,用于保存或者处理接收的数据。
接下来同时播放包和运行SLAM节点,SLAM算法即可实时接收点云数据并实时处理:

# 分别打开两个终端,输入命令
roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch
rosbag play autoware-20230608161607.bag

ROS中bag的录制、播放和使用,ubuntu,自动驾驶,SLAM文章来源地址https://www.toymoban.com/news/detail-552971.html

到了这里,关于ROS中bag的录制、播放和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 8. 《自动驾驶与机器人中的SLAM技术》基于保存的自定义NDT地图文件进行自动驾驶车辆的激光定位

    目录 1. 为 NDT 设计一个匹配度评估指标,利用该指标可以判断 NDT 匹配的好坏。 2. 利用第 1 题的指标,修改程序,实现 mapping 部分的回环检测。 3. 将建图结果导出为 NDT map,即将 NDT 体素内的均值和协方差都存储成文件。 4. 实现基于 NDT map 的激光定位。根据车辆实时位姿,

    2024年02月02日
    浏览(29)
  • Ubuntu20.04在ROS下运行ORB-SLAM3

    目录 1.前言: 2.总体配置: 3.数据集 4.配置ORB-SLAM3 (1)添加环境变量 (2)修改文件 5.编译运行 (1)检查环境 (2)编译 6.运行 7.部分报错 (1)功能包未找到 (2)AR路径下文件的错误 (3)Pangolin库错误 (4)缺少库         小白配置ORB-SLAM3的过程真的辛酸。。各种各样

    2024年03月15日
    浏览(45)
  • Ubuntu20.04的ROS环境安装ORB-SLAM3详解

    视觉SLAM实验要在Ubuntu20.04系统上使用ROS跑ORB-SLAM3,熟悉一下特征点法的SLAM,把安装过程总结记录下来。 系统 版本 ubuntu 20.04 Pangolin 0.6 Eigen 3 Opencv 4.2 usb_cam 执行命令更新源 1、ROS简介 ROS全称Robot Operating System(机器人操作系统) ROS是适用于机器人的开源元操作系统 ROS集成了大

    2023年04月21日
    浏览(56)
  • 机器人过程自动化(RPA)入门 2. 录制播放

    在计算机上记录用户步骤并回放的功能使机器人过程自动化(RPA)取得了巨大成功。如果没有这一功能,该技术的采用可能会非常缓慢,它将被视为另一种自动化/脚本工具。 在前一章中,我们对机器人过程自动化有了基本的了解。在本章中,我们将了解如何使用录音机作为

    2024年02月07日
    浏览(39)
  • 高翔:《自动驾驶与机器人中的SLAM技术 》-Slam_in_autonomous_driving 编译过程中遇到的问题

    使用的环境是ubuntu20.04 问题1.安装g2o没有问题,不过在编译整个项目工程时候报错: ”openmp_mutex.h: 30:10: fatal error: g2o/config.h: No such file or directory“: 解决办法: 问题2. No rule to make target ’gmock’,needed by \\\'../bin/test_preintegration\\\' . stop src/ch4/CMakeFiles/test_preintegration.dir/all] Error 2:

    2024年02月03日
    浏览(30)
  • ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

    一、引言 ORB-SLAM2,它是基于单目、双目或RGB-D相机的一个完整的SLAM系统,其中包括地图重用、回环检测和重定位功能。这个系统可以适用于多种环境,无论是室内小型手持设备,还是工厂环境中飞行的无人机和城市中行驶的车辆,其都可以在标准CPU上实时运行。该系统的后端

    2023年04月13日
    浏览(39)
  • 云计算实战应用案例精讲-【自动驾驶】多模态融合智能检测方法及 SLAM 车载实现(论文篇)

    目录 基于多模态融合的人机协同模型与算法研究 感知与识别技术 2.1 手势信息的感知与识别

    2024年02月11日
    浏览(32)
  • 从零搭建一台基于ROS的自动驾驶车-----4.定位

    北科天绘 16线3维激光雷达开发教程 基于Rplidar二维雷达使用Hector_SLAM算法在ROS中建图 Nvidia Jetson Nano学习笔记–串口通信 Nvidia Jetson Nano学习笔记–使用C语言实现GPIO 输入输出 Autolabor ROS机器人教程 从零搭建一台基于ROS的自动驾驶车-----1.整体介绍 从零搭建一台基于ROS的自动驾驶

    2024年02月11日
    浏览(31)
  • SLAM学习笔记(一)Lio-sam安装与运行 ubuntu18.04+ros melodic

    三维激光SLAM入门 Lio-sam安装与运行 ubuntu18.04+ros melodic 最近在学习激光SLAM,本文将介绍了ubuntu18.04+ros melodic下部署复现LIO-SAM的过程。2020年TIxiaoshan在IROS发表了Lio-sam算法,LiO-sam是Lego-Loam的拓展版本,添加了IMU预积分因子和GPS因子,Loam与Lego-Loam纯靠激光雷达点云信息SLAM,Lio-sa

    2023年04月09日
    浏览(101)
  • 基于ROS的自动驾驶 激光雷达点云物体检测 项目实战

    前言: 基于Apollo的preception与Autoware的lidar_apollo_cnn_seg_detect模块,并详细记录ROS系统上进行实时检测全部流程和踩坑,文章最后附上rosbag和rosbag的制作方法。参考文章:https://adamshan.blog.csdn.net/article/details/106157761?spm=1001.2014.3001.5502感谢大佬的杰作。 检测效果视频 环境 RTX 2060(

    2024年02月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包