Skip to content

使用 rqt_console

目标: 了解 rqt_console,一个用于检查日志消息的工具。

教程级别: 初级

预计用时: 5 分钟

rqt_console 是一个 GUI 工具,用于查看 ROS 2 中的日志消息。 通常,日志消息会直接显示在终端中。 而 rqt_console 可以持续收集这些消息,让你更有条理地浏览、过滤和保存它们,甚至可以重新加载已保存的日志文件,方便日后查看。

节点通过日志输出事件和状态信息,这些信息通常供用户参考。

你需要安装 rqt_console 和 turtlesim。

和往常一样,不要忘记在每一个新打开的终端中 source ROS 2。

在一个新终端中使用以下命令启动 rqt_console:

Terminal window
$ ros2 run rqt_console rqt_console

rqt_console 窗口将会打开:

console

控制台顶部区域用于显示系统日志消息。

中间区域可以按严重级别排除特定消息,点击右侧的加号按钮还能添加更多排除过滤器。

底部区域用于高亮显示包含指定字符串的消息,同样支持添加多个过滤器。

现在在一个新终端中使用以下命令启动 turtlesim:

Terminal window
$ ros2 run turtlesim turtlesim_node

为了产生供 rqt_console 显示的日志消息,我们让乌龟撞墙试试。 在一个新终端中,输入以下 ros2 topic pub 命令(在话题教程中有详细介绍):

Terminal window
$ ros2 topic pub -r 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}"

由于上述命令会以固定速率发布话题消息,乌龟会不断撞向墙壁。 在 rqt_console 中,你将看到 Warn 严重级别的相同消息反复出现,如下所示:

warn

在运行 ros2 topic pub 命令的终端中按 Ctrl+C,即可停止乌龟撞墙。

ROS 2 的 logger 级别按严重程度排序:

  1. Fatal
  2. Error
  3. Warn
  4. Info
  5. Debug

每个级别的确切含义并无严格标准,但通常可以这样理解:

  • Fatal 消息表示系统即将终止,以尽量避免自身受损。
  • Error 消息表示严重问题,虽不一定会损坏系统,但会阻碍正常运行。
  • Warn 消息表示出现了意外行为或不理想的结果,可能暗示更深层的问题,但不会直接影响功能。
  • Info 消息用于报告事件和状态更新,确认系统正按预期运行。
  • Debug 消息会详细记录系统执行过程中的每一步。

默认级别是 Info,也就是说你只会看到默认级别及更高严重级别的消息。

通常,只有 Debug 消息会被隐藏,因为它是唯一低于 Info 的级别。 例如,如果将默认级别设置为 Warn,则只会看到 Warn、Error 和 Fatal 级别的消息。

你可以在首次启动 /turtlesim 节点时,通过 remapping 来设置默认 logger 级别。 在终端中输入以下命令:

Terminal window
$ ros2 run turtlesim turtlesim_node --ros-args --log-level WARN

现在你不会看到上次启动 turtlesim 时控制台中出现的那些初始 Info 级别消息了,因为 Info 消息的优先级低于新的默认级别 Warn。

如果你需要仔细查看系统产生的日志消息,rqt_console 会非常有用。 你可能出于各种原因需要检查日志,通常是为了定位问题以及追溯导致问题的一系列事件。

下一个教程将教你如何使用 ROS 2 launch 一次性启动多个节点。