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;
}
相关文章:
ROS学习笔记13——rosbag功能包的简单使用
rosbag是用于录制和回放 ROS 主题的一个工具集,实现了数据的复用,方便调试和测试。rosbag本质也是ros的节点,当录制时,rosbag是一个订阅节点,可以订阅话题消息并将订阅到的数据写入磁盘文件;当重放时&#…...
Python Flask网页开发基本框架
注:Flask详细学习请见Flask学习合集。 直接上代码: app.py from flask import Flaskapp Flask(__name__)app.route("/") def hello():return "Hello, World!"if __name__ "__init__":app.run(host "127.0.0.1", port…...
Mybatis-plus进阶篇(五)
文章目录 条件构造器补充知识TypeHandlerWrappers示例: 线程安全性示例: 使用 Wrapper 自定义 SQL示例:使用方法 使用注解查询使用XML配置查询链式调用与Lambda式调用 条件构造器补充知识 TypeHandler 在 wrapper 中使用 typeHandler 需要特…...
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
一、介绍 交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高…...
【QT】定时器使用
文章目录 关于 Qt 定时器使用的注意细节总结实例-检查工具使用周期时间是否合理UI设计头文件 remind.h源文件 remind.cpp实现效果 关于 Qt 定时器使用的注意细节总结 一、创建与初始化 使用 QTimer 类来创建定时器。可以在构造函数中指定父对象,确保定时器在正确的…...
虚拟机:3、(待更)WSL2安装Ubuntu系统+实现GPU直通
WSL2实现linux子系统GPU直通 安装WSL2和Ubuntu 见https://blog.csdn.net/bule_shake/article/details/135992375 问题:wsl --update进度卡住 如果命令wsl --update进度一直为0,可以先运行wsl --shutdown,然后再次升级。 微软商店打不开、…...
CSP-J2024年全真模拟题 阅读程序篇2
因为明天考试,这回给大家准备了超详细的解析~ 22.程序中 n 和 m 只有输入正整数,程序的输出值才可能是 YES A.对B.错 23.程序中用到了递归函数 bool fun(int n) A.对B.错 24.若输入 n 和 m 都是素数,程序的输出值…...
几种手段mfc140u.dll丢失的解决方法,了解mfc140u.dll
在使用Windows操作系统时,许多用户可能会遇到“找不到mfc140u.dll”或“mfc140u.dll未找到”的错误提示。这个错误通常是由于该文件丢失或损坏所致。本文将详细介绍mfc140u.dll文件的作用、丢失的原因及其解决方法,帮助您快速恢复系统的正常运行。 一、m…...
Scrapy爬虫框架 Spider Middleware 爬虫页中间件
在当今的互联网时代,数据的收集和分析变得越来越重要,爬虫技术作为数据获取的重要手段,受到广泛关注。Scrapy 是一个广受欢迎的 Python 爬虫框架,它以其高效、灵活和易于扩展的特点,成为了开发者的首选工具之一。Scrapy 框架中的中间件(Spider Middlewares)是扩展和定制…...
localectl 命令:系统语言、键盘布局和区域设置
一、命令简介 localectl 是 Linux 系统中用于查询和配置系统语言、键盘布局和区域设置的命令。它属于 systemd 系统和服务管理器的一部分,允许用户通过简单的命令行接口更改与本地化相关的配置。 相关命令: 如果是时间相关的设置࿰…...
《微信小程序实战(3) · 推广海报制作》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
SS-MUSIC
SS-MUSIC 相干信号源带来的缺秩问题什么是中心对称阵列什么是前后向平均技术什么是 SS-MUSIC 算法SS-MUSIC 能解相干的原因SS-MUSIC 改进算法总结参考文献 本文讨论针对一维均匀线阵(ULA,Uniform Linear Array)的空间平滑 MUSIC(S…...
Spring Cloud Gateway组件
Spring Cloud Gateway是Spring Cloud生态系统中的一个关键组件,它基于Spring Framework 5、Spring Boot 2和Project Reactor等技 术构建,为微服务架构提供了强大且灵活的网关服务。以下是对Spring Cloud Gateway的详细介绍:一、概述 Spring …...
激发AI创造力:掌握Prompt提示词的高效提问方法
AI内容创作的核心:提示词Prompt 在AI内容创作中,提示词(Prompt)是关键因素,能有效引导AI生成高质量、符合预期的内容。通过合理组织提示词,创作者可以大幅提升AI输出的准确性和专业度。掌握提示词的编写技…...
江科大笔记—STM32课程简介
课程简介...
使用 nvm 管理 node 版本:如何在 macOS 和 Windows 上安装使用nvm
🔥 个人主页:空白诗 文章目录 一、引言二、nvm的安装与基本使用2.1 macOS安装nvm2.1.1 使用 curl 安装2.1.2 使用 Homebrew 安装 2.2 Windows安装nvm2.2.1 下载 nvm-windows2.2.2 安装 nvm-windows 2.3 安装node2.4 切换node版本 三、常见问题及解决方案…...
【项目开发 | Python】基于“羊了个羊“风格的消除类小游戏
原创文章,不得转载。 目标:使用 Python 开发"羊了个羊"风格的消除类小游戏,合理运用 AIGC 工具提高开发效率;使用文生图工具实现图片设计等工作。 文章目录 项目背景项目介绍+项目展示游戏逻辑概述主界面游戏界面获胜界面失败界面附加功能项目细节项目测试测试样…...
云服务器使用
最近搭建一个内网穿透工具,推荐一个云服务器: 三丰台:https://www.sanfengyun.com/ 作为学生党这个服务器是免费的可以体验使用!可以使用免费虚拟主机和云服务器,写一个申请的基本步骤方便大家构建 申请步骤&#x…...
sqli-lab靶场学习(四)——Less11-14(post方法)
前言 第1-10关都是get方法,本关开始进入post方法。其实post也好get也好,本质都差不多,使用的技巧也基本相同。 Less11 第11关打开是一个输入用户名密码的界面 显然登陆对话框会使用post方式提交,这里我们尝试在Username一栏通过…...
GBDT算法原理及其公式推导过程
GBDT(Gradient Boosting Decision Tree,梯度提升决策树)是一种集成学习方法,主要用于回归和分类任务。它的基本思想是通过迭代地构建一系列弱学习器(通常是决策树),并将这些弱学习器组合成一个强…...
2026届学术党必备的降重复率平台推荐榜单
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 正在逐渐发生改变的是学术写作模式,借助的是人工智能论文工具,它的核…...
ORA-12518:Oracle 监听程序无法分发客户端连接原因及解决方法
本文主要讲解ORA-12518:Oracle监听程序无法分发客户端连接的原因分析及解决方法。问题描述数据中台的同步任务有时会报错如下:ORA-12518, TNS:listener could not hand off client connection。意即Oracle监听程序无法分发客户端连接,原因分析只是有时候…...
判断当前页面是否以「添加到主屏幕」应用形态启动 (快捷方式\APP、套壳包等启动)
这里写自定义目录标题判断当前页面是否以「添加到主屏幕」应用形态启动判断当前页面是否以「添加到主屏幕」应用形态启动 /*** 判断当前页面是否以「添加到主屏幕」应用形态启动* - iOS Safari: navigator.standalone* - 标准 PWA: display-mode 为 standalone/fullscreen/min…...
《C 头文件》
《C 头文件》 引言 C 头文件是 C 语言编程中不可或缺的一部分。它们包含了 C 语言标准库中的各种函数、宏定义和类型定义,为程序员提供了丰富的编程工具。本文将详细介绍 C 头文件的作用、分类、常用头文件及其在编程中的应用。 一、C 头文件的作用 C 头文件的主要作用有以…...
单片机代码版本管理工具横向评测与应用
1. 单片机开发中的代码版本管理痛点作为一名在嵌入式领域摸爬滚打多年的工程师,我深知单片机项目开发中最让人头疼的场景之一:当你需要对比两个版本的程序差异时,面对密密麻麻的汇编和C代码,用肉眼逐行比对简直是场噩梦。特别是在…...
深度强化学习在Python中的自动驾驶策略探索:运用DDPG与PPO算法技术实现及实验结果报告
python基于深度强化学习的自动驾驶策略研究 关键技术:DDPG、PPO算法、深度强化学习 内容包含:python程序实验结果报告深夜的模拟器里,一辆红色小车正在空荡的街道上蛇形前进,方向盘像喝醉似的左右乱转。这可不是什么灵异事件&…...
Acetic Acid-PEG-Silane,与蛋白质、抗体或核酸的氨基通过酰胺键连接
一.名称英文名:AA-PEG-Silane,Acetic Acid-PEG-Silane,Silane-PEG-AA,Silane-PEG-Acetic Acid中文名:乙酸聚乙二醇三乙氧基硅烷,乙酸-PEG-三乙氧基硅烷,三乙氧基硅烷聚乙二醇羟基,硅…...
终极指南:Linkerd与Rancher集成的完整实践方案
终极指南:Linkerd与Rancher集成的完整实践方案 【免费下载链接】linkerd Old repo for Linkerd 1.x. See the linkerd2 repo for Linkerd 2.x. 项目地址: https://gitcode.com/gh_mirrors/li/linkerd Linkerd作为一款强大的服务网格工具,与Ranche…...
委托的全面知识总结(C#)
一.定义与本质委托是干什么的?委托就是用来存 方法 的容器你可以把一个方法当成 数据 一样传递1.什么是委托委托是C#中类型安全的函数指针,它是一种“类型”,可以存储,调用,传递一个或多个方法的引用2.核心本质委…...
新手福音:在快马平台体验vscode codex式辅助,轻松写出第一行代码
最近在学编程,发现很多新手(包括我自己)最头疼的就是面对空白的编辑器不知道从哪下手。传统的学习方式要么是直接看教程照抄代码,要么是硬啃文档记语法,很容易劝退。直到我发现了InsCode(快马)平台的智能辅助功能&…...
