ROS 2 Iron 教程 第一章 CLI Tools 第八节 使用 rqt_console 查看日志
前言
本系列文章是由笔者翻译自ROS 2 官方教程。笔者水平有限,如有错误,还请读者指正。
背景
rqt_console
是 ROS 2 中查看日志的图形化工具。通常,日志信息在你的终端中出现。借助 rqt_console
,你可以随时收集日志信息,以更有条理的方式仔细查看它们、筛选它们、保存它们,甚至重新加载保存的文件以在其他时间查看。
节点使用日志以各种方式输出有关事件和状态的消息。它们的内容通常是用户所关心的,也是信息性的。
先决条件
你将会需要已经安装的rqt_console
和turtlesim
。
一如既往,不要忘记在每个你新打开的终端中添加 ROS 2 启动文件。
任务
1 setup (设置)
在一个新终端中使用如下命令启动rqt_console
:
ros2 run rqt_console rqt_console
rqt_console
窗口将会被打开:
窗口的第一部分将会展示系统的日志消息。
在窗口的中间,你可以以消息的严重级别来筛选日志消息。你也可以使用右边的加号按钮来添加更多日志消息筛选条件。
窗口的底部部分用于突出显示消息,其中也包括你输入的字符串。你也可以在此添加更多筛选条件。
现在使用如下命令在新终端启动turtlesim
:
ros2 run turtlesim turtlesim_node
2 Messages on rqt_console (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 Logger levels (日志级别)
ROS 2 的日志级别按照严重程度排序:
Fatal
Error
Warn
Info
Debug
每个级别所指示的日志内容没有明确的标准,但可以确定的是:
Fatal
消息表明系统将会停止运行,以尝试保护自身免受危害。Error
消息表明不一定会危害系统的重大问题,但可能会造成系统运行错误。Warn
消息表明意外的活动或是非理想结果,这些活动或是问题可能代表着更深层次的问题,但不一定会完全造成系统运行错误。Info
消息表明事件和状态的更新,它被当作是系统是否按照预期运行的视觉验证。Debug
消息表明系统执行的详细步骤。
默认日志消息级别为Info
。你将会只看到默认日志级别以及更严重的日志信息。
通常,只有Debug
级别的消息会被隐藏,因为只有它的严重级低于Info
。举个例子,你将日志默认严重级设为Warn
,你将会只能看到Warn
,Error
和Fatal
严重级的消息。
3.1 Set the default logger level (设置默认日志级别)
你可以在运行turtlesim
节点时使用重映射来设置默认日志级别。在终端中输入如下命令:
ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
现在你将不会再看到最初Info
严重级的日志消息,而在此之前它们将会出现在终端之中。这是因为Info
严重级的日志消息在新设置的`Warn严重级下。
总结
rqt_console
在你需要仔细检查系统日志消息时可以十分有用。你可能会想要查找特定原因的消息,这通常被用于寻找系统出错的位置以及导致出错的原因。