Skip to content

踩坑GitHub google-deepmind/mujoco昨天

MuJoCo mjc_multicontact圆柱接触数依赖GJK单纯形顶点顺序 ​

本文由 AI 根据公开内容整理,可能有误,请以原文为准:mjc_multicontact puts a cylinder's edge at the first simplex vertex's angle, so the contacts depend on the order of GJK/EPA's simplex vertices(GitHub google-deepmind/mujoco #3752)

状态:有绕过办法

问题 ​

在MuJoCo中,当GJK/EPA终止于圆柱边缘时,mjc_multicontact依据单纯形首个顶点角度恢复边缘法向。因圆柱支撑索引仅区分上下底面,同底面不同角度的顶点被视为同一顶点,导致接触裁剪结果依赖顶点发现顺序。测试显示31%的碰撞姿态下,改变单纯形循环顺序会导致接触点数量变化,造成仿真不确定性。

环境 ​

MuJoCo 3.17.0 (PyPI/main f0b3de3),Windows 11,Python 3.12,无GPU。测试对象为固定圆柱(r=15mm, half-length=70mm)与凸网格(椭球体, margin=0.5mm)。

解决办法 ​

  1. 等待官方修复补丁合入,该补丁将改为基于witness point角度推导圆柱生成线(generator),并保留轴上witness点的回退逻辑。
  2. 在补丁发布前,可使用Issue中提供的3000随机姿态测试脚本作为回归验证基准,确保所有1314个接触姿态在不同单纯形循环顺序下接触计数一致。
  3. 临时规避方案:在自定义碰撞检测或后处理中,避免直接依赖mjc_multicontact对圆柱边缘的原始输出,或手动将圆柱边缘法向对齐至witness point角度以消除顺序敏感性。

讨论原作者:@lulu-loopp 等,版权归原作者所有。

基于本页技术方向关联的整机参数、核心零部件、实测报告与同赛道选型横评。

来源

本页事实对应的公开页面,以原文为准。

  1. GitHub google-deepmind/mujoco #3752:mjc_multicontact puts a cylinder's edge at the first simplex vertex's angle, so the contacts depend on the order of GJK/EPA's simplex vertices访问 2026-11-07