ROS自带了大量功能强大的工具,其中包括消息日志系统、诊断消息、可视化及检测工具。
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
如下,启动rqt_graph图形化工具, 显示ROS会话的当前状态。
rosrun rqt_graph rqt_graph
参考ROS学习(四)ROS编程初体验里面的动态参数,如下,启动rqt_reconfigure图形化工具, 显示ROS会话的当前状态。
rosrun rqt_reconfigure rqt_reconfigure
如下,使用该工具来检测给定功能包中所有组件的潜在问题。
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
ROS中的rviz或者rqt_rviz工具,集成了能够完成3D数据处理的openGL界面,能够将摄像头、激光雷达或kinect传感器的数据在模型化世界中展示出来。
启动rqt_rviz
rosrun rqt_rviz rqt_rviz
ROS能够存储所有节点通过主题发布的消息。 它能够创建一个消息记录包(bag) 文件来保存消息,并包含消息的所有字段参数和时间戳。这允许离线回放实验并模拟真实的状态, 包括消息的时间延迟。 甚至ROS工具能够非常有效地在处理高速数据流时以充足的数据组织方式来实现这一切。
所有消息在记录时都会打上时间戳, 不仅是标头里的时间戳, 还包括消息记录包文件中的功能包。 用于记录的时间戳和标头内的时间戳之间的区别在于前者是消息被记录时的时间, 而后者是消息产生和发布时的时间。
消息记录包文件中存储的数据使用二进制格式。 这个容器使用的数据结构非常特殊, 它能够支持超高速数据流的处理和记录。 这是记录数据最关键的功能。 当然, 这和消息记录包文件的大小也是相关的。 但随着文件的增大会牺牲数据的记录速度。
每个消息与发布它的主题都被记录下来。 因此, 可以指定某个主题进行记录, 或者直接选择全部(使用-a参数) 。 然后, 回放消息记录包文件时, 同样可以通过指明特定主题的名称来选择消息记录包文件中全部主题的某个特定子集进行回放。
如下,记录所有的主题:
rosbag record -a
如下,记录特定的主题:
rosbag record /主题名/数据名
切换到上图中的消息记录包文件所在的文件夹下,使用:
rosbag play 消息记录文件.bag
该回放是在命令行窗口进行的
按下空格键,暂停
按下S键,一步步前进
rosbag info 消息记录文件.bag
可以看到创建的日期、 持续时间、文件大小, 以及内部消息的数量和文件的压缩格式(如果有压缩) 。 然后, 我们还会有文件内部数据类型的列表。 最后有主题的列表, 并它们对应的名称、 消息数量和类型。
rqt_bag 消息记录文件.bag
可以运行这个GUI并在窗口上手动添加和排列一些插件,运行方法如下:
rosrun rqt_gui rqt_gui
该篇为上一篇的延续。内容较多,在以后的学习中熟练运用就好。