一句话定位
cuRobo 不是一个学习式模型,而是 NVIDIA 出品的 CUDA 加速经典运动规划库:把「碰撞无关的运动生成」重新表述为一个大规模并行的全局优化问题——数千个随机种子在 GPU 上同时跑 L-BFGS + 粒子优化的轨迹优化、并行几何规划、并行 IK,单次查询在现代 PC 上平均 50ms 出解(比 SOTA 的 Tesseract 快 60×),在 15W 功耗的 Jetson Orin 上也能落地,为机械臂操作 pipeline 提供实时碰撞无关运动生成的基础设施。
背景与定位
机械臂运动生成的传统路线是「先几何规划(RRT/RRTConnect 等采样式方法,OMPL 是代表实现)、再对路径做平滑/时间参数化」的两阶段流水线;后续研究(CHOMP、TrajOpt 等,论文对比基线为集成了 TrajOpt 的商业级规划套件 Tesseract)把轨迹优化本身当作核心工具,但这些方法普遍跑在 CPU 上、只选一个最优种子做局部优化,单次查询要 0.5–10 秒,边缘设备上更慢。cuRobo 的核心洞察是:全局优化文献早已证明”多种子并行重启 + 局部优化”能显著提升全局优化问题的解质量与鲁棒性,而 GPU 恰好天然适合把这种”采样再优化”的模式并行化。作者把这一思路系统应用到机器人运动生成的每一层——运动学、碰撞检测、数值优化、几何规划——全部重写为 GPU 并行核。
论文本身是作者在 ICRA 2023 上发表的早期版本 [96] 的扩展技术报告(v2, 2023-11),补充了最小 jerk 优化、时间步长再优化、真机跟踪实验等内容。该库与 NVIDIA 自家的仿真/机器人学习栈(isaac-sim、isaac-gym、Isaac Lab)共享生态位——后者提供仿真与学习环境,cuRobo 提供其中”运动生成”这一具体能力模块,并通过 nvblox 对接深度相机感知。截至本文归档时(2026-07),NVIDIA 已发布重写版 cuRoboV2(2026-04,Apache-2.0,arXiv:2603.05493),扩展为动力学感知轨迹优化、GPU 原生深度融合 ESDF 建图与高自由度全身运动生成;本页聚焦的是 2023-10 发布、对应 GitHub v0.7.8 tag 的原始 v1 技术报告与库。
模型架构
cuRobo 没有神经网络主干,其”架构”是一套分阶段、每一阶段都并行化的求解器管线(Fig. 2): IK 优化 → 种子生成 → 轨迹优化 → 时间步长再优化,输出无碰撞的关节空间轨迹 θ[0,T]。
- 运动学核:整条运动学(FK/雅可比)被实现为单个 CUDA kernel(对比同类 GPU 实现 STORM 用 125 个 kernel),前向用 4×4 齐次矩阵、4 线程并行做矩阵乘法计算各连杆位姿,再计算包络球位置;反向用 16 线程把笛卡尔梯度投影回关节空间。
- 碰撞表示:机器人体积用一组包络球近似(球心由 NVIDIA Isaac Sim 的球生成器产出),自碰撞只需检查球对之间的距离——实测约 50% 的球对因运动学限位天然不会碰撞,可提前剔除。世界碰撞支持三种表示并可叠加求和:Oriented Bounding Box(cuboid,专为常见工业部署优化)、Mesh(经 NVIDIA Warp 的 BVH 做最近点/内外判定,要求水密网格)、深度相机(经 nvblox 从 TSDF 流积分出 ESDF 体素场)。碰撞代价加入激活距离 η 做二次平滑(式 10),并叠加”速度度量”——碰撞代价按球体速度缩放,防止优化器”高速穿过”高代价障碍区。
- 连续碰撞检测(创新点):提出一种只需要”点查询式符号距离函数”(而非扫掠体几何)的连续碰撞检测算法——给定相邻时间步的球位置,先查中点是否碰撞,若无碰撞则沿运动方向按最近障碍距离前进,迭代收敛到中点(Fig. 4),从而兼容 cuboid/mesh/体素等任意能提供点 SDF 查询的世界表示,不要求扫掠体几何。
- 数值优化求解器:主力是 L-BFGS(拟牛顿法),配合作者提出的并行带噪声线搜索——不迭代式回溯搜索最优步长,而是预设一组离散步长 α(如 [0.01, 0.3, 0.7, 1.0])并行算出每个候选的代价与 Armijo/Wolfe 条件,取满足条件里最大的一个;若全部候选都不满足条件,退回一个很小的固定步长 0.01 作为”带噪声”更新(防止优化停滞与 NaN)。L-BFGS 之前先跑 2 次类 MPPI 的粒子优化(采样 n 个扰动轨迹、按指数效用加权更新均值/协方差,式 12–13)把种子先送到较优区域。
- 并行几何规划器:基于 BIT*-style 的知情采样(在起止点直线距离的 c_max 椭圆内采样)与自定义的并行 steer 算法(同时对多个采样点做离散化边验证),外加 shortcut 后处理精简路径。用于在轨迹优化种子失败率高时提供更好的初始化。
- 关键配置数(评测所用,附录 B.3 / Table 2):默认 30 个 IK 种子;轨迹优化默认 12 个 TO 种子,难场景(如 Table-Under-Pick-Panda)升到 28,并改用几何规划器种子而非线性插值种子;轨迹离散为 32 个时间步(复杂场景 44);TO 跑 100 次固定迭代 + 300 次可变迭代;L-BFGS 历史长度选 4(实验显示 15/25 在 100 次迭代内收敛,2 则需 200 次,4 之后收益递减且开始拖慢单次迭代);损失权重 α₀=2000, α₁=350(位姿代价), α₄=5000, α₅=50(关节空间目标代价), α₆=5000, α₇=50, α₈=5000, α₉=1.0(平滑/加加速度代价)。
数据
cuRobo 不训练神经网络、无训练数据,“数据”在此指用于评测运动生成质量与速度的基准数据集与真机试验数据:
- 评测数据集:Franka Emika Panda(7 自由度)上的碰撞无关运动规划问题,来自两个公开基准——motion benchmaker(800 个问题)与 mpinets 数据集(v1.0.2;论文正文与附录对该子集数量表述不一致,正文称 1800、附录称 1600,论文反复引用的总数以 2600 为准,横跨 12 种场景类型,如 Bookshelf/Box/Cage/Table-Pick/Cubby/Dresser 等,含普通与”面向任务”两类变体)。评测器代码来自
github.com/fishbotics/robometrics,并在此基础上做了改造。 - 数据预处理:motion benchmaker 场景里 Franka 夹爪张口按 16cm 建模(超出实体 8cm 极限),作者把夹爪间障碍物(圆柱)半径缩小 4cm 以匹配真实夹爪;mpinets 场景改用 2.5cm 夹爪宽度。
- 真机数据:在 UR5e 与 UR10 上各选 7 个工作空间内随机目标位姿、按顺序重复 5 次(论文原文表述为「共 35 次到达试验」,7×5=35,未明确是否两台机器人分别计为 35 次或合计 35 次),min-acc 与 min-jerk 两种代价配置各跑一遍,用 NVIDIA Jetson AGX ORIN(PREEMPT_RT 内核 + UR ROS 驱动)驱动。另在 UR10e(nvblox+RealSense D-415 建图)、Kinova Jaco(速度空间 PD 控制器)、Isaac Sim 里的双臂 UR10e 协同规划场景上做了部署验证,无需改动轨迹优化参数。
- 无 sim-to-real 域随机化或动作标注流程——机器人几何(球包络)与关节限位从 URDF/USD 配置文件读取,IK/碰撞/轨迹优化对任意合规机器人配置通用。
训练方法
cuRobo 无”训练”过程,取而代之的是逐问题实时求解的多阶段优化管线,可视为”训练方法”位置的对应内容:
- 求解顺序(Fig. 2):先并行跑碰撞无关 IK(许多种子)得到候选终态关节角 θ_T;再用线性插值 / 经过 retract 位形 / 几何规划器三种方式之一为轨迹优化生成初始种子;然后并行跑轨迹优化(粒子优化预热 + L-BFGS 收敛)得到候选轨迹;最后估计一个更优 dt 并重新优化一次得到时间步长最优的最终轨迹。
- 约束处理:关节限位、自碰撞、世界碰撞等硬约束全部转成带大权重的软代价项(box-constrained 非凸优化),由 L-BFGS 处理,而非专门的约束求解器。
- 代价函数(附录 A):位姿到达代价用 log-cosh 缩放的位置 L2 距离 + 四元数距离(远离目标时梯度稳定、接近目标时精度高);平滑代价对加速度与加加速度(jerk)做 L2 惩罚,并通过”隐式复制首尾三个时间步状态”的方式保证轨迹首尾速度/加速度/加加速度为零(替代显式速度约束,避免不同长度轨迹对权重敏感)。
- 消融验证的关键设计选择(§7,基于 2600 问题、单次尝试成功率):朴素碰撞代价 + 1 seed 梯度优化仅 38% 成功率;加激活距离(η: 0→2.5cm)提升到 65%(单项提升最大,+27%);加连续碰撞检测再 +4% 到 69%;加速度度量再 +2% 到 71%;加 2 次粒子优化预热再提升到 76%(+5%);最终用多种子并行轨迹优化提升到 85%。带噪声线搜索(noisy-ls)在单种子设置下成功率 75.69%,略高于弱/强 Wolfe 条件(74.73%/72.31%)与无线搜索(72%+ 但位置误差更大),98th 百分位位置误差最低(2.86mm vs 无线搜索 4mm)。
Infra(训练 / 推理工程)
无训练算力(非学习式模型)。推理/求解侧硬件与工程细节:
- 测试硬件:桌面 PC(AMD Ryzen 9 7950X + NVIDIA RTX 4090)、NVIDIA Jetson AGX Orin 64GB(MAXN 60W 与 15W 两种功耗模式)。
- CUDA Graphs:把每次优化迭代(及几何规划里的 mask-sample 函数)录制为 CUDA Graph 再重放,减少 kernel 重复启动开销,实测提速 10×(相比逐个调用 kernel)。求解前有约 2 秒的一次性 warm-up(张量初始化 + CUDA Graph 录制),之后可以持续换环境/起止点复用。
- 端到端延迟(桌面 PC,2600 问题基准,mean/75th/98th):
- 完整运动生成管线:50ms / 30ms / 260ms(vs Tesseract 2.95s / 2.47s / 22s,即 60× / 72× / 83× 加速);纯求解器迭代时间(刨除 Python 胶水开销)可再快到 69×/84×/93×。Python 层胶水开销占比约 12–15%(8ms/5ms/30ms)。
- 几何规划:20ms 均值(vs OMPL RRTConnect 集成的 Tesseract-GP 1.5s,101× 加速;98th 百分位 581×)。
- 轨迹优化:均值 87×、75th 百分位 145× 快于 Tesseract 集成的 TrajOpt。
- IK:batch=1000 时 37134 次/秒(23× 快于 TracIK 的 1590 次/秒);碰撞无关 IK 7611 次/秒(80× 快于拒绝采样式 TracIK+Bullet 的 95 次/秒,且后者约 20% 问题求解失败)。
- 运动学与碰撞查询:大 batch(10⁵)下运动学比 Pinocchio 快至多 891×,碰撞距离查询比 PyBullet 快至多 16,000×;利用这一速度可把 MPPI 控制频率跑到 421Hz(3.36× 快于 STORM)。
- Jetson Orin 边缘部署:完整运动生成管线在 MAXN/15W 下均值分别为 0.22s / 0.48s(vs Tesseract 6.13s / 10.3s,28× / 21× 加速);15W 模式下 cuRobo 甚至比 Tesseract 跑在桌面 i7 上还快。真机 UR5e/UR10 上,cuRobo 在 Jetson AGX Orin 上平均 100ms 内完成规划,规划环节仅占”发指令到执行完成”总周期的 6–9%,机器人运动执行占 89–94%,发送轨迹到机器人开始动作之间还有 58ms(UR5e)/68ms(UR10) 的通信延迟。
- 精度:论文未明确讨论数值精度选择(kernel 示例代码用
wp.float32,可推断为单精度;未披露是否有低精度/混合精度版本——事后有计算机体系结构工作用 cuRobo 做降精度内存瓶颈研究,论文正文提及但未展开细节)。
评测 benchmark
全部数据来自论文一手实验(2600 问题基准,对比基线 Tesseract——集成 OMPL RRTConnect 几何规划 + Bullet 连续碰撞检测 + TrajOpt 轨迹优化的商业级套件):
- 成功率:cuRobo(轨迹优化)在 2600 问题上 99.8%(仅 5 例失败,均为数据集本身对 cuRobo 碰撞表示无效的边界情况,如目标位姿本身在碰撞中)vs Tesseract 98.53%(38 例失败);纯几何规划 cuRobo-GP 99.8% vs Tesseract-GP(RRTConnect)98.6%。
- 路径质量:cuRobo-GP 的 C-space 路径长度([mean, 75th, 98th] = [5.39, 7.13, 13.45] rad)短于 Tesseract-GP([7.1, 8, 17.2] rad);cuRobo(TO)进一步比 Tesseract-GP 平均缩短 53%、比 Tesseract(TO)平均缩短 10%,98th 百分位比 Tesseract 短 26%。
- 时间参数化质量:运动时长 [mean,75th,98th] cuRobo [1.59, 1.89, 3]s vs Tesseract [1.96, 2.17, 4.86]s(均值快 1.23×,98th 百分位快 1.62×);与做过时间最优重参数化的 Tesseract-TG 相比,cuRobo 慢约 0.3s,但加加速度低 12×(cuRobo 直接优化最小 jerk,Tesseract-TG 不优化);比未做 jerk 优化的 Tesseract 本身加加速度低 4×;cuRobo 98th 百分位最大加速度也最小,而 Tesseract 98th 百分位最大加速度(23.9 rad/s²)超出了论文为 Panda 设定的 15 rad/s² 限位。
- 真机跟踪误差(UR5e / UR10,35 次到达试验):min-jerk 模式平均位置误差 0.00085 rad(UR5e)/ 0.00133 rad(UR10),均低于关节编码器 ±0.0017 rad 的精度边界;min-acc 模式误差更大(0.00117 / 0.00250 rad),UR10 min-acc 甚至超出编码器精度边界——min-jerk 全面优于 min-acc,尤其在轨迹起始阶段(加速度突变导致的位置误差尖峰)。
- 消融(§7,详见”训练方法”节):碰撞代价各项设计贡献(激活距离 +27%、连续碰撞检测 +4%、速度度量 +2%、粒子优化 +5%、多种子 +9 个百分点到 85%);种子数增加持续提升成功率与降低运动时长(从 48 个种子起才开始降低运动时长),几何规划种子能进一步提升成功率但令规划时间翻倍;并行度对计算时间的边际影响在 RTX 4090 上很小(4→48 种子仅多耗 8ms),在 Jetson Orin 上更明显(MAXN +158ms,15W +417ms)。
创新点与影响
贡献(论文自述):① 高性能 CUDA 运动学与符号距离核,单 kernel 实现比 CPU 方法快至多 10,000×;② 只需点查询 SDF 函数(而非扫掠体几何)的可微连续碰撞检测算法,可跨 cuboid/mesh/体素等世界表示复用;③ 并行 L-BFGS + 并行带噪声线搜索 + 粒子优化的数值求解器组合,在 IK / 碰撞无关 IK / 碰撞无关轨迹优化上分别比现有 CPU 求解器快 23× / 80× / 87×;④ SOTA 级 IK 求解器(37000 次/秒,碰撞无关 7600 次/秒);⑤ 并行几何规划器(20ms 内出解);⑥ 端到端全局运动生成管线(50ms,60× 快于 Tesseract);⑦ 在 15W/60W 的 NVIDIA Jetson AGX Orin 上验证边缘设备部署可行性(28×/21× 加速);⑧ 把上述能力打包为开源库 cuRobo(PyTorch/CUDA/Warp)发布给机器人社区。
作者自陈的局限(§8.1):不支持真正的反应式(reactive)运动生成——假设从静止状态起步,且难题的 98th 百分位耗时仍偏长,不满足固定求解频率的实时闭环要求;约束运动生成(如保持姿态/高度)仅做了初步验证(靠给运行代价加大权重),未严谨评测,也未实现约束下的图规划;不处理任务排序/路径规划(给定一组无序目标位姿找最优访问顺序);当前只做运动学层面的轨迹优化,不支持接触丰富或全动力学优化(需要引入 contact-implicit 公式或 GPU 加速动力学);仅实现了 L-BFGS/梯度下降/MPPI 三种通用数值解法,更适合机器人问题结构的并行 Gauss-Newton 类求解器留作未来工作;假设能获取完整世界表示,未处理局部/部分感知场景(需要融合学习式 SDF 表示);连续碰撞检测假设球在路点间做线性运动(对转动关节并不精确,但实践中够用);Python 层仍有 12–15% 的胶水开销未完全下沉到 CUDA。
影响:cuRobo 发布后成为 NVIDIA Isaac 生态里”运动生成”这一能力的标准实现,与 isaac-sim、Isaac Manipulator 等产品线深度集成,并持续维护迭代(2023-11 至 2024-11 期间发布 v0.6.0→v0.7.6 共十余个版本,陆续加入 ESDF 体素碰撞、约束规划、Grasp API 等能力)。2026-04,NVIDIA 发布重写版 cuRoboV2(Apache-2.0,论文 arXiv:2603.05493《cuRoboV2: Dynamics-Aware Motion Generation with Depth-Fused Distance Fields for High-DoF Robots》),将能力扩展到动力学感知的 B-spline 轨迹优化、深度融合的 GPU 原生 ESDF 感知(声称比 SOTA 快 10×)与面向高自由度人形机器人的可扩展全身运动计算,标志着这条”GPU 并行经典运动规划”技术路线从单臂机械臂延伸到了人形全身控制场景。
原始链接
- 论文(v2, arXiv 2310.17274):https://arxiv.org/abs/2310.17274
- 项目主页 / 文档(legacy v0.7.6):https://curobo.org/
- GitHub(现指向 cuRoboV2;v1 API 见
v0.7.8tag):https://github.com/NVlabs/curobo - cuRoboV2 论文(继任工作):https://arxiv.org/abs/2603.05493
一手源存档(sources/)
- curobo—project-page — curobo.org 项目页快照(overview、更新时间线、文档目录)
- curobo—github-readme — GitHub README 快照(含 cuRoboV2 现状说明、引用信息)
- 论文全文见上方 arXiv 链接(arXiv 原文 PDF,不入 git)