您正在阅读的是开发版本的文档。有关最新发布的版本,请访问 Jazzy.

如何使用 ros2_tracing 跟踪和分析应用程序

本教程介绍如何使用 ros2_tracing 来跟踪和分析 ROS 2 应用程序。本教程中的应用程序将是 性能测试.

概述

本教程包括

  1. 运行和跟踪一个 性能测试 运行

  2. 使用 分析 来绘制回调持续时间

先决条件

本教程针对实时 Linux 系统。参见 实时系统设置教程.不过,如果您使用的是非实时 Linux 系统,本教程也可以正常使用。

安装和建造

按照以下步骤在 Linux 上安装 ROS 2 安装说明.

备注

本教程一般适用于所有支持的 Linux 发行版。不过,你可能需要调整某些命令。

安装 babeltraceros2trace.

苏都 apt-get 更新 sudo apt-get 安装 -y babeltrace ROS-rolling-ros2trace 滚动工具分析

获取 ROS 2 安装的源代码,并验证是否启用了跟踪功能:

消息来源 /opt/ros/rolling/setup.bash ros2 运行 tracetools 地位

您应该看到 追踪 启用 在输出中。

然后创建一个工作区,并克隆 性能测试分析.

CD ~/ mkdir -p tracing_ws/src
CD tracing_ws/src/ git 复制 https://gitlab.com/ApexAI/performance_test.git git 复制 https://github.com/ros-tracing/tracetools_analysis.git
CD ..

使用 rosdep 安装依赖项

rosdep 更新 安装 --从路径 来源 --忽略源代码 -y

然后构建和配置 性能测试 参见其 文献资料.

胶管 构建 --软件包--选择 性能测试 --cmake-args -dperformance_test_rclcpp_enabled=关于

接下来,我们将运行 性能测试 实验和跟踪。

追踪

步骤 1:跟踪

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

# 终端 1
CD ~/tracing_ws
消息来源 install/setup.bash ros2 踪影 -会话名称 测试 --列表

按回车键开始追踪。

步骤 2:运行应用程序

在第二个终端中,输入工作区的源代码。

# 终端 2
CD ~/tracing_ws
消息来源 install/setup.bash

然后运行 性能测试 或您自己的应用程序)。我们只需创建一个实验,让一个节点尽可能快地向另一个节点发布 ~1 MB 的信息,持续 60 秒,使用第二高实时优先级,这样就不会干扰关键的内核线程。我们需要运行 性能测试 作为 根基 以便能够使用实时优先级。

# 终端 2
苏都 ./install/performance_test/lib/performance_test/perf_test -c rclcpp-single-threaded-executor -p 1 -s 1 -r 0 -m 阵列 1m --可靠性 可靠 --最大运行时间 60 --使用 rt-prio 98

如果最后一条命令不起作用(出现类似 "加载共享库时出错 "的错误),请运行下面略有不同的命令。这是因为,出于安全考虑,我们需要手动通过 *PATH 环境变量,以便找到某些共享库(见 这一解释).

# 终端 2
苏都 环境 路径=";$PATH"; ld_library_path=";$ld_library_path"; ./install/performance_test/lib/performance_test/perf_test -c rclcpp-single-threaded-executor -p 1 -s 1 -r 0 -m 阵列 1m --可靠性 可靠 --最大运行时间 60 --使用 rt-prio 98

备注

如果不使用实时内核,只需运行

# 终端 2
./install/performance_test/lib/performance_test/perf_test -c rclcpp-single-threaded-executor -p 1 -s 1 -r 0 -m 阵列 1m --可靠性 可靠 --最大运行时间 60

步骤 3:验证跟踪

实验完成后,在第一个终端再次按回车键停止跟踪。使用 babeltrace 来快速查看结果轨迹。

babeltrace ~/.ros/tracing/perf-test | 更少

上述命令的输出是原始通用跟踪格式 (CTF) 数据的人可读版本,即跟踪事件列表。每个事件都有一个时间戳、一个事件类型、生成该事件的进程的一些信息,以及给定事件类型的字段值。

使用箭头键滚动,或按 q 退出。

接下来,我们将对跟踪结果进行分析。

分析

分析 提供了一个 Python 应用程序接口,用于轻松分析跟踪。我们可以在 Jupyter 笔记本虚化 来绘制数据。数据 分析 存储库包含一个 几本笔记本样本包括 一个分析订阅回调持续时间的笔记本.

在本教程中,我们将在订阅节点中绘制订阅回调的持续时间。

安装 Jupyter 笔记本和 bokeh,然后打开示例笔记本。

管道3 安装 虚化聚光灯 笔记本 ~/tracing_ws/src/tracetools_analysis/tracetools_analysis/callback_duration.ipynb

这将在浏览器中打开笔记本。

替换 第二个单元格中的变量为跟踪目录的路径:

 = '~/.ros/tracing/perf-test';

点击 运行 按钮。第一次运行进行跟踪处理的单元格可能需要几分钟,但随后的运行会更快。

你应该会得到类似下面的图:

回调持续时间 结果图

我们可以看到,大多数回调耗时小于 0.01 毫秒,但也有一些异常值耗时超过 0.02 或 0.03 毫秒。

结论

本教程介绍了如何安装跟踪相关工具。然后展示了如何跟踪一个 性能测试ros2_tracing 并使用 分析.

有关更多痕量分析,请查看 其他笔记本样本tracetools_analysis API 文档.......。 ros2_tracing 设计文件 也包含大量信息。