Set mocap_pos/quat in make_data. Fixes #2606.

PiperOrigin-RevId: 755903897
Change-Id: Ied04e9bd3febfe1bbbba24ed1f52b3c0c6e50f38
This commit is contained in:
Baruch Tabanpour
2025-05-07 10:12:29 -07:00
committed by Copybara-Service
parent ecb769fc3a
commit 421c487d9d
2 changed files with 13 additions and 0 deletions
+2
View File
@@ -17,6 +17,8 @@ MJX
^^^
1. Added inverse dynamics.
2. Added tendon actuator force sensor.
3. Fix :github:issue:`2606` such that ``make_data`` copies over ``mocap_pos`` and ``mocap_quat``
from ``body_pos`` and ``body_quat``.
Version 3.3.1 (Apr 9, 2025)
----------------------------
+11
View File
@@ -401,6 +401,17 @@ def make_data(
eq_active=m.eq_active0,
**zero_fields,
)
if m.nmocap:
# Set mocap_pos/quat = body_pos/quat for mocap bodies as done in C MuJoCo.
body_mask = m.body_mocapid >= 0
body_pos = m.body_pos[body_mask]
body_quat = m.body_quat[body_mask]
d = d.replace(
mocap_pos=body_pos[m.body_mocapid[body_mask]],
mocap_quat=body_quat[m.body_mocapid[body_mask]],
)
d = jax.device_put(d, device=device)
return d