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