[ROS常用组件] --- rosbag
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相关推荐
- 第 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 工 ...
- 第 5 章 ROS 常用组件 2 —— TF 坐标变换_多坐标变换 tf03_tfs(重难点)
文章目录 01 多坐标变换 1.1 需求 - 分析 - 流程 1.2 新建功能包,添加依赖 -- 功能包 tf03_tfs 1.3 程序实现 1.3.1 发布方 -- tfs_c.launch 1.3 ...
- 深蓝学院古月居第四讲——ros常用组件笔记
目录 1.Launch启动文件 2.TF坐标变换(默认保存10s之内的所有坐标系关系) 3.可视化显示与仿真工具 1.Launch启动文件 Launch启动文件:通过XML文件实现多节点的配置和启动( ...
- ROS系列:常用组件(一)
文章目录 五.ROS常用组件 1.TF坐标变换 1.1 坐标msg消息 1.2 静态坐标变换 五.ROS常用组件 在ROS中内置了一些比较使用的工具:本章主要介绍ROS内置如下组件: TF坐标变换,实 ...
- 【ROS】ROS常用命令
[ROS]ROS常用命令 一.前言 二.常用命令 2.1 ROS shell 命令 2.2 ROS执行命令 2.2.1 `roscore` [选项] 2.2.2 rosrun:运行ROS节点 2.2. ...
- ROS基础一之ROS常用指令集合
ROS常用指令集合 ROS常用指令集合 1.功能包相关指令 2.topic相关指令 3.service相关指令 4.msg/srv相关指令 5.param相关指令 6.node相关指令 7.rqt相关 ...
- JQuery EasyUI的常用组件
jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件,该框架提供了创建网页所需的一切,帮助您轻松建立站点. 注:本次介绍的JQuery EasyUI版本为1.5版. 一 ...
- wdcp php5.3 pdo_mysql,WDCP常用组件(memcache、mysqli、PDO_MYSQL、mysql innodb、libmcrypt、php zip)的安装方法...
一般来说WDCP安装之后就可以正常使用了,不过对于一些朋友来说还无法满足,现在收集了有关WDCP常用组件,比如memcache.mysqli.PDO_MYSQL.mysql innodb.libmcr ...
- amazeui学习笔记--css(常用组件4)--关闭按钮Close
amazeui学习笔记--css(常用组件4)--关闭按钮Close 一.总结 1.关闭按钮基本用法:关闭按钮样式,可以结合其他不同组件使用.对 <a> 或者 <button> ...
最新文章
- 计算机系男同学追班里一女同学,未果......
- keepalived安装与配置_面试官问LVS+keepalived+nginx怎么实现时该怎么答?
- android.util.Log常用的方法
- 边缘检测之Sobel算子Prewitt算子
- oracle to_date 函数
- 采样定理与奈奎斯特极限
- 利用fiddler和低版本的iTunes实现iOS抓包
- 把网页保存成markdowm的方法
- Python采集12星座信息,分析出12星座的各个特点
- html5支持4k视频播放器,哪个是最好的4K视频播放器?五个最佳播放软件(个人经验)...
- Unreal Engine(虚幻引擎)渲染 – 正确使用方法
- 写作写的自己感动流泪-天才作者
- python井字棋最大最小算法_python井字棋算法及代码
- 大作业--月球绕地球旋转简版
- css判断ie版本才引用样式或css文件
- STC8H1K08 - INT2 - 下降沿触发外部中断 2
- kafka 对外提供服务方案简述
- 未来五年,哪个行业最值得创业?
- Delphi数据库编程教程(九)
- Nimda.A病毒技术分析笔记