概念
rqt_console是一款GUI工具,在ROS 2中我们可以用它来管理一些节点的输出消息日志,比如通过过滤关键词得到我们关心的消息内容,也可以先保存这些内容再在一个方便的时间进行查看,以帮助我们分析过程,解决问题。
动动手
启动rqt_console
使用下面的命令启动:
$ros2 run rqt_console rqt_console
如上图所示,该控制台窗口由三部分组成,最上面的是Displaying Messages,显示系统中输出的消息,中间的是Exclude Messages,可以通过设置日志严重等级来过滤显示,可以通过右侧的+号添加更多的包含过滤条件,最下面的那区域,可以通过添加指定的字符串内容来高亮显示包含这些字符串的日志内容,我们依然可以通过右侧的+号来添加更多的过滤条件关键词。
利用小海龟产生日志消息
先运行/turtlesim节点(控制节点不运行):
$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}}"
我们看到在rqt_console第一个区域有好多等级为Warn的日志消息产生,我们在发布主题的终端CTRL+C关掉发布端。
日志等级
几种级别
ROS 2的日志记录是按下面的严重程度来划分的(由上级下,严重程度逐步减小):
Fatal
Error
Warn
Info
Debug
然而在实际中并没有一个严格的定义标准来说明达到什么指标了我们就认为它是Fatal还是Error,这由我们个人根据实际情况来自由的调整即可,下面对这些严重程度做个一般解释:
Fatal:消息表明系统将终止以保护自己免受损害;
Error:消息表示重大问题,这些问题不一定会损坏系统,但会妨碍系统正常运行;
Warn:消息表示意外的活动或不理想的结果,这可能代表更深层次的问题,但不会直接损害功能;
Info:消息指示事件和状态更新,作为系统按预期运行的过程结果反馈;
Debug:消息详细说明了系统执行的整个逐步过程。
系统默认最低日志严重等级为Info,也即意味着不会出现等级为Debug的日志。如果我们设置默认的等级为Warn,那么在日志中我们只能看到Fatal、Error、Warn这几种级别的日志。
设置日志默认级别
ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
我们可以尝试按上面的命令设置下日志记录的默认级别为Warn。
rqt_console算是一种过程调试手段,一旦系统中出现了什么问题,我们可以通过日志信息来进行定位和分析,还是比较方便的。
本篇完。