第 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.0 概念 - 作用 - 组成
- 2.1 rqt 安装启动与基本使用
- 2.2 rqt 常用插件:rqt_graph
- 2.3 rqt 常用插件:rqt_console
- 2.4 rqt 常用插件:rqt_plot
- 2.5 rqt 常用插件:rqt_bag
1 rosbag
机器人传感器获取到的信息,有时我们可能需要时时处理,有时可能只是采集数据,事后分析,比如:
机器人导航实现中,可能需要绘制导航所需的全局地图,地图绘制实现,有两种方式
方式1:可以控制机器人运动,将机器人传感器感知到的数据时时处理,生成地图信息。
方式2:同样是控制机器人运动,将机器人传感器感知到的数据留存,事后,再重新读取数据,生成地图信息。两种方式比较,显然方式2使用上更为灵活方便。
- 在ROS中关于数据的留存以及读取实现,提供了专门的工具: rosbag
1.0 概念 - 作用 - 本质
概念
- 是用于录制和回放 ROS 主题的一个工具集
作用
- 实现了数据的复用,方便调试、测试
本质
- rosbag本质也是 ros的节点,当录制时,rosbag是一个订阅节点,可以订阅话题消息并将订阅到的数据写入磁盘文件;当重放时,rosbag是一个发布节点,可以读取磁盘文件,发布文件中的话题消息。
1.1 rosbag 命令行
- 需求:ROS 内置的乌龟案例并操作,操作过程中使用 rosbag 录制,录制结束后,实现重放
实现方式
启动窗口1:roscore
启动窗口2:rosrun turtlesim turtlesim_node
启动窗口3:rosrun turtlesim turtle_teleop_key
- 准备:创建目录保存录制的文件
mkdir ./xxx
cd xxx
Copy
- 开始录制:ctrl + c 录制结束
rosbag record -a -O 目标文件
rosbag record -a -O bags/hello.bag
操作小乌龟一段时间,结束录制使用 ctrl + c,在创建的目录中会生成bag文件。
- 查看文件
rosbag info 文件名
rosbag info bags/hello tab补齐
- 回放文件
rosbag play 文件名
rosbag play bags/hello tab补齐
重启乌龟节点,会发现,乌龟按照录制时的轨迹运动
1.2 rosbag 使用_编码
命令实现不够灵活,可以使用编码的方式,增强录制与回放的灵活性,本节将通过简单的读写实现演示rosbag的编码实现。
1.2.1 C++ 写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;
}
1.2.2 C++ 读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;
}
2 rqt 工具箱
在 ROS 中使用了一些实用的工具,比如: ros_bag 用于录制与回放、tf2_tools 可以生成 TF 树 … 这些工具大大提高了开发的便利性,但是也存在一些问题: 这些工具的启动和使用过程中涉及到一些命令操作,应用起来不够方便,在ROS中,提供了rqt工具箱,在调用工具时以图形化操作代替了命令操作,应用更便利,提高了操作效率,优化了用户体验。
2.0 概念 - 作用 - 组成
概念
- ROS基于 QT 框架,针对机器人开发提供了一系列可视化的工具,这些工具的集合就是rqt
作用
- 可以方便的实现 ROS 可视化调试,并且在同一窗口中打开多个部件,提高开发效率,优化用户体验
组成:rqt 工具箱组成有三大部分
- rqt——核心实现,开发人员无需关注
- rqt_common_plugins——rqt 中常用的工具套件
- rqt_robot_plugins——运行中和机器人交互的插件(比如: rviz)
2.1 rqt 安装启动与基本使用
- 安装:一般只要你安装的是desktop-full版本就会自带工具箱
如果需要安装可以以如下方式安装
$ sudo apt-get install ros-noetic-rqt
$ sudo apt-get install ros-noetic-rqt-common-plugins
- 启动
rqt 启动方式有两种:
方式1:rqt
方式2:rosrun rqt_gui rqt_gui
- 基本使用
启动 rqt 之后,可以通过 plugins 添加所需的插件
2.2 rqt 常用插件:rqt_graph
- 简介:可视化显示计算图
- 启动:可以在 rqt 的 plugins 中添加,或者使用rqt_graph启动
- 乌龟跟随案例
- turtle1是乌龟GUI节点,key是键盘控制节点,只控制第1个乌龟运动,pub1/2订阅乌龟位姿信息产生坐标系相对关系并发布,向tf发布坐标变换,产生相对关系,control控制第2个。control订阅坐标变换关系。并生成速度关系。
- 圆圈是节点,方框是话题
2.3 rqt 常用插件:rqt_console
- 简介:rqt_console 是 ROS 中用于显示和过滤日志的图形化插件
- 准备:编写 Node 节点输出各个级别的日志信息
/* ROS 节点:输出各种级别的日志信息*/
#include "ros/ros.h"int main(int argc, char *argv[])
{ros::init(argc,argv,"log_demo");ros::NodeHandle nh;ros::Rate r(0.3);while (ros::ok()){ROS_DEBUG("Debug message d");ROS_INFO("Info message oooooooooooooo");ROS_WARN("Warn message wwwww");ROS_ERROR("Erroe message EEEEEEEEEEEEEEEEEEEE");ROS_FATAL("Fatal message FFFFFFFFFFFFFFFFFFFFFFFFFFFFF");r.sleep();}return 0;
}
启动:
- 可以在 rqt 的 plugins 中添加,或者使用rqt_console启动
2.4 rqt 常用插件:rqt_plot
- 简介:图形绘制插件,可以以 2D 绘图的方式绘制发布在 topic 上的数据
- 准备:启动 turtlesim 乌龟节点与键盘控制节点,通过 rqt_plot 获取乌龟位姿
- 启动:可以在 rqt 的 plugins 中添加,或者使用rqt_plot启动
启动窗口1
roscore
启动窗口2
rosrun turtlesim turtlesim_node
启动窗口3
rosrun turlesim turtle_teleop_key
启动窗口4
rqt_plot 或者rqt 里面 visualization里面的plot
2.5 rqt 常用插件:rqt_bag
- 简介:录制和重放 bag 文件的图形化插件
- 准备:启动 turtlesim 乌龟节点与键盘控制节点
- 启动:可以在 rqt 的 plugins 中添加,或者使用rqt_bag启动
启动窗口1
roscore
启动窗口2
rosrun turtlesim turtlesim_node
启动窗口3
rosrun turlesim turtle_teleop_key
启动窗口4
rqt_bag
第 5 章 ROS 常用组件 4 —— rosbag / 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常用组件] --- rosbag
1 认识rosbag 概念:是用于录制和回放 ROS 主题的一个工具集. 作用:实现了数据的复用,方便调试.测试. 本质: rosbag本质也是ros的节点,当录制时,rosbag是一个订阅节点,可以 ...
- 深蓝学院古月居第四讲——ros常用组件笔记
目录 1.Launch启动文件 2.TF坐标变换(默认保存10s之内的所有坐标系关系) 3.可视化显示与仿真工具 1.Launch启动文件 Launch启动文件:通过XML文件实现多节点的配置和启动( ...
- rqt teb参数动态调试工具_16.ROS常用工具:Rviz/rqt
>>点赞,收藏+关注,理财&技术不迷路<< RViz(The Robot Visualization tool可视化工具): 作用:把一些抽象的复杂的传感器信息以图像的 ...
- ROS系列:常用组件(一)
文章目录 五.ROS常用组件 1.TF坐标变换 1.1 坐标msg消息 1.2 静态坐标变换 五.ROS常用组件 在ROS中内置了一些比较使用的工具:本章主要介绍ROS内置如下组件: TF坐标变换,实 ...
- java网站开发模式有哪些_第7章JavaWeb常用开发模式.ppt
第7章JavaWeb常用开发模式.ppt 7.4.4 JSP+Servlet+JavaBean案例 --学生体质信息管理系统 [例7-10]采用JSP+Servlet+JavaBean+JDBC+My ...
- 【ROS】ROS常用命令
[ROS]ROS常用命令 一.前言 二.常用命令 2.1 ROS shell 命令 2.2 ROS执行命令 2.2.1 `roscore` [选项] 2.2.2 rosrun:运行ROS节点 2.2. ...
- 第十四章:Element-ui组件库
第十四章:Element-ui组件库 一.常用的UI组件库 1.1 移动端常用UI组件库 Vant组件库 Mint组件库 Cube组件库 1.2 PC端常用UI组件库 Element UI组件库 饿了 ...
- ROS基础一之ROS常用指令集合
ROS常用指令集合 ROS常用指令集合 1.功能包相关指令 2.topic相关指令 3.service相关指令 4.msg/srv相关指令 5.param相关指令 6.node相关指令 7.rqt相关 ...
最新文章
- 泛在电力物联网(能源互联网+物联网)浅析
- 2019-06-26 某小型支付公司面试经历
- java 异常堆栈日志分析_Java 进阶之路:深入解读 Java 异常堆栈丢失原因
- CISSP的成长之路(十六):复习访问控制(1)
- Java native方法String转char*以及String[]转char**
- springboot添加webmagic_SpringBoot+Solr + webmagic JD商品爬取数据,放入solr中做搜索
- View Agent Direct-Connection注册表
- 安装chrome Jsonview插件
- 【实验】设计一个加密算法(英文、中文)
- roseha for linux,ROSEHA for linux安装与操作文档
- 国际计算机网络信息与安全管理,计算机信息网络国际联网单位安全管理制度
- python断言语句_Python断言assert的用法代码解析
- Garbled Circuits介绍 - 56 Yao协议的实现 总结
- Caml 多表关联查询
- IESM项目实训三——语音合成工具类
- 十年匠心,让国漫精致到羽翼丰满!《老鹰抓小鸡》幕后制作分享
- Python生成汉字字库文字,以及转换为文字图片
- 实习小结·改进代码(解决爆栈问题)
- PPP概念股一览 PPP概念股盈利预测
- 在线检查英文语法神器