RobotPerf:一款用于评估机器人计算系统性能的开源、厂商无关基准测试套件
RobotPerf是一款开源、厂商无关的机器人计算系统基准测试套件,专注于评估ROS 2计算图在各类硬件平台(CPU/GPU/FPGA)上的性能表现。该套件提供两种测试方法:灰盒测试通过低开销跟踪器精确监测系统内部状态,黑盒测试则通过替换上层架构进行外部性能评估。RobotPerf强调平台独立性、ROS 2集成性和方法灵活性,支持从算法到完整机器人工作流的性能分析。通过标准化基准测试流程,该项目旨
RobotPerf:一款用于评估机器人计算系统性能的开源、厂商无关基准测试套件
摘要
本文介绍了RobotPerf,这是一款厂商无关的基准测试套件,旨在以ROS 2为通用基准,评估各类硬件平台上的机器人计算性能。该套件包含覆盖完整机器人工作流的ROS 2功能包,并集成了两种截然不同的基准测试方法:黑盒测试(通过移除上层架构并替换为测试应用来衡量性能)和灰盒测试(一种特定于应用的测量方法,以最小干扰观察系统内部状态)。我们的基准测试框架提供即用型工具,且易于适配自定义ROS 2计算图的评估需求。借鉴顶尖机器人架构师和系统架构专家的经验,RobotPerf建立了标准化的机器人基准测试方法。作为一项开源计划,RobotPerf始终致力于在社区反馈中不断演进,推动硬件加速机器人技术的未来发展。
一、引言
为使机器人系统在动态的现实环境中安全高效地运行,其计算过程必须满足实时性要求,同时符合功耗约束。为此,在异构硬件(如GPU和FPGA)上加速机器人核心算法,已成为实现此类性能的关键手段[1]-[7]。这一点在摩尔定律和登纳德缩放定律即将终结、单CPU性能受限的背景下[8][9],显得尤为重要。
尽管硬件加速核心算法潜力巨大,但要将其有效集成到机器人系统中,仍需可靠且标准化的基础设施支持。随着行业愈发倾向于采用此类标准软件基础设施,机器人操作系统(ROS)[10]已成为首选方案。作为工业级中间件,它有助于构建稳健的机器人计算图,印证了机器人技术并非孤立算法的简单集合这一理念。对ROS 2[11]的依赖日益加深,加之硬件加速带来的计算性能提升,凸显了社区对标准化、工业级基准测试的需求,以评估各类硬件解决方案的优劣。近年来,涌现出大量聚焦机器人应用基准测试的研讨会和教程[12]-[22],虽然针对特定机器人算法[23][24]以及部分端到端机器人应用(如无人机[25]-[28])的基准测试已存在,但在异构硬件上分析通用ROS 2计算图的相关细节尚未得到充分研究。
在本文中,我们介绍了RobotPerf,这是一款开源、社区驱动的基准测试工具,旨在以标准化、架构无关且可复现的方式评估机器人计算系统的性能,适配不同机器人平台中各类软硬件组合(见图1)。RobotPerf专注于评估以ROS 2计算图形式呈现的机器人工作负载在各类硬件配置上的表现,涵盖完整的机器人工作流,并强调实时关键指标。该框架集成了两种不同的基准测试方法,利用多种插桩技术和ROS节点捕获机器人系统中的关键指标。这些方法分别是:黑盒测试(通过移除目标层上层架构并替换为特定测试应用来衡量性能)和灰盒测试(一种特定于应用的测量方法,以最小干扰观察ROS 2的内部工作机制)。该框架用户友好,易于扩展以评估自定义ROS 2计算图,并与主要硬件加速厂商合作,推行标准化的基准测试方法。作为开源项目,它旨在促进相关研究与创新。我们通过在包括CPU、GPU和FPGA在内的多种硬件平台上进行基准测试,验证了该框架的能力,进而展示了RobotPerf在获取有价值性能洞察方面的实用性。
RobotPerf的源代码和文档可在https://github.com/robotperf/benchmarks获取,其方法目前已在工业界用于对工业级、生产级系统进行基准测试。

图1:RobotPerf的高层概述。该工具以机器人操作系统(ROS 2)为通用基准,面向具有复杂且可扩展计算图的工业级实时系统。RobotPerf强调适配性、可移植性和社区驱动的方法,旨在为CPU、GPU、FPGA和其他加速器上的ROS 2计算图提供公平的性能对比。
二、背景与相关工作
A. 机器人操作系统(ROS和ROS 2)
ROS[10]是一款广泛应用于机器人开发的中间件,它不仅作为结构化通信层,还提供了一系列附加功能,包括适用于各类任务、传感器和执行器的开源功能包与驱动程序,以及简化开发、部署和调试流程的工具集合。ROS支持创建计算图(见图1),通过话题连接被称为“节点”的软件进程,助力端到端机器人系统的开发。在该框架中,节点可发布或订阅话题,增强了机器人系统的模块化程度。
ROS 2基于ROS发展而来,解决了其诸多关键局限性。作为工业级系统,ROS 2遵循工业数据分发服务(DDS)和实时发布-订阅(RTPS)标准[29]。基于数据分发服务(DDS)标准,它支持细粒度、直接的节点间和节点内通信,提升了性能、降低了延迟并增强了可扩展性。重要的是,这些改进还旨在支持硬件加速[30][5]。已有超过600家公司在其生产环境中采用了ROS 2及其前身ROS,彰显了其在行业中的重要性和广泛应用[11]。
ROS 2还提供标准化API,通过特定于编程语言的客户端库(rclcpp和rclpy)连接用户代码,这些库负责调度和调用定时器、订阅和服务等回调函数。ROS 2无需ROS主节点,构建了去中心化框架,节点可自行发现彼此并管理自身参数。
B. 机器人基准测试
近年来,开源机器人库及其相关基准测试的开发取得了长足进步,这些基准测试用于展示其性能,同时涌现出大量聚焦机器人应用基准测试的研讨会和教程[12]-[22]。然而,大多数机器人基准测试侧重于特定领域问题中的算法正确性(功能测试),以及CPU上的端到端延迟[31]-[48]。另有少数研究分析了部分非功能指标,如CPU性能基准测试,以探索特定工作负载中的瓶颈行为[23][24][49]。
| 特性 | OMPL Benchmark [31] | MotionBenchMaker [32] | OpenCollBench [33] | BARN [34] | DynaBARN [35] | MAVBench [25] | Bench-MR [36] | RTRBench [23] | RobotPerf(本文) |
|---|---|---|---|---|---|---|---|---|---|
| 实时性能指标 | ✓ | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 涵盖多工作流类别 | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✓ | ✓ |
| 异构硬件评估 | ✗ | ✗ | ✓ | ✗ | ✗ | ✓ | ✗ | ✗ | ✓ |
| 与ROS/ROS 2框架集成 | ✓ | ✓ | ✗ | ✗ | ✓ | ✓ | ✗ | ✓ | ✓ |
| 功能性能测试 | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ |
| 非功能性能测试 | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✓ |
| 社区主导 | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ |
表1:代表性现有机器人基准测试与RobotPerf在机器人系统关键特性上的对比评估。
近期研究还通过基准测试探索了操作系统和任务调度器对ROS 2计算图性能的影响[50]-[54],并优化了ROS和ROS 2自身的调度与通信层[55]-[62]。这些研究通常聚焦于特定场景或(一组)性能计数器。
最后,已有研究利用硬件加速特定ROS节点,并通过自适应计算优化ROS计算图[63]-[79]。然而,除两项局限于无人机场景的研究[25][28]外,这些研究并未提供全面的框架来快速分析和评估新的异构计算图。
与本文工作最相关的研究包括ros2 tracing[80]和RobotCore[5]。ros2 tracing提供了插桩技术,展示了将低开销LTTng跟踪器集成到ROS 2中的方法;而RobotCore则阐明了利用厂商特定跟踪来补充ros2 tracing,以评估硬件加速ROS 2节点性能的优势。在这两项特定基础研究的基础上,RobotPerf提供了一套涵盖机器人工作流的完整ROS 2核心算法,并在多种硬件上对其进行评估。
表1总结了我们的独特贡献。它选取了上述具有代表性的基准测试,并将其与RobotPerf进行对比评估,重点关注机器人系统至关重要的关键特性。需要注意的是,尽管我们目前的方法仅聚焦于非功能性能基准测试,但RobotPerf的架构和方法可扩展至测量功能指标。
三、RobotPerf:原则与方法
RobotPerf是一款开源、工业级机器人基准测试工具,适用于异构硬件平台的可移植性测试。本节将概述其重要设计原则,并描述其实现方法。
A. 非功能性能测试
目前,RobotPerf专注于非功能性能测试,评估机器人系统的效率和运行特性。非功能性能测试衡量的是不属于系统功能本身的方面,如计算延迟、内存消耗和CPU使用率。相比之下,传统功能性能测试关注系统的特定任务和功能,验证其在核心目标上的有效性,例如控制算法在跟踪机器人规划路径时的准确性。功能测试确认系统能正确执行指定任务,而非功能测试则确保系统高效且可靠地运行。
B. ROS 2集成与适配性
RobotPerf专为评估ROS 2计算图而设计,而非聚焦于独立的机器人算法。我们强调对ROS 2工作负载的基准测试,因为ROS 2作为中间件,便于构建复杂的机器人系统。这使得该基准测试具有通用性,适用于各类机器人应用,并能让广泛使用ROS的工业界快速采用RobotPerf。
C. 平台独立性与可移植性
RobotPerf允许在多种硬件平台上进行基准测试评估,包括通用CPU和GPU、可重构FPGA以及专用加速器(如光线追踪加速器[81])。在异构平台上对机器人工作负载进行基准测试,对于评估其各自的能力和局限性至关重要。这有助于针对效率、速度和适配性进行优化,并微调资源分配,确保在不同场景下都能实现稳健且响应迅速的运行。
D. 灵活的方法学
我们提供灰盒测试和黑盒测试两种方法,以满足不同需求。黑盒测试提供易于启用的外部视角,通过移除目标层上层架构并替换为特定测试应用来衡量性能。灰盒测试则提供更细粒度的分析,深入ROS 2的内部工作机制,以增加工程工作量为代价,生成更准确的测量结果。因此,每种方法都有其权衡取舍,同时提供两种选项能为用户带来灵活性。下文将详细描述每种方法,并在表2中强调其要点。
| 标准 | 灰盒测试 | 黑盒测试 |
|---|---|---|
| 精度 | 利用代码插桩中的跟踪器 | 仅限于ROS 2消息订阅 |
| 性能 | 开销低,由内核态驱动 | 受限于ROS 2消息回调,由用户态进程记录 |
| 灵活性 | 支持多种事件类型 | 在当前实现中仅限于消息订阅 |
| 可移植性 | 需要有效的跟踪器,采用标准格式(CTF) | 支持标准ROS 2 API,采用自定义JSON格式 |
| 易用性 | 需要修改代码并进行数据后处理 | 仅需添加少量节点,即可测试未修改的软件 |
| 实际机器人适配性 | 不修改计算图 | 会添加额外数据流,修改计算图 |
表2:灰盒测试与黑盒测试的权衡对比。
-
灰盒测试:灰盒测试能够在机器人计算图中精准设置探测点,利用可能是专有或开源的跟踪器(如LTTng[82]),生成关键事件的时间顺序日志。由于该方法通过ros2 tracing与标准ROS 2层和工具完全集成,其平均延迟仅为3.3微秒[80],非常适合实时系统。通过这种方法,RobotPerf(可选)提供专用的输入和输出节点,这些节点位于目标节点之外,避免了对目标节点进行插桩的需求。这些节点在发布和订阅事件时生成消息跟踪点,通过处理这些跟踪点来计算端到端延迟。
-
黑盒测试:黑盒方法利用名为MonitorNode的用户级节点来评估ROS 2节点的性能。MonitorNode订阅目标节点,记录每条消息的接收时间戳。通过获取传播的ID,MonitorNode将其时间戳与PlaybackNode记录的每条消息时间戳进行对比,从而确定端到端延迟。这种方法无需额外插桩,易于实现,但分析不够详细,且会通过引入新节点和数据流来修改计算图。
E. 透明性能测试
要求在源代码中直接对功能包进行插桩,这对许多基准测试工作构成了挑战。为克服这一障碍,对于大多数基准测试,我们避免修改目标工作负载,而是利用位于核心目标节点之外的专用输入和输出节点。这种设置允许在无需直接对目标层进行插桩的情况下进行基准测试。
我们将这种方法称为“透明测试”,RobotPerf会在可能的情况下遵循这一理念。
F. 可复现性与一致性
为确保评估结果的一致性和可复现性,RobotPerf遵循特定的通用机器人数据格式。具体而言,它使用ROS 2 rosbags(包括我们自己在https://github.com/robotperf/rosbags上提供的rosbags,以及第三方bag文件,如r2b数据集[99])。
为确保数据加载的一致性和对消息传输速率的更精细控制,我们借鉴了[100]的思路。我们的计算图集成了经过修改和改进的DataLoaderNode和PlaybackNode实现(可在https://github.com/robotperf/ros2_benchmark获取)。这些增强型节点提供了多项改进,包括报告最坏情况延迟、支持最大延迟报告、引入功耗分析功能等。
G. 指标
我们重点关注三个关键指标:延迟、吞吐量和功耗(包括能效)。延迟衡量任务从开始到完成所需的时间。吞吐量衡量在给定时间内完成的总工作量。功耗衡量执行特定任务时单位时间内消耗的电能。能效(或每瓦性能)的衡量标准是,每消耗一瓦电能可完成的工作量(相对于吞吐量或延迟),这与电池供电机器人的运行时间直接相关[25]。
H. 当前基准测试与类别
RobotPerf测试版[98]引入的基准测试涵盖了从感知、定位到控制的机器人工作流,以及专门针对操作任务的基准测试。测试版中的完整基准测试列表见表3。根据上述原则,每个基准测试都是一个独立的ROS 2功能包,描述了所有依赖项(通常是其他ROS功能包)。为便于复现,所有基准测试均设计为可使用通用ROS 2开发流程(ament构建工具、colcon元构建工具等)进行构建和运行。最后,为使基准测试能被其他工具轻松调用,每个基准测试的描述及其结果均以机器可读格式定义。因此,除所有ROS功能包所需的package.xml和CMakeLists.txt文件外,每个基准测试的根目录中还包含一个名为benchmark.yaml的YAML文件,用于描述基准测试并包含可接受的结果。
| 类别 | 基准测试名称 | 描述 |
|---|---|---|
| 感知 | a1 感知双节点 | 包含两个组件的计算图:图像校正和图像缩放[83][84]。 |
| a2 图像校正 | 图像校正组件[83][84]。 | |
| a3 立体图像处理 | 根据左右图像计算视差图[85]。 | |
| a4 深度图像处理 | 根据校正后的深度图像和彩色图像计算点云[86]。 | |
| a5 图像缩放 | 图像缩放组件[83][84]。 | |
| 定位 | b1 视觉SLAM | 视觉SLAM组件[87]。 |
| b2 地图定位 | 地图定位组件[88]。 | |
| b3 AprilTag检测 | AprilTag检测组件[89]。 | |
| 控制 | c1 直角坐标机器人关节轨迹控制器 | 关节轨迹控制器[90]。 |
| c2 差动驱动机器人差动驱动控制器 | 差动驱动控制器[91]。 | |
| c3 直角坐标机器人位置型前馈指令控制器 | 基于位置的前馈指令控制器[92]。 | |
| c4 直角坐标机器人速度型前馈指令控制器 | 基于速度的前馈指令控制器[92]。 | |
| c5 直角坐标机器人加速度型前馈指令控制器 | 基于加速度的前馈指令控制器[92]。 | |
| 操作 | d1 六轴机械臂规划与轨迹执行 | 机械臂规划与轨迹执行[93]。 |
| d2 FCL碰撞检测 | 机械臂与箱体的碰撞检测(基于FCL[94])。 | |
| d3 Bullet碰撞检测 | 机械臂与箱体的碰撞检测(基于Bullet[95])。 | |
| d4 KDL逆运动学 | 逆运动学(基于KDL插件[96])。 | |
| d5 LMA逆运动学 | 逆运动学(基于LMA插件[97])。 | |
| d6 正运动学 | 机械臂正运动学[93]。 |
表3:RobotPerf测试版基准测试(详见[98])。
I. 运行规则
为确保性能数据的可靠性和可复现性,我们遵循一套严格的运行规则。首先,测试在受控环境中进行,以确保性能数据不会受到外部参数波动的影响。按照ros2 tracing[80]推荐的最佳实践,我们记录并报告时钟频率和核心数等设置。其次,我们期待RobotPerf能被社区广泛接受,并让测试结果接受同行评审,这有助于提高可复现性和准确性。最后,我们旨在通过涵盖广泛的测试场景,避免过度拟合特定的硬件设置或软件配置。
四、评估
我们使用RobotPerf进行了全面的基准测试,以评估其在机器人专用计算基准测试三个关键方面的能力。首先,我们验证该框架在从边缘设备到服务器级硬件的不同异构平台上提供比较洞察的能力。其次,我们分析测试结果,以了解RobotPerf在指导针对特定机器人工作负载选择最佳硬件解决方案方面的能力。最后,我们评估RobotPerf在揭示硬件和软件加速技术相对于通用替代方案所带来的优势方面的有效性。我们所有的结果和源代码均可在开源平台获取:https://github.com/robotperf/benchmarks。
A. 异构系统的公平且具代表性评估
在不断发展的机器人领域,评估机器人应用中的硬件异构性至关重要。不同的机器人工作负载需要不同的计算资源和效率水平。因此,在各类硬件平台上全面评估性能至关重要。
我们在多种硬件平台上对RobotPerf基准测试进行了评估,包括边缘设备上的通用CPU(如高通RB5)、服务器级CPU(如英特尔i7-8700)以及专用硬件加速器(如AMD Kria KR260)。图3通过雷达图展示了各类工作负载(感知、定位、控制和操作)的基准测试性能,其中不同硬件解决方案与各类工作负载一同呈现。每种硬件解决方案以不同颜色表示,数值和面积越小,表明在相应类别中的性能越好。由于我们能够对18个平台进行基准测试(图3底部),RobotPerf能够对异构硬件平台和工作负载进行基准测试,为社区驱动的软硬件协同设计和优化铺平了道路。
B. 硬件选择的量化方法
机器人领域任务的快速发展和多样性,要求我们在计算硬件选择和优化方面采用细致且特定于场景的方法。“一刀切”的硬件策略固然简单,但无法充分利用不同工作负载(如感知、定位、控制和操作)在硬件能力敏感性方面的细微差异。因此,借助RobotPerf等工具进行严格分析至关重要,以确定最有效的硬件配置,使其与各个工作负载的需求相匹配。
图3中的结果展示了“一刀切”解决方案的不合理性。例如,聚焦图3中控制类别的延迟雷达图(第3列第1行),我们可以看到i7-12700H(I7H)在基准测试C1、C3、C4和C5上优于NVIDIA AGX Orin开发套件(NO),但在基准测试C2上慢了6.5倍。因此,通过分析RobotPerf基准测试的数据,机器人研发人员可以根据其特定的工作负载和性能要求,更好地确定最适合自己的硬件选项。

图2:AMD Kria KR260在有无ROBOTCORE感知加速器情况下的感知延迟(毫秒)基准测试对比。所使用的基准测试为表3中定义的a1、a2和a5。我们发现,硬件加速可实现高达11.5倍的性能提升。
通过评估数据,我们得出一个普遍结论:每个工作负载都是独特的,很难在基准测试和类别之间进行概括。因此,RobotPerf的结果帮助我们了解了各种硬件解决方案和专用领域特定硬件加速器的使用如何显著提升性能。
C. 加速优势的严格评估
在计算硬件快速发展的领域,算法实现的优化是决定机器人应用成功与否和效率高低的关键因素。因此,需要像RobotPerf这样的分析工具,以便在统一的硬件设置上比较各种算法实现。
图2是图3的简化版本,展示了AMD Kria KR260硬件解决方案的两种形式:常规硬件和利用专用领域特定硬件加速器(ROBOTCORE感知加速器,一种在FPGA中运行的软核,用于加速感知机器人计算)的变体。该图表明,硬件加速可实现高达11.5倍的性能提升(基准测试a5的延迟从173毫秒降至15毫秒)。需要强调的是,此处获得的结果应根据每个终端应用进行解读,并不代表对应使用何种硬件的通用建议。在选择硬件解决方案时,可用性、外形尺寸和社区支持等其他因素也是需要考虑的相关方面。
五、结论与未来工作
RobotPerf是机器人标准化基准测试领域的重要一步。通过对软硬件栈进行全面评估,并聚焦于工业级ROS 2部署,RobotPerf为机器人硬件和算法的严格协同设计铺平了道路。随着RobotPerf在社区的参与下不断成熟,我们期望它能对CPU、GPU和FPGA进行比较,探索它们在增强现实世界机器人计算方面的功耗和灵活性。以标准化的机器人基准测试为核心,该领域有望快速发展,提供具备实时能力的系统,从而释放机器人在现实世界应用中的真正潜力。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)