这篇文章最初发表在 NVIDIA 技术博客上。
实时自主机器人导航由快速运动生成算法提供支持,可支持食品和服务、仓库自动化和机器租赁等多个行业的应用。机械手的运动生成极具挑战性,因为它需要满足复杂的限制条件并尽可能减少多个成本条件。
此外,机械臂可以有许多关节、复杂的链路几何图形、超出单个配置的整个目标区域、任务限制以及不显著的运动学和转矩限制。先前的方法通过首先规划无碰撞几何路径,然后在本地优化这些路径以实现更流畅的规划来降低这种复杂性。
然而,越来越多的研究表明,轨迹优化可以成为解决不仅仅是轨迹平滑问题的强大工具。我们对机器人导航问题的现代理解是,这是一个大型全局运动优化问题。
图 1.cuRobo 的动作生成方法
在视频中,cuRobo 的动作生成步骤实现了可视化,首先是反向运动迭代,然后是轨迹优化的迭代。
NVIDIA cuRobo 将运动生成问题表述为全局优化问题,并利用 GPU 使用许多并行种子解决此问题。cuRobo 首先执行无碰撞反向动力学 (IK),以找到无碰撞的最终关节配置,然后利用最终关节配置作为种子进行轨迹优化 (图 1)。
cuRobo 还实现了 GPU 加速的快速图形规划器,可在极端情况下用作轨迹优化的种子。
图 2.cuRobo 针对运动策略网络和 motionbenchmaker 数据集的运动生成问题的解决方案
在视频中,机器人机械手在太空中移动,避开障碍物以达到目标。
cuRobo 在 PyTorch 中实施,使您能够轻松实施自己的运动生成成本条款。cuRobo 随附一个自定义机器人 CUDA 内核库,用于执行常见而耗时的任务。它使用了多种 NVIDIA 技术:
- NVIDIA Warp 网格距离查询。
- NVIDIA NVBlox 与深度图像的有符号距离。
- CUDA 图形 用于减少核函数启动用度。
- NVIDIA Isaac Sim 用于渲染和示例。
cuRobo 还在 NVIDIA Jetson 上运行,支持嵌入式应用程序。
结果表明,cuRobo 可以在 NVIDIA AGX Orin 上生成 100 毫秒(中值)内的运动计划。图 3 展示了在 UR10 上运行 NVIDIA Jetson AGX Orin 的 cuRobo 集成示例。
图 3.cuRobo 生成无碰撞的最小推举动作
在视频中,cuRobo 为 UR10 机器人快速生成平滑运动,以处理动态显示的目标。
cuRobo 提供了多个运动生成组件的 CUDA 加速实现,包括运动学、碰撞检查、反向运动学、数值优化求解器、轨迹优化和运动生成。结果表明,cuRobo 可在几毫秒内解决复杂问题,比现有方法快得多(图 4)。
图 4.跨不同模块的中位数计算时间
更多资源
cuRobo 代码可在 /NVlabs/curobo 上找到。想要了解更多信息,请访问 CuRobo:CUDA 加速机器人库。