跳到正文

Wiki

最佳化日誌

約 2 分鐘閱讀

本文由簡體中文內容確定性轉換,並受版本化術語表保護。

在實際應用上,我們很少使用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定義: