ROS学习(六)可视化和调试工具二

文章目录

  • 前言
  • 一、检测系统状态
    • 1、检测节点、主题、服务和参数
    • 2、使用rqt_graph在线检测节点状态图
  • 二、设置动态参数
  • 三、出现异常时使用roswtf
  • 四、可视化节点诊断
  • 五、绘制标量数据图
  • 六、图像可视化
  • 七、3D可视化
  • 八、保存与回放数据
    • 1、消息记录包文件
    • 2、在消息记录包中记录数据
    • 3、回放消息记录包文件
    • 4、检查消息记录包文件的主题和消息
  • 九、应用rqt与rqt_gui插件
  • 总结


前言

ROS自带了大量功能强大的工具,其中包括消息日志系统、诊断消息、可视化及检测工具。

一、检测系统状态

1、检测节点、主题、服务和参数

ROS提供了很多CLI(命令行界面)命令,具体可参考ROS学习(三)里面的命令。同时也提供了一些GUI层面的工具。
如下,启动类似于进程表的rqt_top的图形化工具, 可以快速查看正在使用的所有节点和资源。

rosrun rqt_top rqt_top

如下,启动rqt_topic图形化工具,显示主题调试信息, 包括发布者、 接收者、 发布速率和发布的消息。 可以查看消息字段并选择你想要订阅的主题以分析带宽和速率(Hz),以及查看最新发布的消息。 注意, 锁定的主题通常不会持续发布, 所以不会看到任何关于它们的信息。

rosrun rqt_topic rqt_topic

如下,启动rqt_publisher图形化工具, 在一个界面中管理rostopic pub命令的多个实例。

rosrun rqt_publisher rqt_publisher 

2、使用rqt_graph在线检测节点状态图

如下,启动rqt_graph图形化工具, 显示ROS会话的当前状态。

rosrun rqt_graph rqt_graph

二、设置动态参数

参考ROS学习(四)ROS编程初体验里面的动态参数,如下,启动rqt_reconfigure图形化工具, 显示ROS会话的当前状态。

rosrun rqt_reconfigure rqt_reconfigure

三、出现异常时使用roswtf

如下,使用该工具来检测给定功能包中所有组件的潜在问题。

roswtf

如下,使用该工具来帮助catkin诊断错误(这些错误通常在CMakeLists.txt和package.xml文件中)。

catkin_lint -W2 --pkg chapter3_tutorials

使用参数-W2,报告错误、警告和通知。使用参数-W0,仅报告错误。使用参数-W1,报告错误和警告(这是默认值)。使用该命令前,必须提前安装catkin_lint,安装方法如下:

sudo apt install python-catkin-lint

四、可视化节点诊断

如下,rqt_runtime_monitor通过diagnostics主题直接发布可视化信息

rosrun rqt_runtime_monitor  rqt_runtime_monitor

当系统很大时,可以使用diagnostic_aggregator汇总诊断信息。 在diagnostics_agg里处理和归类diagnostics主题的消息并重新发布。 这些汇总诊断消息通过rqt_robot_monitor实现可视化。 诊断汇总器通过一个配置文件进行配置, 参看chapter3_tutorials中的config/diagnostic_aggregator.yaml文件, 并使用AnalyzerGroup定义不同的analyzers(分析器) :

rosrun rqt_robot_monitor  rqt_robot_monitor  

五、绘制标量数据图

如下,利用rqt_plot绘制标量数据图。

rosrun rqt_plot rqt_plot /temp/data

其中,temp代表温度主题;
data代表实际的温度值;
如果是一个Vector3的消息,用法如下:

rosrun rqt_plot rqt_plot /accel/x:y:z

还可以将每个字段分开绘制,但是rqt_plot不直接支持这个功能,需要使用rqt_gui将三个图标手动分开:

rosrun rqt_gui rqt_gui

六、图像可视化

此处借用后续讲解的摄像头案例。
如下,使用image_view在窗口中展示给定主题的图像,还可以通过图形界面上的按钮将图片保存到硬盘里。

rosrun image_view image_view image:=/camera

此外,使用rqt_image_view,还可以在一个窗口中查看多个图像。

rosrun rqt_image_view  rqt_image_view 

七、3D可视化

ROS中的rviz或者rqt_rviz工具,集成了能够完成3D数据处理的openGL界面,能够将摄像头、激光雷达或kinect传感器的数据在模型化世界中展示出来。
启动rqt_rviz

rosrun rqt_rviz rqt_rviz

八、保存与回放数据

ROS能够存储所有节点通过主题发布的消息。 它能够创建一个消息记录包(bag) 文件来保存消息,并包含消息的所有字段参数和时间戳。这允许离线回放实验并模拟真实的状态, 包括消息的时间延迟。 甚至ROS工具能够非常有效地在处理高速数据流时以充足的数据组织方式来实现这一切。

1、消息记录包文件

所有消息在记录时都会打上时间戳, 不仅是标头里的时间戳, 还包括消息记录包文件中的功能包。 用于记录的时间戳和标头内的时间戳之间的区别在于前者是消息被记录时的时间, 而后者是消息产生和发布时的时间。

消息记录包文件中存储的数据使用二进制格式。 这个容器使用的数据结构非常特殊, 它能够支持超高速数据流的处理和记录。 这是记录数据最关键的功能。 当然, 这和消息记录包文件的大小也是相关的。 但随着文件的增大会牺牲数据的记录速度。

每个消息与发布它的主题都被记录下来。 因此, 可以指定某个主题进行记录, 或者直接选择全部(使用-a参数) 。 然后, 回放消息记录包文件时, 同样可以通过指明特定主题的名称来选择消息记录包文件中全部主题的某个特定子集进行回放。

2、在消息记录包中记录数据

如下,记录所有的主题:

rosbag record -a

如下,记录特定的主题:

rosbag record /主题名/数据名

可以在启动文件中直接调用rosbag record,如下:
ROS学习(六)可视化和调试工具二_第1张图片

3、回放消息记录包文件

切换到上图中的消息记录包文件所在的文件夹下,使用:

rosbag play 消息记录文件.bag

该回放是在命令行窗口进行的
按下空格键,暂停
按下S键,一步步前进

4、检查消息记录包文件的主题和消息

  1. rosbag查看消息记录包内部的数据
rosbag info 消息记录文件.bag

可以看到创建的日期、 持续时间、文件大小, 以及内部消息的数量和文件的压缩格式(如果有压缩) 。 然后, 我们还会有文件内部数据类型的列表。 最后有主题的列表, 并它们对应的名称、 消息数量和类型。

  1. rqt_bag查看消息记录包内部的数据
    重点在于其带有GUI,而且查看图像、绘制标量数据图、查看消息的RAW结构,用法如下:
rqt_bag 消息记录文件.bag

九、应用rqt与rqt_gui插件

ROS学习(六)可视化和调试工具二_第2张图片
可以运行这个GUI并在窗口上手动添加和排列一些插件,运行方法如下:

rosrun rqt_gui  rqt_gui

总结

该篇为上一篇的延续。内容较多,在以后的学习中熟练运用就好。

你可能感兴趣的:(ROS)