前言
主要介绍以下ROS的一些工具的使用后续也要用到。
一、rosbag
机器人传感器获取到的信息,有时我们可能需要时时处理,有时可能只是采集数据,事后分析,比如:机器人导航实现中,可能需要绘制导航所需的全局地图,地图绘制实现,有两种方式,方式1:可以控制机器人运动,将机器人传感器感知到的数据实时处理,生成地图信息。方式2:同样是控制机器人运动,将机器人传感器感知到的数据留存,事后,再重新读取数据,生成地图信息。两种方式比较,显然方式2使用上更为灵活方便。在ROS中关于数据的留存以及读取实现,提供了专门的工具: rosbag。
1.概念
是用于录制和回放 ROS 主题的一个工具集
2.作用
实现了数据的复用,方便调试、测试。
3.本质
rosbag本质也是ros的节点,当录制时,rosbag是一个订阅节点,可以订阅话题消息并将订阅到的数据写入磁盘文件;当重放时,rosbag是一个发布节点,可以读取磁盘文件,发布文件中的话题消息。实际上这个节点就是一个可执行性的文件。
4.rosbag使用_命令行
1.需求
ROS 内置的乌龟案例并操作,操作过程中使用 rosbag 录制,录制结束后,实现重放。
2.具体实现
1.创建一个保存包的文件夹
mkdir ./xxx
cd xxx
2.打开小乌龟运行程序进行包的录制。
rosbag record -a -o 目标文件
3.查看文件:
rosbag info 文件名
lvl@lvl-Legion-Y7000P-IRX9:~$ rosbag info bags_2025-01-14-15-11-31.bag
path: bags_2025-01-14-15-11-31.bag
version: 2.0
duration: 12.4s
start: Jan 14 2025 15:11:31.59 (1736838691.59)
end: Jan 14 2025 15:11:43.97 (1736838703.97)
size: 114.3 KB
messages: 1530
compression: none [1/1 chunks]
types: geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]rosgraph_msgs/Log [acffd30cd6b6de30f120938c17c593fb]turtlesim/Color [353891e354491c51aabe32df673fb446]turtlesim/Pose [863b248d5016ca62ea2e895ae5265cf9]
topics: /rosout 3 msgs : rosgraph_msgs/Log /turtle1/cmd_vel 5 msgs : geometry_msgs/Twist/turtle1/color_sensor 761 msgs : turtlesim/Color /turtle1/pose 761 msgs : turtlesim/Pose
4.回放文件:
rosbag play 文件名
可以看到在回放时,小乌龟重复之前的路径运动:
5.rosbag使用_编码
1.需求
命令实现不够灵活,可以使用编码的方式,增强录制与回放的灵活性,本节将通过简单的读写实现演示rosbag的编码实现。
2.写实现
3.读实现
这两部分的内容不常用可以了解一下即可。
二、rqt工具箱
之前,在 ROS 中使用了一些实用的工具,比如: ros_bag 用于录制与回放、tf2_tools 可以生成 TF 树 ..... 这些工具大大提高了开发的便利性,但是也存在一些问题: 这些工具的启动和使用过程中涉及到一些命令操作,应用起来不够方便,在ROS中,提供了rqt工具箱,在调用工具时以图形化操作代替了命令操作,应用更便利,提高了操作效率,优化了用户体验。
1.概念
ROS基于QT框架,针对机器人开发提供了一系列可视化的工具,这些工具的集合就是rqt。
2.作用
可以方便的实现 ROS 可视化调试,并且在同一窗口中打开多个部件,提高开发效率,优化用户体验。
3.组成
rqt 工具箱组成有三大部分:
1.rqt——核心实现,开发人员无需关注
2.rqt_common_plugins——rqt 中常用的工具套件
3.rqt_robot_plugins——运行中和机器人交互的插件(比如: rviz)
4.rqt工具箱的基本使用
1.启动
使用下列命令时请确保你的ROS是运行的。
rqt
或者是
rosrun rqt_gui rqt_gui
演示一些功能:
1.小乌龟的话题发布
首先启动小乌龟的GUI,之后进入rqt,选择插件,选择话题,选择信息发布选项,进行设置。
2.小乌龟的服务调用
最终结果:生成一个新的乌龟。
2.rqt常用插件:rqt_graph
之前的学习过程中已经应用过了。
3.rqt常用插件:rqt_console
rqt_console 是 ROS 中用于显示和过滤日志的图形化插件。
/* 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;
}
运行结果:
下面两个窗口分别是过滤指定日志信息、过滤带有关键字的日志信息。
4.rqt常用插件:rqt_plot
1.简介
图形绘制插件,可以以 2D 绘图的方式绘制发布在 topic 上的数据。
2.运行结果:
5.rqt常用插件:rqt_bag
1.简介
录制和重放 bag 文件的图形化插件。
2.运行结果:
结束语
本章主要介绍了ROS中的常用组件,内容如下:
1.rosbag 用于ros话题的录制与回放
2.rqt工具箱,图形化方式调用组件,提高操作效率以及易用性
下一章开始将介绍机器人系统仿真,我们将在仿真环境下,创建机器人、控制机器人运动、搭建仿真环境,并以机器人的视角去感知世界。
以上就是我学习到的内容,如果对您有帮助请多多支持我,如果哪里有问题欢迎大家在评论区积极讨论,我看到会及时回复。