在终端中运行ROS2节点时,节点的日志信息会在终端中显示出来,但是这种方式呈现的日志比较凌乱,所以ROS2提供了一个专门用于管理日志信息的可视化工具——rqt_console。今天我们就来看看这个工具是如何使用的。
1.启动
首先打开一个新的终端,使用如下指令即可启动rqt_console:
ros2 run rqt_console rqt_console
在打开的窗口中,我们可以看到三个子窗口。最上边一个窗口会显示所有ROS2系统中的日志,是内容最多的,如果我们想做筛选,可以在中间的窗口中选择日志级别,此时中间窗口则会剔除无关级别的日志,如果我们想在日志中搜索某一字符串,那就可以在最下边的窗口中输入,确任后该窗口只显示包含此字符串的日志。中间和下边的窗口还可以添加更多筛选规则。 我们来启动小海龟仿真器试一试。
ros2 run turtlesim turtlesim_node
2.在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中就会弹出很多警告信息:
3.日志级别
ROS2中的日志分成五个级别,级别自高到低分别是:
- Fatal:致命级,描述系统为了自我保护即将终止的消息
- Error:错误级,描述非致命但是会阻碍程序运行的消息
- Warn:警告级,描述不损坏功能运行但是预期之外的行为的消息
- Info:信息级,描述系统正常运行时事件和状态消息
- Debug:调试级,描述系统一步一步运行的详细消息
ROS2中默认开启的日志级别是Info,会自动显示info级别以上的所有日志,包括Info、Warn、Error、Fatal。 运行节点时,我们也可以修改允许发布的日志级别,比如我们只想显示Warn级别以上的日志,可以这样:
ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
这时启动的仿真器就只会向外发布Warn级别以上的日志了,Info和Debug级别的日志都是看不到的。 rqt_console工具可以帮助我们有效的查看机器人系统中的日志信息,提高调试、测试、开发的效率,快速找到你想要看到的日志。