Enable multiccd by default.

PiperOrigin-RevId: 902752921
Change-Id: I8e2085ff17db0ac0db1641b8837415c458e5eca4
This commit is contained in:
Kyle Bayes
2026-04-20 11:59:24 -07:00
committed by Copybara-Service
parent 8e7787ad09
commit 6cb6e5a93f
22 changed files with 43 additions and 47 deletions
-2
View File
@@ -92,8 +92,6 @@ class EnableBit(enum.IntFlag):
INVDISCRETE = mujoco.mjtEnableBit.mjENBL_INVDISCRETE
# unsupported: OVERRIDE, ENERGY, FWDINV, ISLAND
# required by the C implementation only, ignored otherwise: MULTICCD
MULTICCD = mujoco.mjtEnableBit.mjENBL_MULTICCD
SLEEP = mujoco.mjtEnableBit.mjENBL_SLEEP
@@ -36,7 +36,7 @@ from mujoco.mjx.third_party.mujoco_warp._src.types import MJ_MAX_EPAHORIZON
from mujoco.mjx.third_party.mujoco_warp._src.types import MJ_MAXCONPAIR
from mujoco.mjx.third_party.mujoco_warp._src.types import MJ_MAXVAL
from mujoco.mjx.third_party.mujoco_warp._src.types import Data
from mujoco.mjx.third_party.mujoco_warp._src.types import EnableBit
from mujoco.mjx.third_party.mujoco_warp._src.types import DisableBit
from mujoco.mjx.third_party.mujoco_warp._src.types import GeomType
from mujoco.mjx.third_party.mujoco_warp._src.types import Model
from mujoco.mjx.third_party.mujoco_warp._src.types import mat43
@@ -1127,7 +1127,7 @@ def convex_narrowphase(m: Model, d: Data, ctx: CollisionContext, collision_table
epa_iterations = 16 if nboxbox == ncollision else m.opt.ccd_iterations
# set to true to enable multiccd
use_multiccd = m.opt.enableflags & EnableBit.MULTICCD
use_multiccd = m.opt.disableflags & DisableBit.MULTICCD == 0
# need at least 4 (square sides) if there's a box collision needing multiccd
nmaxpolygon = 4 if nboxbox > 0 else 0
+1 -1
View File
@@ -370,7 +370,7 @@ def put_model(mjm: mujoco.MjModel) -> types.Model:
)
# check for unsupported margin + multicontact / box-box CCD combinations
use_multiccd = mjm.opt.enableflags & types.EnableBit.MULTICCD
use_multiccd = (mjm.opt.disableflags & types.DisableBit.MULTICCD) == 0
nativeccd_disabled = mjm.opt.disableflags & types.DisableBit.NATIVECCD
BOX = int(mujoco.mjtGeom.mjGEOM_BOX)
MESH = int(mujoco.mjtGeom.mjGEOM_MESH)
+2 -2
View File
@@ -184,6 +184,7 @@ class DisableBit(enum.IntFlag):
EULERDAMP: implicit damping for Euler integration
NATIVECCD: native convex collision detection (ignored in MJWarp)
ISLAND: constraint islands
MULTICCD: multiple CCD contact points
"""
CONSTRAINT = mujoco.mjtDisableBit.mjDSBL_CONSTRAINT
@@ -203,6 +204,7 @@ class DisableBit(enum.IntFlag):
EULERDAMP = mujoco.mjtDisableBit.mjDSBL_EULERDAMP
NATIVECCD = mujoco.mjtDisableBit.mjDSBL_NATIVECCD
ISLAND = mujoco.mjtDisableBit.mjDSBL_ISLAND
MULTICCD = mujoco.mjtDisableBit.mjDSBL_MULTICCD
# unsupported: MIDPHASE, AUTORESET
@@ -212,12 +214,10 @@ class EnableBit(enum.IntFlag):
Attributes:
ENERGY: energy computation
INVDISCRETE: discrete-time inverse dynamics
MULTICCD: multiple contacts with CCD
"""
ENERGY = mujoco.mjtEnableBit.mjENBL_ENERGY
INVDISCRETE = mujoco.mjtEnableBit.mjENBL_INVDISCRETE
MULTICCD = mujoco.mjtEnableBit.mjENBL_MULTICCD
# unsupported: OVERRIDE, FWDINV, ISLAND