3.3.2 使用rqt_graph在线检测节点状态图
可以用有向图来显示ROS会话的当前状态,其中运行的节点是图中的节点,边为发布者-订阅者在这些节点与主题间的连接。此图形由rqt_graph动态绘制。
为了说明如何使用rqt_graph检测节点、主题和服务,使用以下launch文件同时运行example4和example5节点:
example4节点在两个不同的主题中发布并调用了一个服务。同时,example5节点订阅了这些主题,并提供了一个服务器来响应查询请求并提供反馈数据。一旦这些节点开始运行,我们就能够查询到如下图所示的节点拓扑图:
在上图中,我们看到节点通过主题相连。由于选择Hide Debug,我们不会看到ROS服务器节点rosout以及rosout主题发布到诊断聚合器(diagnostic aggregator)上的日志信息,如我们之前做的那样。取消这个选项就可以显示该节点和主题的调试信息,以便显示ROS服务器和rqt_graph节点本身(如下图所示)。这对于调试大型系统非常有用,因为图可以使其简化。同时,ROS hydro中相同命名空间的节点被分组,例如图像管道的节点:
当系统出现问题时,会一直(而不只是当我们移动鼠标掠过它们时)以红色显示。在这种情况下,选择all topics查看没有连接的主题非常有用,这通常显示由于主题名称拼写错误导致节点之间连接的中断。
当节点在不同的机器上运行时,rqt_graph会显示其强大的高级调试功能,包括节点能否从各自的机器看到对方、列举连接等。
最后,我们可以启用统计查看在主题边上显示的信息速率、带宽,以及写入速率和行速率,如下一个图所示。我们必须在运行rqt_graph之前设置参数来使信息有效:
不幸的是,这些参数ROS hydro目前不可用。它会在ROS indigo中(下一个发行版)出现,也有可能移植回hydro中。