求解器差异#
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 要求和实验性功能。
功能 |
|||||
|---|---|---|---|---|---|
主要处理对象 |
刚性机器人和网格可变形体 |
刚性关节机器人 |
刚性机构,包括闭环机构 |
布料、软体和线缆 |
流体、颗粒介质和雪 |
刚体动力学 |
✅ 支持 |
✅ 支持 |
✅ 支持 |
✅ 支持 |
❌ 不支持;仅支持碰撞体 |
关节体建模方式 |
✅ 约化坐标 |
✅ 广义坐标 |
✅ 最大坐标 |
⚠️ 有限支持最大坐标关节 |
❌ 不支持关节动力学 |
布料(表面网格) |
✅ 支持;需要 GPU,实验性功能 |
❌ 不支持 |
❌ 不支持 |
✅ 支持 |
❌ 不支持 |
软体(体积网格) |
✅ 支持;需要 GPU,实验性功能 |
❌ 不支持 |
❌ 不支持 |
✅ 支持 |
❌ 不支持 |
分段线缆( |
❌ 不支持 |
❌ 不支持 |
❌ 不支持 |
✅ 支持;实验性功能 |
❌ 不支持 |
粒子–网格连续介质材料 |
❌ 不支持 |
❌ 不支持 |
❌ 不支持 |
❌ 不支持 |
✅ 支持;实验性功能 |
主要调参项 |
时间步长、TGS/PGS 迭代次数、GPU 容量 |
子步数、迭代次数、接触容量 |
子步数、P-ADMM/DVI 收敛控制、稳定化 |
子步数、迭代次数、材料与接触刚度 |
体素分辨率、子步数、流变求解收敛控制 |
求解器详情 |
|||||
调参流程 |
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 除所选碰撞路径使用的容量外,也有每个仿真世界的接触分配参数。即使每个环境包含相同资源,这些参数的单位和失败方式仍各不相同。
对迁移的影响。 扩大环境数量前,先测量目标求解器在重置和接触最密集状态下的需求。优先增大已观测到溢出的容量;容量调整不能修复无效的接触模型或收敛问题。