Open Source Robotics

精选高质量开源机器人项目、工具和软件,推动机器人社区发展。

Convex decomposition

  • 又称: approximate convex decomposition, ACD
  • 类别: Software & tooling › Simulation & twins
  • 标签: collision-detection, simulation, geometry-processing, meshes, contact

把一个非凸形状(通常是三角网格)拆分成一组凸块,使它们的并集近似原形状,从而可以使用快速的凸碰撞算法。

定义

凸分解(convex decomposition)把一个非凸形状拆分成一组凸部件,这些部件的并集再现或近似原始形状。在机器人领域,输入通常是物体、夹爪或机器人连杆的三角网格,输出则是用作其碰撞几何的一组凸包。原因在于算法:标准的窄相碰撞检测和距离计算程序(例如 GJK 和 EPA)都作用于凸形状,许多物理引擎要么要求运动物体使用凸几何,要么悄悄地用单个凸包替换网格。用一个凸包表示的杯子既没有开口,也没有把手上的孔;分解则以多个凸块的形式恢复这些特征。

多面体的精确分解可能需要非常多的部件,而求出最少的部件数在计算上很困难,因此实用工具计算的是近似凸分解。它们不断拆分形状,直到每一块在所选容差内都是凸的;容差用凹度度量来衡量,例如某一块与其自身凸包之间的距离。V-HACD 长期以来是仿真流程中的常用选择;CoACD 是一种较新的碰撞感知方法,它直接切割网格,并尽量保留对接触重要的特征,例如薄壁和开口。两者都提供凹度阈值和最大部件数等参数。

结果是在保真度和代价之间的权衡。块数越多,越贴近真实表面,但会拖慢碰撞检测,并让各块相接处的接触生成更加嘈杂;块数越少,速度越快,但会填平夹爪手指或销钉可能需要进入的凹陷区域。分解结果还继承了输入网格的质量:带有孔洞、自相交或非流形边的扫描网格往往需要先修复。凸分解与有符号距离场、三角形包围体层次结构或球体近似等碰撞表示相关,但并不相同,这些表示在速度和精度之间做出不同的权衡。

为何重要

仿真中的抓取、插入或推动任务能否表现得像真实任务一样,在很大程度上取决于碰撞几何。凸分解是常用的步骤,它把视觉网格转换成物理引擎能够快速仿真的几何,同时保留富接触任务所依赖的凹形特征。

主要应用

  • 物理仿真器中物体和机器人连杆的碰撞网格
  • 在仿真中生成的大规模抓取和操作数据集
  • 基于采样的运动规划器中的快速碰撞检测
  • 插入等富接触任务,其中必须保留凹形特征
  • 把 CAD 网格或扫描网格转换成 URDF 或 MJCF 碰撞几何

实际应用

一个在仿真中构建抓取数据集的团队,从几千个扫描得到的家居物品网格出发。每个网格先被修复为水密网格并进行尺度归一化,然后在设定凹度阈值和部件数上限的情况下送入 CoACD 处理。得到的凸块作为单独的碰撞网格写入物体的 URDF 或 MJCF 文件,而原始网格保留用于渲染。在生成抓取之前,团队会目视检查一批物体样本:内腔被填平的碗、或者把手与主体合并在一起的物体,会改用更严格的阈值。他们还会关注仿真速度,因为分解成数十块之多的物体会拖慢大规模并行环境。

常见误解

  • 物理引擎完全按照网格的绘制形状进行碰撞 — 许多引擎使用每个碰撞网格的凸包,因此除非对网格进行分解,否则凹陷区域会消失
  • 凸块越多,仿真总是越好 — 额外的凸块会拖慢碰撞检测,并可能在各块之间的接缝处产生虚假接触
  • 凸分解是精确的 — 实用工具都是近似的,会填平低于所选容差的凹陷,这可能封住小孔或窄缝

谁需要了解

  • 准备机器人和物体资产的仿真工程师
  • 在仿真中构建数据集的抓取和操作研究人员
  • 从事碰撞检测的运动规划工程师
  • 把 CAD 模型转换为 URDF 或 MJCF 文件的创客

相关技术

  • V-HACD
  • CoACD
  • GJK 算法(GJK Algorithm)
  • 凸包(Convex Hull)
  • MuJoCo
  • PhysX

相关术语

  • Penalty-Based Contact Model
  • Signed Distance Field
  • Axis-Aligned Bounding Box
  • Graph of Convex Sets
  • URDF
  • Grasp Quality Metric

相关项目

  • GENESIS: World's fastest physics engine: 43M FPS for embodied AI learning
  • LeRobot: HuggingFace ML library for real-world robotics in PyTorch
  • PyBullet: Python physics simulator for robotics and RL research with fast CPU-based simulation
  • RLinf: Scalable infrastructure for post-training foundation models via RL
  • Webots: Cross-platform robot simulator with built-in models, sensors, and development environment
  • NVIDIA Isaac Sim: NVIDIA Omniverse app for AI-driven robot simulation and testing

本网站需要 JavaScript 才能正常运行。请启用 JavaScript 以浏览我们的开源机器人项目。