目标: 了解rqt_console
这个可以用来查看log消息的工具。
背景知识
rqt_console
是ROS2中用来查看log消息的图形化界面。比较经典的情况是,log消息会出现在你的终端。通过rqt_console
,你可以采集这些数据,后续可以仔细的查看它,从里面过滤出你需要的消息,保存这些消息,甚至从保存的文件中将它们加载出来,再次对消息进行分析。
节点通过log以多种多样的方式输出它关注的事件和状态的消息。为了方便用户,这些内容通常都是有信息量的。
前提条件
首先,你需要先安装rqt_console以及turtlesim package](https://blog.csdn.net/weixin_42499608/article/details/117985676),并且不要忘记在启动的每个新的终端上source ROS 2。如何你对上面的内容还没看过的,可以戳一下,过去了解一下。
任务
1. 设置
利用下面的命令,在一个新的终端上启动rqt_console
:
ros2 run rqt_console rqt_console
rqt_console
的窗口会打开:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pqsCcABI-1625555483673)(https://docs.ros.org/en/foxy/_images/console.png)]
窗口的第一个部分,会展示你系统中的log信息。
在中间一个窗口,你拥有通过严重程度来过滤消息的选项。你还可以通过右侧的加号按钮增加更多的过滤器。
底部的窗口会高亮那边包含你输入的字符串的消息。这个部分同样允许你增加更多的过滤器。
现在,通过下面的命令在一个新的终端中启动turtlesim
:
ros2 run turtlesim turtlesim_node
通过rqt_console查看消息
为了产生log消息,以便在rqt_console
中显示出来,让我们尝试将小海龟移动到墙里。在一个新的终端,输入下面的指令(至于指令的意思,具体介绍实在话题的教程中):
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
严重级别的消息不断的重复出现,类似下面的样子:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CuTzPLS6-1625555483682)(https://docs.ros.org/en/foxy/_images/warn.png)]
在你运行ros2 topic pub
命令的终端按下Ctrl+c
,让你的小海龟停止撞墙。
3. logger的等级
3 Logger levels
ROS2的logger等级是按照严重程度排序的:
Fatal
Error
Warn
Info
Debug
这里没有准确的标准来判断每个严重程度意味着什么问题,但是大改可以这么理解:
Fatal
消息意味着它为了保护自己不受损害即将终止。Error
消息意味着出现的重大的问题,虽然不致于损害系统,但是已经不能正确的执行功能。Warn
消息意味着出现了没有意料到的活动,或者出现了非理想中的结果,这些可能暗示着会有一些更深层的问题,但是不影响功能上正常运行。Info
消息指的是事件和状态的更新,往往是通过可视化验证系统正按照预期的状态运行。Debug
消息是系统逐步运行的细节。
默认的等级是Info
。你将会看到默认等级以及更严重的等级的消息。
正常情况下,只有Debug
消息是隐藏的,因为只有它是比Info
更加不重要的。比如,如果你设置了默认的等级是Warn
,你将只会看到严重等级是Warn
,Error
以及Fatel
的消息。
3.1 Set the default logger level
你可以在首次运行/turtlesim
节点的时候,通过remapping设置默认logger的等级。在终端输入下面的命令:
ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
现在,你就看不到上一次你启动turtlesim
的时候打印出来的哪些属于Info
级别的警告了,因为Info
级别的消息的优先级比现在的默认严重等级要低。
总结
当你想要仔细的检查系统的log的时候,rqt_console
是非常有效的。通常是,当你需要查找一下哪里出问题了,或者哪些事件已经触发了,你可能都需要去检查系统的log。
下一步
下面的教程会讲述如何写launch文件。
如果你想了解更多关于ROS2或者机器人的东西,可以关注我或者订阅我的专栏:ROS 2专栏。