在 ROS2 中,日志系统是调试和维护机器人应用的重要工具。相比直接用 print,使用 ROS2 的日志接口(如 self.get_logger().info()、warn()、error() 等)更具优势.
1. ROS2 日志工具简介
-
日志级别
ROS2 支持多种日志级别,包括:
DEBUG
:调试信息INFO
:普通运行信息WARN
:警告信息ERROR
:错误信息FATAL
:严重错误信息
-
统一格式
日志输出会自动带有时间戳、节点名、日志级别等元数据,便于追踪和分析。
-
日志收集与管理
ROS2 会自动将日志信息输出到终端,并保存到日志文件(通常在
~/.ros/log/
目录下)。你可以通过这些日志文件回溯历史运行情况。 -
日志过滤与配置
你可以通过环境变量(如RCUTILS_LOGGING_BUFFERED_STREAM
、RCUTILS_LOGGING_SEVERITY_THRESHOLD
)或命令行参数,设置日志输出的详细程度和过滤条件。例如,只显示WARN
及以上级别的日志。
2. 检索和分析
-
日志文件查看
日志文件通常以节点名和时间戳命名,保存在
~/.ros/log/
目录。你可以用cat
、less
、grep
等命令行工具快速检索关键信息,例如:grep "ERROR" ~/.ros/log/<具体日志路径及日志名>.log
-
rqt_console 工具
ROS2 提供了
rqt_console
图形化工具,可以实时查看和过滤日志消息,支持按级别、节点、时间等多种方式筛选,非常适合调试和运行时监控。rqt_console
如下图:
-
日志分析与追踪
通过日志文件,你可以分析节点的运行状态、错误发生的时间和原因、系统性能瓶颈等。对于复杂系统,日志是定位问题和优化系统的重要依据。
-
总结
- 开发和调试时,建议始终使用 ROS2 的日志接口而不是 print,这样可以获得更丰富、更易管理的运行信息。
- 运行后,可以通过日志文件和工具进行历史数据检索、问题追踪和性能分析,极大提升系统的可维护性和可靠性。