当前位置: 首页 > news >正文

ROS学习笔记13——rosbag功能包的简单使用

rosbag是用于录制和回放 ROS 主题的一个工具集,实现了数据的复用,方便调试和测试。rosbag本质也是ros的节点,当录制时,rosbag是一个订阅节点,可以订阅话题消息并将订阅到的数据写入磁盘文件;当重放时,rosbag是一个发布节点,可以读取磁盘文件,发布文件中的话题消息。

1、通过命令行使用rosbag

1.1 录制

rosbag record -a -O 目标文件

-a 录制所有话题

-O 文件命名时不带时间戳

若不想录制所有的话题,可以不使用 -a ,而是将所需话题跟在后面。结束录制使用 ctrl + c,在创建的目录中会生成bag文件。

1.2 查看文件

rosbag info 文件名

1.3 回放文件

rosbag play 文件名

rosbag的 参数远不止这些,可以通过 -h 进行查看。

2、通过编码使用rosbag

通过编码可以更加灵活的使用rosbag,下面通过rosbag实现文本的简单读写。

2.1 写bag

#include "ros/ros.h"
#include "rosbag/bag.h"
#include "std_msgs/String.h"
/*需求:使用rosbag向磁盘文件写数据(话题+消息)流程:1、导包2、初始化3、创建rosbag对象4、打开文件流5、写数据6、关闭文件流
*/
int main(int argc, char *argv[])
{/* code *///2、初始化setlocale(LC_ALL, "");ros::init(argc, argv,"rosbag_write");ros::NodeHandle nh;//3、创建rosbag对象rosbag::Bag bag;//4、打开文件流bag.open("test.bag",rosbag::BagMode::Write);//5、写数据std_msgs::String msgs;msgs.data = "Come on! You are the best!";/*参数1:话题参数1:时间戳参数1:消息*/bag.write("/chatter",ros::Time::now(),msgs);//6、关闭数据流bag.close();return 0;
}

2.2 读bag

#include "ros/ros.h"
#include "rosbag/bag.h"
#include "rosbag/view.h"
#include "std_msgs/String.h"
/*需求:使用rosbag读取磁盘上的bag文件流程:1、导包2、初始化3、创建bag对象4、打开文件流5、读数据6、关闭文件流
*/
int main(int argc, char *argv[])
{/* code *///2、初始化setlocale(LC_ALL, "");ros::init(argc, argv,"rosbag_read");ros::NodeHandle nh;//3、创建bag对象rosbag::Bag bag;//4、打开数据流bag.open("test.bag",rosbag::BagMode::Read);//5、读数据//取出话题、时间戳和消息//先获取消息的集合,再迭代取出消息的字段for (auto &&m : rosbag::View(bag)){//解析std::string topic = m.getTopic();ros::Time time = m.getTime();std_msgs::StringPtr p = m.instantiate<std_msgs::String>();ROS_INFO("话题:%s, 时间戳:%.2f, 消息:%s",topic.c_str(),time.toSec(),p->data.c_str());}//6、关闭bag.close();return 0;
}


http://www.mrgr.cn/news/30120.html

相关文章:

  • Spark-累加器源码分析
  • 图神经网络池化方法
  • miniconda环境配置
  • Java基础笔记:Java基础语法
  • 企业建站如何选择服务器配置?
  • SOMEIP_ETS_117: SD_Entry_references_options_of_same_kind
  • Redis淘汰策略与持久化
  • 一篇文章教你搞定缓存三兄弟(缓存雪崩、缓存击穿、缓存穿透)
  • 快手IP归属地怎么设置别的地方
  • 汇兴智造两年业绩未达标:大客户还兼任股东,资产负债率远高同行
  • Linux基础3-基础工具4(git),冯诺依曼计算机体系结构
  • 软件总体测试计划方案、验收测试、集成测试、测试报告、测试大纲等测试资料合集(Word原件)
  • 你还在为写好Prompt而头疼吗,带你走进DSPy-Program LLMs之初体验
  • 基于JavaSwing实现的酒店管理系统
  • Android插件化(四)基础之文件存储
  • Java线程---锁机制
  • 【记录一下】jenkins的安装与部署教程
  • 从北大张泽民院士团队的研究成果中寻找医学AI未来的发展方向|个人观点·24-09-19
  • 【日记】书荒了(337 字)
  • 耐压110V茂睿芯MK9019可以向下兼容MK9016