【ROS2】高级:如何使用 ros2_tracing 跟踪和分析应用程序

本教程展示了如何使用 ros2_tracing https://github.com/ros2/ros2_tracing来跟踪和分析 ROS 2 应用程序。在本教程中,应用程序将是 performance_test。https://gitlab.com/ApexAI/performance_test

 概述

 本教程涵盖:

  1. 运行和跟踪 performance_test 运行

  2. 使用 tracetools_analysis  https://github.com/ros-tracing/tracetools_analysis 分析跟踪数据以绘制回调持续时间

 先决条件

本教程针对实时 Linux 系统。请参阅实时系统设置教程  https://docs.ros.org/en/jazzy/Tutorials/Miscellaneous/Building-Realtime-rt_preempt-kernel-for-ROS-2.html 。但是,如果您使用的是非实时 Linux 系统,本教程也适用。

安装和构建

按照安装说明在 Linux 上安装 ROS 2。https://docs.ros.org/en/jazzy/Installation.html

 便条

本教程通常适用于所有受支持的 Linux 发行版。但是,您可能需要调整一些命令。

安装 babeltrace 和 ros2trace 。

sudo apt-get update
sudo apt-get install -y babeltrace ros-jazzy-ros2trace ros-jazzy-tracetools-analysis

源 ROS 2 安装并验证跟踪是否已启用:

source /opt/ros/jazzy/setup.bash
ros2 run tracetools status

您应该在输出中看到 Tracing enabled 。

然后创建一个工作区,并克隆 performance_test 和 tracetools_analysis 。

cd ~/
mkdir -p tracing_ws/src
cd tracing_ws/src/
git clone https://gitlab.com/ApexAI/performance_test.git
git clone https://github.com/ros-tracing/tracetools_analysis.git
cd ..

使用 rosdep 安装依赖项。

rosdep update
rosdep install --from-paths src --ignore-src -y

然后为 ROS 2 构建和配置 performance_test 。请参阅其文档。https://gitlab.com/ApexAI/performance_test/-/tree/master/performance_test#performance_test

colcon build --packages-select performance_test --cmake-args -DPERFORMANCE_TEST_RCLCPP_ENABLED=ON

接下来,我们将进行一个 performance_test 实验并追踪它。

 追踪

 第 1 步:追踪 

在一个终端中,配置工作区并设置跟踪。运行命令时,将打印出 ROS 2 用户空间事件列表。它还会打印出包含结果跟踪的目录路径(在 ~/.ros/tracing 下)。

# terminal 1
cd ~/tracing_ws
source install/setup.bash
ros2 trace --session-name perf-test --list

按回车键开始跟踪。

cxy@ubuntu2404-cxy:~/tracing_ws$ ros2 trace --session-name perf-test --list
UST tracing enabled (35 events)
  ros2:rcl_init
  ros2:rcl_node_init
  ros2:rmw_publisher_init
  ros2:rcl_publisher_init
  ros2:rclcpp_publish
  ros2:rclcpp_intra_publish
  ros2:rcl_publish
  ros2:rmw_publish
  ros2:rmw_subscription_init
  ros2:rcl_subscription_init
  ros2:rclcpp_subscription_init
  ros2:rclcpp_subscription_callback_added
  ros2:rmw_take
  ros2:rcl_take
  ros2:rclcpp_take
  ros2:rcl_service_init
  ros2:rclcpp_service_callback_added
  ros2:rcl_client_init
  ros2:rcl_timer_init
  ros2:rclcpp_timer_callback_added
  ros2:rclcpp_timer_link_node
  ros2:rclcpp_callback_register
  ros2:callback_start
  ros2:callback_end
  ros2:rcl_lifecycle_state_machine_init
  ros2:rcl_lifecycle_transition
  ros2:rclcpp_execu
### ROS 2 Trace Tool 使用方法及教程 ROS 2 提供了多种工具来帮助开发者调试分析系统性能,其中 `ros2_tracing` 是一个重要的工具,用于跟踪分析 ROS 2 系统中的事件。以下是关于 `ros2_tracing` 的使用方法相关教程的内容。 #### 1. 安装 `ros2_tracing` 在开始使用之前,需要确保安装了 `ros2_tracing` 工具。可以通过以下命令安装: ```bash sudo apt install ros-<distro>-ros-tracing ``` 将 `<distro>` 替换为当前使用ROS 2 发行版名称(例如 `humble` 或 `foxy`)[^1]。 #### 2. 配置环境变量 为了启用跟踪功能,需要设置一些环境变量。这些变量决定了哪些事件会被记录以及记录的详细程度。常用的环境变量包括: - `ROS_TRACING_ENABLED`: 设置为 `1` 以启用跟踪。 - `TRACEPOINT_LOGLEVEL`: 控制跟踪日志的详细程度,范围从 `0`(最低)到 `7`(最高)。 - `LTTNG_SESSION_NAME`: 指定 LTTng 会话名称。 配置示例: ```bash export ROS_TRACING_ENABLED=1 export TRACEPOINT_LOGLEVEL=7 export LTTNG_SESSION_NAME=my_trace_session ``` #### 3. 启动跟踪会话 使用 LTTng 工具创建并启动跟踪会话: ```bash lttng create $LTTNG_SESSION_NAME lttng enable-events -u ros2* lttng start ``` 上述命令分别完成了会话创建、启用 ROS 2 相关事件以及启动跟踪会话的操作[^1]。 #### 4. 运行目标节点 在跟踪会话启动后,运行需要分析ROS 2 节点。例如: ```bash ros2 run turtlesim turtle_teleop_key ``` #### 5. 停止跟踪并保存数据 完成测试后,停止跟踪并保存数据: ```bash lttng stop lttng destroy babeltrace /path/to/trace/directory ``` `babeltrace` 命令用于将生成的二进制跟踪文件转换为可读的文本格式[^1]。 #### 6. 分析跟踪数据 可以使用 `rti_connextdds` 提供的工具或其他可视化工具来分析生成的跟踪数据。此外,也可以结合 Python 脚本或自定义工具对数据进行进一步处理。 --- ### 示例代码:自动化跟踪流程 以下是一个简单的 Bash 脚本,用于自动化 `ros2_tracing` 的启动停止过程: ```bash #!/bin/bash # 设置环境变量 export ROS_TRACING_ENABLED=1 export TRACEPOINT_LOGLEVEL=7 export LTTNG_SESSION_NAME=my_trace_session # 创建跟踪会话 lttng create $LTTNG_SESSION_NAME lttng enable-events -u ros2* lttng start # 运行目标节点 ros2 run turtlesim turtle_teleop_key # 停止跟踪并保存数据 lttng stop lttng destroy babeltrace /path/to/trace/directory ``` --- ### 注意事项 - 确保已正确安装并配置 LTTng 工具链,因为 `ros2_tracing` 依赖于 LTTng 来捕获事件。 - 在 Windows 系统上,由于 RoboStack-ros-humble 不支持 PowerShell,建议使用 WSL(Windows Subsystem for Linux)来运行相关命令。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值