1 认识rosbag

概念:是用于录制和回放 ROS 主题的一个工具集。

作用:实现了数据的复用,方便调试、测试。

本质:
rosbag本质也是ros的节点,当录制时,rosbag是一个订阅节点,可以订阅话题消息并将订阅到的数据写入磁盘文件;当重放时,rosbag是一个发布节点,可以读取磁盘文件,发布文件中的话题消息。

2 rosbag使用_命令行

需求:
ROS 内置的乌龟案例并操作,操作过程中使用 rosbag 录制,录制结束后,实现重放

实现:
1.准备
创建目录保存录制的文件

mkdir ./xxx
cd xxx

2.开始录制

rosbag record -a -O 目标文件

操作小乌龟一段时间,结束录制使用 ctrl + c,在创建的目录中会生成bag文件。

3.查看文件

rosbag info 文件名

4.回放文件

rosbag play 文件名

重启乌龟节点,会发现,乌龟按照录制时的轨迹运动。

3 rosbag使用_编码

命令实现不够灵活,可以使用编码的方式,增强录制与回放的灵活性,本节将通过简单的读写实现演示rosbag的编码实现。

程序实现:

3.1 写bag

#include "ros/ros.h"
#include "rosbag/bag.h"
#include "std_msgs/String.h"int main(int argc, char *argv[])
{ros::init(argc,argv,"bag_write");ros::NodeHandle nh;//创建bag对象rosbag::Bag bag;//打开bag.open("/home/rosdemo/demo/test.bag",rosbag::BagMode::Write);//写std_msgs::String msg;msg.data = "hello world";bag.write("/chatter",ros::Time::now(),msg);bag.write("/chatter",ros::Time::now(),msg);bag.write("/chatter",ros::Time::now(),msg);bag.write("/chatter",ros::Time::now(),msg);//关闭bag.close();return 0;
}

3.2 读bag

/*  读取 bag 文件:*/
#include "ros/ros.h"
#include "rosbag/bag.h"
#include "rosbag/view.h"
#include "std_msgs/String.h"
#include "std_msgs/Int32.h"int main(int argc, char *argv[])
{setlocale(LC_ALL,"");ros::init(argc,argv,"bag_read");ros::NodeHandle nh;//创建 bag 对象rosbag::Bag bag;//打开 bag 文件bag.open("/home/rosdemo/demo/test.bag",rosbag::BagMode::Read);//读数据for (rosbag::MessageInstance const m : rosbag::View(bag)){std_msgs::String::ConstPtr p = m.instantiate<std_msgs::String>();if(p != nullptr){ROS_INFO("读取的数据:%s",p->data.c_str());}}//关闭文件流bag.close();return 0;
}

[ROS常用组件] --- rosbag相关推荐

  1. 第 5 章 ROS 常用组件 4 —— rosbag / rqt工具箱

    文章目录 1 rosbag 1.0 概念 - 作用 - 本质 1.1 rosbag 命令行 1.2 rosbag 使用_编码 1.2.1 C++ 写bag 1.2.2 C++ 读bag 2 rqt 工 ...

  2. 第 5 章 ROS 常用组件 2 —— TF 坐标变换_多坐标变换 tf03_tfs(重难点)

    文章目录 01 多坐标变换 1.1 需求 - 分析 - 流程 1.2 新建功能包,添加依赖 -- 功能包 tf03_tfs 1.3 程序实现 1.3.1 发布方 -- tfs_c.launch 1.3 ...

  3. 深蓝学院古月居第四讲——ros常用组件笔记

    目录 1.Launch启动文件 2.TF坐标变换(默认保存10s之内的所有坐标系关系) 3.可视化显示与仿真工具 1.Launch启动文件 Launch启动文件:通过XML文件实现多节点的配置和启动( ...

  4. ROS系列:常用组件(一)

    文章目录 五.ROS常用组件 1.TF坐标变换 1.1 坐标msg消息 1.2 静态坐标变换 五.ROS常用组件 在ROS中内置了一些比较使用的工具:本章主要介绍ROS内置如下组件: TF坐标变换,实 ...

  5. 【ROS】ROS常用命令

    [ROS]ROS常用命令 一.前言 二.常用命令 2.1 ROS shell 命令 2.2 ROS执行命令 2.2.1 `roscore` [选项] 2.2.2 rosrun:运行ROS节点 2.2. ...

  6. ROS基础一之ROS常用指令集合

    ROS常用指令集合 ROS常用指令集合 1.功能包相关指令 2.topic相关指令 3.service相关指令 4.msg/srv相关指令 5.param相关指令 6.node相关指令 7.rqt相关 ...

  7. JQuery EasyUI的常用组件

    jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件,该框架提供了创建网页所需的一切,帮助您轻松建立站点. 注:本次介绍的JQuery EasyUI版本为1.5版. 一 ...

  8. wdcp php5.3 pdo_mysql,WDCP常用组件(memcache、mysqli、PDO_MYSQL、mysql innodb、libmcrypt、php zip)的安装方法...

    一般来说WDCP安装之后就可以正常使用了,不过对于一些朋友来说还无法满足,现在收集了有关WDCP常用组件,比如memcache.mysqli.PDO_MYSQL.mysql innodb.libmcr ...

  9. amazeui学习笔记--css(常用组件4)--关闭按钮Close

    amazeui学习笔记--css(常用组件4)--关闭按钮Close 一.总结 1.关闭按钮基本用法:关闭按钮样式,可以结合其他不同组件使用.对 <a> 或者 <button> ...

最新文章

  1. 计算机系男同学追班里一女同学,未果......
  2. keepalived安装与配置_面试官问LVS+keepalived+nginx怎么实现时该怎么答?
  3. android.util.Log常用的方法
  4. 边缘检测之Sobel算子Prewitt算子
  5. oracle to_date 函数
  6. 采样定理与奈奎斯特极限
  7. 利用fiddler和低版本的iTunes实现iOS抓包
  8. 把网页保存成markdowm的方法
  9. Python采集12星座信息,分析出12星座的各个特点
  10. html5支持4k视频播放器,哪个是最好的4K视频播放器?五个最佳播放软件(个人经验)...
  11. Unreal Engine(虚幻引擎)渲染 – 正确使用方法
  12. 写作写的自己感动流泪-天才作者
  13. python井字棋最大最小算法_python井字棋算法及代码
  14. 大作业--月球绕地球旋转简版
  15. css判断ie版本才引用样式或css文件
  16. STC8H1K08 - INT2 - 下降沿触发外部中断 2
  17. kafka 对外提供服务方案简述
  18. 未来五年,哪个行业最值得创业?
  19. Delphi数据库编程教程(九)
  20. Nimda.A病毒技术分析笔记

热门文章

  1. 2020年你用哪一款远程桌面工具?
  2. 最详细的设计模式的七大原则讲解
  3. 弹性盒模型(部分布局超好用)
  4. Speedoffice(word)如何插入空白页
  5. 【Python】鲸鱼算法实现
  6. 阿里云服务器一年价格是多少?阿里云服务器一般多少钱一年?
  7. C.H. Robinson罗宾逊全球物流推出跨欧亚铁路货运服务
  8. Java——JavaWeb
  9. 2021年A证(安全员)考试报名及A证(安全员)考试平台
  10. 遍历HashMap的方法