求解器差异#

Isaac Lab 为不同物理后端提供统一的资源和任务接口,但这并不意味着底层求解器模型可以互换。PhysX 和 Newton 求解器即使使用相同的 USD 资源,也可能产生不同轨迹,因为它们构建接触、表示状态、稳定约束和分配计算工作的方式不同。

下表比较文档中介绍的 PhysX,以及 Newton 的 MJWarp、Kamino、VBD 和 MPM 工作流程。后续详细说明主要关注用于刚性机器人的三种求解器:PhysX、MuJoCo-Warp(MJWarp)和 Kamino。其他 Newton 求解器配置见 Newton 。OvPhysX 是独立的实验性后端,有自身的限制,并不是此处 PhysX 后端的另一种求解器模式。

本页用于理解模型差异。具体参数和基于测量的调参方法见 MJWarp 调优 或 Kamino 调优 ;准确字段与默认值以生成的求解器配置 API 为准。

Newton 求解器之间更细致的功能、接触材质和关节支持比较,见 Newton 功能支持矩阵 。

检查点兼容性和关节体顺序见 在 PhysX 和 Newton 之间迁移策略 。其中的 并排迁移演示 展示了在 Newton MJWarp 中运行 PhysX 训练策略的效果。

功能概览#

这些是通过 Isaac Lab 资源 API 暴露的求解器直接支持的功能。某个任务是否受支持,仍取决于其注册的物理预设。在耦合场景中,刚体动力学与可变形体或材料动力学可能由不同求解器处理。

✅ 表示支持,❌ 表示不支持,⚠️ 表示有限支持。各单元格会注明 GPU 要求和实验性功能。

文档所述 Isaac Lab 工作流程中的求解器功能#

功能

PhysX

Newton MJWarp

Newton Kamino( P-ADMM / DVI )

Newton VBD

Newton MPM

主要处理对象

刚性机器人和网格可变形体

刚性关节机器人

刚性机构,包括闭环机构

布料、软体和线缆

流体、颗粒介质和雪

刚体动力学

✅ 支持

✅ 支持

✅ 支持

✅ 支持

❌ 不支持;仅支持碰撞体

关节体建模方式

✅ 约化坐标

✅ 广义坐标

✅ 最大坐标

⚠️ 有限支持最大坐标关节

❌ 不支持关节动力学

布料(表面网格)

✅ 支持;需要 GPU,实验性功能

❌ 不支持

❌ 不支持

✅ 支持

❌ 不支持

软体(体积网格)

✅ 支持;需要 GPU,实验性功能

❌ 不支持

❌ 不支持

✅ 支持

❌ 不支持

分段线缆( CableObject )

❌ 不支持

❌ 不支持

❌ 不支持

✅ 支持;实验性功能

❌ 不支持

粒子–网格连续介质材料

❌ 不支持

❌ 不支持

❌ 不支持

❌ 不支持

✅ 支持;实验性功能

主要调参项

时间步长、TGS/PGS 迭代次数、GPU 容量

子步数、迭代次数、接触容量

子步数、P-ADMM/DVI 收敛控制、稳定化

子步数、迭代次数、材料与接触刚度

体素分辨率、子步数、流变求解收敛控制

求解器详情

PhysX 概览

MuJoCo-Warp

Kamino

VBD

隐式 MPM

调参流程

PhysX

MJWarp

Kamino

VBD

MPM

PhysX 表面与体积可变形体使用实验性资源 API,需要 CUDA,并要求 scene.replicate_physics=False 。节点运动学目标仅支持体积可变形体。资源要求见 可变形物体 和 DeformableObject 。

VBD 对关节的有限支持不能替代通用机器人关节体。维护中的 Franka 可变形体任务通过代理耦合,让 MJWarp 处理机器人、VBD 处理可变形体。MPM 推进粒子材料,动态刚体需要单独的刚体求解器。受支持的场景构建方式和耦合限制见 耦合求解器 和 隐式 MPM 。

为什么不能直接迁移求解器设置#

配置值只有在使用它的求解器中才具有确定含义。例如,PhysX 场景参数不能配置 Newton 求解器,MJWarp 的 MuJoCo 专用参数也不能配置 PhysX。Isaac Lab 的统一配置负责选择后端与求解器,不会将某个数值设置换算成等效的物理作用。

即使名称相似,设置也可能作用于不同的接触模型或收敛条件。因此,迁移应先保留机械模型、碰撞几何、材质绑定、重置状态、执行器行为和控制周期,再比较实际物理行为,使用目标求解器自己的参数进行调节。

摩擦与接触#

PhysX 使用基于接触片的库仑摩擦,相邻接触可以关联成一个摩擦接触片。摩擦关联和偏移参数属于 PhysxCfg 。MJWarp 使用 MuJoCo 的接触模型,包括可选的多面体或椭圆摩擦锥,以及摩擦阻抗比。Kamino 在最大坐标约束动力学求解中处理硬摩擦接触,并通过生成的 API 提供接触材质混合和热启动配置。

碰撞处理路径也不同。PhysX 通过 enable_ccd 提供连续碰撞检测,但启用 GPU 动力学时,Isaac Lab 会禁用这一选项。MJWarp 可使用内部 MuJoCo 接触路径或 Newton 碰撞流程,两者互斥。Kamino 可使用 Newton 碰撞流程,也可在启用后使用其内部碰撞检测器。这些选择决定哪些容量和碰撞参数生效。

对迁移的影响。 相同材质系数不能保证相同的滑移、抓取稳定性或接触数量。调节摩擦前,应重新验证碰撞几何和接触行为。依赖 PhysX CCD 的任务迁移到 Newton 后,需要独立验证时间步长和碰撞策略;MJWarp 的 ccd_iterations 是凸 GJK/EPA 算法的收敛迭代上限,并不是 PhysX 式的 CCD 开关。

恢复系数与稳定化#

PhysX 根据材质属性和场景级反弹阈值应用恢复系数。可选的稳定化处理能够改善大时间步长下的行为,但可能使接触传感器报告的力不准确。MJWarp 通过 MuJoCo 模型和求解器形式描述接触柔顺性;Kamino 则分别为双边关节约束、单边关节限位和单边接触提供 Baumgarte 稳定化。

这些机制不同,因此复制恢复系数或稳定化设置,不能保证静止接触行为一致。准确的配置参数见 PhysxCfg 、 MJWarpSolverCfg 和 KaminoConstraintsCfg API 文档。

对迁移的影响。 在目标求解器中验证反弹、穿透、抖振和测得的接触力。不要通过稳定化或恢复系数参数,弥补无效的碰撞几何、重置状态或材质属性。

坐标与状态一致性#

PhysX 关节体和 MJWarp 使用简约关节坐标表示关节系统状态。Kamino 使用最大坐标和约束求解刚性多体系统,其重置流程可通过正向运动学使刚体位姿与简约关节状态保持一致。是否使用这一流程,取决于 use_fk_solver 和关节体结构。

Isaac Lab 资源 API 在各后端之间维持统一的公共状态接口,但自定义重置代码仍可能写入与目标求解器状态表示不一致的状态。

对迁移的影响。 使用资源写入 API 进行重置,并用固定状态验证首次步进。对于 Kamino,应先将关节状态与刚体位姿的不一致视为重置建模问题,再考虑调节求解器增益。

时间步长与收敛#

PhysX 按仿真时间步长推进,在场景限制范围内使用各对象的迭代次数。MJWarp 和 Kamino 在每个物理步中均运行 num_substeps 个求解器子步,因此求解器时间步长等于仿真时间步长除以子步数。增加子步会改变积分工作量,不能将 PhysX 的迭代设置直接换算成 Newton 中的等效设置。

子步本身不会刷新 Newton 碰撞流程的接触。当使用该流程时,只有 collision_decimation 为正且小于 num_substeps ,才会在一个物理步中重新进行碰撞检测;默认值为零,表示仅在每个物理步开始时检测一次。MJWarp 使用内部 MuJoCo 接触路径,或 Kamino 使用内部碰撞检测器时,此设置不生效。

MJWarp 提供外层迭代次数、线搜索迭代次数和残差容差。Kamino 的 P-ADMM 与 DVI 模式有不同的迭代和收敛参数。PhysX 则有自身的位置与速度迭代模型。应查阅生成的 API 和专门的调参指南,了解当前参数,而不是复制另一种求解器的默认值。

对迁移的影响。 在预期策略控制周期下比较一个固定的复现案例,再分别测试时间步长、子步数和求解器收敛。增加迭代次数不能修复无效接触几何、不兼容的重置状态或不稳定的控制器。

容量与内存#

PhysX 根据场景上限分配 GPU 缓冲区,包括刚体接触容量。MJWarp 有 nconmax 、 njmax 等每个仿真世界的接触和约束上限。Kamino 除所选碰撞路径使用的容量外,也有每个仿真世界的接触分配参数。即使每个环境包含相同资源,这些参数的单位和失败方式仍各不相同。

对迁移的影响。 扩大环境数量前,先测量目标求解器在重置和接触最密集状态下的需求。优先增大已观测到溢出的容量;容量调整不能修复无效的接触模型或收敛问题。