使用 rqt_console
查看日志
学会提问:
- 为什么要聪明的提问:《提问的智慧》精读注解版
- 如何聪明的提问:关于“提问的智慧”和“别像傻瓜一样提问”-CSDN博客
目标: 了解 rqt_console
,这是一种用于内省日志消息的工具。
01. 背景知识
rqt_console
是一个 GUI 工具,用于 introspect ROS 2 中的日志消息。通常,日志消息会显示在您的终端中。使用 rqt_console
,您可以随着时间的推移收集这些消息,以更有条理的方式仔细查看它们,过滤它们,保存它们,甚至重新加载保存的文件以在不同时间进行introspect。
节点使用日志以多种方式输出有关事件和状态的消息。而我们用户大多将各种自己感兴趣的内容通过日志内容进行输出、打印。
02. 准备工作
您需要安装 rqt_console 和 turtlesim。
不要忘了每次打开一个新终端时都要 source
ROS 2 的 setup 文件:
source /opt/ros/jazzy/setup.zsh
03. 学习任务
3.1 设置
使用以下命令在新终端中启动 rqt_console
:
ros2 run rqt_console rqt_console
rqt_console
窗口将打开:
控制台的第一部分是显示来自系统的日志消息的位置。
在中间,您可以选择通过排除严重性级别来筛选消息。您还可以使用右侧的加号按钮添加更多排除过滤器。
底部部分用于突出显示包含您输入的字符串的消息。您也可以向此部分添加更多过滤器。
现在使用以下命令在新终端中启动 turtlesim
:
ros2 run turtlesim turtlesim_node
3.2 Messages on rqt_console
为了生成日志消息供 rqt_console
显示,让我们让撞墙。在新终端中,输入下面的 ros2 topic pub
命令(在 topics 教程中详细讨论):
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.3 Logger 级别
ROS 2 的记录器级别按严重性排序:
Fatal
Error
Warn
Info
Debug
每个级别所表示的内容没有确切的标准,但可以安全地假设:
Fatal
致命消息指示系统将终止以尝试保护自身免受损害。Error
表示重大问题,这些问题不一定会损坏系统,但会阻止系统正常运行。Warn
消息表示意外活动或非理想结果,这些结果可能代表更深层次的问题,但不会直接损害功能。Info
消息指示事件和状态更新,用于直观地验证系统是否按预期运行。Debug
消息详细说明了系统执行的整个分步过程。
默认级别为 Info
。您只会看到 default 严重性级别和更严重级别的消息。
通常,只有 Debug
消息被隐藏,因为它们是唯一比 Info
严重性低的级别。例如,如果将默认级别设置为 Warn
,则只会看到严重性为 Warn
、Error
和 Fatal
的消息。
3.4 设置默认 logger 级别
您可以在首次使用 remapping 运行 /turtlesim
节点时设置默认记录器级别。在终端中输入以下命令:
ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
现在,你不会看到上次启动 turtlesim
时控制台中出现的初始 Info
级别消息。这是因为 Info
消息的优先级低于新的默认严重性 Warn
。
04. 总结
如果您需要仔细检查系统中的日志消息,rqt_console
会非常有用。出于多种原因,您可能希望检查日志消息,通常是为了找出出错的位置以及导致错误的一系列事件。