ROS2性能分析
发布时间:2026-05-12 16:39:29.411 文章来源:AiSoftCloud 浏览次数:28 下载次数:1 

Ros2 trace

ros2 trace是ros2的官方追踪工具(基于LTTng),用来记录节点、话题、回调、生命周期等运行时事件,便于性能分析、延迟排查、卡顿定位。

安装

  1. # 1. 安装 LTTng 与依赖
  2. sudo apt update
  3. sudo apt install -y lttng-tools liblttng-ust-dev python3-babeltrace
  4. # 2. 安装 ros2trace 与分析工具(替换 humble 为你的发行版)
  5. sudo apt install -y ros-humble-ros2trace ros-humble-tracetools-analysis
  6. # 3. 检查是否启用追踪
  7. source /opt/ros/humble/setup.bash
  8. ros2 run tracetools status
  9. # 输出:Tracing enabled 即可
  10. ```{insert\_element\_1\_}
  11. ---
  12. ### 二、常用命令(直接复制用)
  13. #### 1)开始追踪(默认捕获所有 ROS 2 事件)
  14. ```bash
  15. ros2 trace

1、会创建会话:~/.ros/tracing/session-xxxxxx
按 Enter 停止追踪

2、自定义事件:

  1. # 只抓 ros2:* 所有事件
  2. ros2 trace -u 'ros2:*'
  3. # 抓回调 + 话题 + 服务
  4. ros2 trace -u 'ros2:callback*' 'ros2:topic*' 'ros2:service*'

3、指定会话名(方便查找)

  1. ros2 trace -n my_test_trace

三、查看原始追踪数据

  1. # 用 babeltrace 可读格式输出
  2. babeltrace ~/.ros/tracing/session-xxxxxx | less
  3. # 过滤关键字(如 callback)
  4. babeltrace ~/.ros/tracing/session-xxxxxx | grep callback
  5. ```{insert\_element\_3\_}
  6. ---
  7. ### 四、简单分析(画回调耗时图)
  8. ```bash
  9. # 1. 生成分析文件
  10. ros2 run tracetools_analysis analyze --path ~/.ros/tracing/session-xxxxxx
  11. # 2. 画回调耗时时序图
  12. ros2 run tracetools_analysis plot_callback_durations
  13. ```{insert\_element\_4\_}
  14. ---
  15. ### 五、常见报错
  16. - `Permission denied`:
  17. ```bash
  18. sudo usermod -aG tracing $USER
  19. newgrp tracing

Tracing disabled:
确认已安装 lttng-tools,且 ros2 run tracetools status 显示 enabled。

六、一句话场景建议

查延迟 / 卡顿:ros2 trace -u ‘ros2:callback
查消息丢失:ros2 trace -u ‘ros2:topic‘
查生命周期 / 节点启停:ros2 trace -u ‘ros2:lifecycle*’

是否需要重新编译ros2应用程序

ROS 2 核心(rcl/rclcpp)自带 trace 埋点
官方编译好的 ROS 2 包(apt 安装的)默认开启了 trace
你的程序只是调用 ROS 2 接口 → 自动带 trace 能力

如果显示 Tracing disabled 必须处理,但依然不用重新编译你的程序!

  1. 安装完整依赖(必须)
    1. sudo apt install -y ros-humble-tracetools ros-humble-tracetools-read
  2. 安装 LTTng 内核追踪(核心)
    1. sudo apt install -y lttng-tools liblttng-ust-dev linux-modules-extra-$(uname -r)
  3. 加载追踪模块(立刻生效)

    1. sudo modprobe lttng_tracer
    2. sudo modprobe lttng_types

    现在再检查!

    1. ros2 run tracetools status

    正确输出:

    1. Tracing enabled

    最后再给你权限(避免报错)

    1. sudo usermod -aG tracing $USER
    2. newgrp tracing

如果出现以下问题:

  1. ubuntu@ubuntu-YogaPro-16s-IRP8:~/docker/ubuntu22_arm$ sudo modprobe lttng_tracer
  2. sudo modprobe lttng_types
  3. modprobe: FATAL: Module lttng_tracer not found in directory /lib/modules/6.8.0-110-generic
  4. modprobe: FATAL: Module lttng_types not found in directory /lib/modules/6.8.0-110-generic

使用的是桌面版 Ubuntu 内核,没有自带 LTTng 追踪内核模块!所以 modprobe 会报错:找不到模块。

  1. sudo apt install -y lttng-modules-dkms
  2. sudo modprobe lttng

应该显示:
Tracing enabled

追踪用户空间:

  1. sudo apt install -y ros-humble-ros2trace ros-humble-tracetools
  2. ros2 trace --ust

ROS2 Humble 官方 apt 安装的版本 = 默认关闭 trace,需要源码编译ros2开启trace功能:

  1. mkdir -p ~/ros2_humble_src/src
  2. cd ~/ros2_humble_src
  3. curl -O https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos
  4. vcs import src < ros2.repos
  5. rosdep init
  6. rosdep update
  7. rosdep install --from-paths src --ignore-src -r -y
  8. colcon build \
  9. --cmake-args \
  10. -DTRACETOOLS_ENABLED=ON \
  11. -DTRACETOOLS_LTTNG_ENABLED=ON \
  12. --packages-up-to tracetools ros2trace

编译完检查:

  1. source ~/ros2_humble_src/install/setup.bash
  2. ros2 run tracetools status

正确输出:

  1. Tracing enabled
更多文章可关注公众号
aisoftcloud