第3章
可视化和调试工具
ROS附带了大量功能强大的工具,帮助用户和开发人员可视化和调试代码,以便检测并解决软硬件问题。其中包括消息日志系统(类似log4cxx)、诊断消息、可视化以及检测工具。这些工具展示了哪些节点正在运行和它们是如何连接的。
本章我们还会展示如何用GDB调试器调试ROS节点,介绍用于日志记录的API,以及如何设置日志记录级别。接着,我们将解释如何用ROS工具集检测哪些进程正在运行以及它们之间通信的内容。例如,在下图所示的系统可视化图中可以看到正在运行的节点以及用连线表示的数据流。这个工具是rqt_graph,这里显示的是REEM机器人在Gazebo仿真中运行的节点和主题。
从图中我们可以看到多个关于机械臂、肢体和头部的控制器、MoveIt!的move_group节点、抓取和放置操作服务以及play_motion节点的预存储动作。其他节点发布joint_states、大量机器人控制器以及移动底盘的手柄控制等信息。
同样,本章会介绍标量数据的时序绘图工具,视频流数据的可视化图,以及用于不同类型数据的3D可视化工具rviz(或rqt_rviz)等,如下图所示:
可以使用下面命令运行上图的REEM机器人仿真:
注意,在开始安装此仿真前,请认真阅读下面网页的使用说明:http://wiki.ros.org/Robots/REEM。
在本节中,将介绍以下内容:
如何在ROS中调试和优化代码。
介绍在代码中添加消息日志并设置不同的级别、命名、特定条件和流选项。这里我们将解释rqt_logger_level和rqt_console接口,它们可以分别设置节点错误级别和消息可视化。
介绍如何通过列表来检测ROS系统状态,包括运行的节点、主题、服务和它们之间传递信息的行为以及ROS节点管理器中声明的参数等。我们将介绍以有向图形式显示主题和节点的rqt_graph,和可以用来修改动态参数的rqt_reconfigure。
讲解如何使用runtime_monitor和robot_monitor接口可视化诊断信息。
讲解如何使用rqt_plot绘制特定消息的标量数据。对于非标量数据,我们将讲解ROS中的其他rqt工具,例如用rqt_image_view显示图像以及用rqt_rviz以3D形式显示多维数据。还包括如何可视化标记和交互式标记。
介绍坐标系以及如何将它们集成到ROS消息和可视化工具之中。以及如何使用rqt_tf_tree来可视化转换坐标系树Transform Frame(tf)。
讲解如何保存主题发送的消息,以及如何重播它们用于仿真或测试目的,并介绍rqt_bag接口。
最后,将介绍rqt_gui接口,以及如何在一个GUI窗口中排列显示它们。
大部分rqt工具可以在终端输入名称运行,例如rqt_console,但有时不行,必须使用rosrun rqt_reconfigure rqt_reconfigure,注意名字虽然是重复的,但其实前一个是功能包的名称,后一个是节点名称。