使用 rqt_console 查看日志
目标:了解 rqt_console——一款用于查看日志消息的工具。
难度级别:初学者
预计时间:5 分钟
目录
- 背景
- 前提条件
- 任务
- 设置
- rqt_console 上的消息
- 日志级别
- 总结
- 下一步
背景
rqt_console 是 ROS 2 中用于查看日志消息的 GUI 工具。通常,日志消息会直接显示在终端中,而通过 rqt_console,你可以长期收集这些消息,以更有条理的方式近距离查看、过滤消息,还能保存消息文件,甚至在后续重新加载已保存的文件进行查看。
节点会通过日志输出与事件和状态相关的消息,这些消息内容通常具有参考价值,方便用户了解系统运行情况。
前提条件
需提前安装 rqt_console 和 turtlesim 功能包。
和往常一样,每个新打开的终端都需先执行 ROS 2 的环境配置文件(source setup 文件)。
任务
1. 设置
-
打开新终端,输入以下命令启动
rqt_console:ros2 run rqt_console rqt_console
此时会弹出
rqt_console窗口,窗口分为三个核心区域:- 顶部区域:显示系统输出的日志消息;
- 中间区域:可通过排除不同严重级别的消息来过滤日志,点击右侧的“+”号按钮还能添加更多排除过滤器;
- 底部区域:用于高亮包含指定字符串的消息,同样支持添加多个过滤条件。
-
再打开一个新终端,启动
turtlesim节点:ros2 run turtlesim turtlesim_node
2. 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}}"
-r 1表示以 1 Hz 的频率持续发布话题消息,因此乌龟会不断向前移动并撞到墙壁。
此时在 rqt_console 窗口中,会反复显示带有 Warn(警告) 级别的日志消息,内容为乌龟撞到墙壁的提示。

完成演示后,在运行 ros2 topic pub 命令的终端中按 Ctrl+C,停止乌龟继续撞墙。
3. 日志级别
ROS 2 的日志级别按严重程度从高到低排序如下:
- Fatal(致命)
- Error(错误)
- Warn(警告)
- Info(信息)
- Debug(调试)
虽然各日志级别的定义没有绝对统一的标准,但通常遵循以下含义:
- Fatal:表示系统即将终止运行,以避免自身受到严重损害;
- Error:表示系统出现重大问题,虽不一定会损坏系统,但会导致系统无法正常运行;
- Warn:表示出现意外情况或非理想结果,可能暗示存在深层问题,但不会直接影响功能正常使用;
- Info:表示事件和状态更新,用于直观验证系统是否按预期运行;
- Debug:详细记录系统执行的每一步流程,用于开发调试。
日志级别默认规则
- 默认日志级别为 Info,此时只能看到默认级别及更高级别的消息(即 Info、Warn、Error、Fatal);
- 默认情况下,只有 Debug 级别的消息会被隐藏,因为它是唯一比 Info 级别更低的日志类型;
- 若修改默认级别,例如设为 Warn,则只会显示 Warn、Error、Fatal 级别的消息。
3.1 设置默认日志级别
启动节点时,可通过重映射(remapping)设置默认日志级别。在终端中输入以下命令,以 Warn 级别启动 /turtlesim 节点:
ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
此时 rqt_console 窗口中不会显示上次启动 turtlesim 时出现的 Info 级初始消息——因为 Info 级别的优先级低于新设置的默认级别(Warn)。
总结
当你需要仔细检查系统日志消息时,rqt_console 会非常实用。查看日志消息的场景有很多,最常见的是排查问题根源,了解导致问题发生的一系列事件过程。
下一步
下一篇教程将介绍如何使用 ROS 2 启动文件(Launch)一次性启动多个节点。
启动多个节点
目标:使用命令行工具一次性启动多个节点。
难度级别:初学者
预计时间:5 分钟
目录
- 背景
- 前提条件
- 任务
- 运行启动文件
- (可选)控制 Turtlesim 节点
- 总结
- 下一步
背景
在大部分入门教程中,你需要为每个要运行的节点打开一个新终端。当你构建的系统越来越复杂、需要同时运行的节点越来越多时,反复打开终端并重新输入配置信息会变得十分繁琐。
启动文件(Launch File)允许你一次性启动并配置多个包含 ROS 2 节点的可执行文件。
使用 ros2 launch 命令运行单个启动文件,即可一次性启动整个系统——包括所有节点及其配置。
前提条件
开始本教程前,请按照 ROS 2 安装页面(ROS 2 Installation page)上的说明安装 ROS 2。
本教程中使用的命令默认你已按照对应操作系统的二进制包安装指南(Linux 系统为 deb 包)完成安装。若你通过源码编译安装,仍可参考本教程操作,但 setup 文件的路径可能会有所不同,且无法使用 sudo apt install ros-<distro>-<package> 命令(该命令在初级教程中频繁使用)。
若你使用 Linux 且不熟悉 shell 操作,可参考相关教程学习基础用法。
和往常一样,每个新打开的终端都需先执行 ROS 2 的环境配置文件(source setup 文件)。
任务
1. 运行启动文件
打开一个新终端,输入以下命令:
ros2 launch turtlesim multisim.launch.py
该命令会执行如下启动文件(Python 格式):
from launch import LaunchDescription
import launch_ros.actions
def generate_launch_description():
return LaunchDescription([
launch_ros.actions.Node(
namespace='turtlesim1', package='turtlesim',
executable='turtlesim_node', output='screen'),
launch_ros.actions.Node(
namespace='turtlesim2', package='turtlesim',
executable='turtlesim_node', output='screen'),
])
注意:上述启动文件采用 Python 编写,但你也可以使用 XML 或 YAML 格式创建启动文件。关于 ROS 2 不同启动文件格式的对比,可参考教程《Using XML, YAML, and Python for ROS 2 Launch Files》(使用 XML、YAML 和 Python 编写 ROS 2 启动文件)。
执行命令后,会启动两个 turtlesim 节点,对应弹出两个 Turtlesim 仿真窗口。

目前无需深入理解启动文件的具体内容,后续的 ROS 2 启动文件专题教程会提供更详细的说明。
2. (可选)控制 Turtlesim 节点
这些节点启动后,你可以像操作其他 ROS 2 节点一样控制它们。例如,打开两个额外的终端,输入以下命令,可让两只乌龟向相反方向旋转:
-
第二个终端(控制第一个 Turtlesim 节点的乌龟):
ros2 topic pub /turtlesim1/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: 1.8}}" -
第三个终端(控制第二个 Turtlesim 节点的乌龟):
ros2 topic pub /turtlesim2/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: -1.8}}"
执行上述命令后,你会看到两个 Turtlesim 窗口中的乌龟分别沿顺时针和逆时针方向旋转,效果类似下图:

总结
到目前为止,你完成的操作核心意义在于:通过一条命令启动了两个 turtlesim 节点。当你学会编写自己的启动文件后,就能以类似方式,通过 ros2 launch 命令一次性启动多个节点,并完成它们的配置。
下一步
在下一篇教程《Recording and playing back data》(记录与回放数据)中,你将学习另一个实用工具——ros2 bag。
1257

被折叠的 条评论
为什么被折叠?



