第 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定義:

音乐页