第 14.5 節

优化日志

0瀏覽次數0訪問次數--跳出率--平均停留

在实际应用上,我们很少使用RCLCPP_INFO,原因是打印数据开销太大,像Nvidia Jetson Xavier等工控机设备可能吃不消.

像下方这个图就显示了在树莓派4b下打印的开销:

由于我们想避免那么大的开销,又想在必要时查看打印的数据进行调试,所以我们常采用RCLCPP_DEBUG来打印数据,在必要时期才打印数据.

RCLCPP_DEBUG 的核心作用

  • 调试专用 :仅在调试阶段输出信息,生产环境自动静默
  • 性能优化 :通过编译选项完全移除调试代码,零运行时开销
  • 分级控制 :与其他日志级别(INFO/WARN/ERROR)解耦

打印出来rclcpp_debug的方式:

方式一:

ros2 run <package_name> <node_name> --ros-args --log-level debug

方式二:

from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    return LaunchDescription([
        Node(
            package='my_package',
            executable='my_node',
            name='my_node',
            output='screen',
            parameters=[],
            arguments=['--ros-args', '--log-level', 'debug']
        )
    ])

/opt/ros/humble/include/rcutils/rcutils/logging.h定义:

音乐页