目标:了解 rqt_console,这是一个用于内省日志消息的工具。教程级别:入门级时间: 5 分钟
目录
- 背景
- 前置条件
- 任务
- 1 环境准备
- 2 rqt_console 上的消息
- 3 日志级别
- 总结
- 后续步骤
本教程需要使用的命令如下:
$ ros2 run rqt_console rqt_console
$ ros2 run turtlesim turtlesim_node
$ 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}}"
$ ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
$ ros2 run rqt_console rqt_console$ ros2 run turtlesim turtlesim_node
$ 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}}"
$ ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
背景
rqt_console是一个用于内省 ROS 2 中日志消息的 GUI 工具。通常,日志消息会显示在终端中。使用 rqt_console,您可以随时间收集这些消息,以更有组织的方式仔细查看它们,过滤它们,保存它们,甚至重新加载保存的文件以便在另一个时间进行内省。
节点使用日志以多种方式输出有关事件和状态的消息。内容为了方便用户,通常是信息性的。
前置条件
您需要安装rqt_console 和 turtlesim(可以参考之前的教程)。和往常一样,别忘了在打开的每个新终端中加载 ROS 2 环境。
任务
1 环境准备
使用以下命令在新终端中启动rqt_console:
$ ros2 run rqt_console rqt_consolerqt_console窗口将会打开:

控制台的第一个区域是系统中日志消息显示的地方。
在中间区域,您可以选择通过排除严重性级别来过滤消息。您还可以使用右侧的加号按钮添加更多的排除过滤器。
底部区域用于高亮显示包含您输入字符串的消息。您也可以向此区域添加更多的过滤器。
现在使用以下命令在新终端中启动turtlesim:
$ ros2 run turtlesim turtlesim_node2 rqt_console 上的消息
为了生成供 rqt_console 显示的日志消息,让我们让乌龟撞到墙上。在一个新终端中,输入以下ros2 topic pub命令(在话题教程中有详细讨论):
$ 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严重性级别的消息一遍又一遍地显示,如下所示:

在您运行ros2 topic pub命令的终端中按Ctrl+C,以阻止乌龟继续撞墙。
3日志级别
ROS 2 的日志级别按严重性排序:
- Fatal(致命)
- Error(错误)
- Warn(警告)
- Info(信息)
- Debug(调试)
每个级别具体指示什么并没有确切的标准,但可以安全地假设:
- Fatal消息表示系统将终止,以试图保护自身免受损害。
- Error消息表示重大问题,不一定会损坏系统,但会阻止其正常运行。
- Warn消息表示意外活动或不理想的结果,可能代表更深层次的问题,但不会直接损害功能。
- Info消息表示事件和状态更新,作为系统按预期运行的视觉验证。
- Debug消息详细说明了系统执行的整个逐步过程。
默认级别是Info。您只会看到默认严重性级别及更高级别的消息。
通常,只有Debug消息被隐藏,因为它们是唯一比Info级别低的级别。例如,如果您将默认级别设置为Warn,您只会看到严重性为Warn、Error和Fatal的消息。
3.1 设置默认日志级别
您可以在首次运行/turtlesim节点时使用重映射来设置默认日志级别。在终端中输入以下命令:
$ ros2 run turtlesim turtlesim_node --ros-args --log-level WARN现在您将看不到上次启动 turtlesim 时控制台中出现的初始Info级别消息。这是因为Info消息的优先级低于新的默认严重性级别Warn。
总结
如果您需要仔细检查系统中的日志消息,rqt_console会非常有帮助。您可能出于多种原因想要检查日志消息,通常是为了找出哪里出了问题以及导致该问题的一系列事件。
后续步骤
下一个教程将教您如何使用ROS 2 Launch同时启动多个节点。
本文档完整翻译自 ROS 2 Lyrical 官方文档,仅用于学习交流。
夜雨聆风