您正在阅读的是开发版本的文档。有关最新发布的版本,请访问 Jazzy.
如何使用 ros2_tracing 跟踪和分析应用程序
本教程介绍如何使用 ros2_tracing 来跟踪和分析 ROS 2 应用程序。本教程中的应用程序将是 性能测试.
概述
本教程包括
运行和跟踪一个
性能测试
运行使用 分析 来绘制回调持续时间
先决条件
本教程针对实时 Linux 系统。参见 实时系统设置教程.不过,如果您使用的是非实时 Linux 系统,本教程也可以正常使用。
安装和建造
按照以下步骤在 Linux 上安装 ROS 2 安装说明.
备注
本教程一般适用于所有支持的 Linux 发行版。不过,你可能需要调整某些命令。
安装 babeltrace
和 ros2trace
.
苏都 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 设计文件 也包含大量信息。