Expose mj_copyData in Python bindings.
This allows calling `mujoco.mj_copyData(dest, model, src)` to copy data between existing `mjData` instances. PiperOrigin-RevId: 855150139 Change-Id: If122cb7acf590846e25ee15f9770c3c087147169
This commit is contained in:
committed by
Copybara-Service
parent
1d482047d1
commit
d7e4038be8
@@ -495,6 +495,15 @@ class MuJoCoBindingsTest(parameterized.TestCase):
|
|||||||
mujoco.mj_forward(self.model, data_copy)
|
mujoco.mj_forward(self.model, data_copy)
|
||||||
self.assertEqual(data_copy.ncon, 4)
|
self.assertEqual(data_copy.ncon, 4)
|
||||||
|
|
||||||
|
# Test copying into existing data.
|
||||||
|
data_copy.qpos[1] = 1.234
|
||||||
|
data_copy.geom_xpos[2] = 5.678
|
||||||
|
self.assertFalse(np.array_equal(self.data.qpos, data_copy.qpos))
|
||||||
|
self.assertFalse(np.array_equal(self.data.geom_xpos, data_copy.geom_xpos))
|
||||||
|
mujoco.mj_copyData(self.data, self.model, data_copy)
|
||||||
|
np.testing.assert_array_equal(self.data.qpos, data_copy.qpos)
|
||||||
|
np.testing.assert_array_equal(self.data.geom_xpos, data_copy.geom_xpos)
|
||||||
|
|
||||||
def test_mjdata_can_read_warning_array(self):
|
def test_mjdata_can_read_warning_array(self):
|
||||||
warnings = self.data.warning
|
warnings = self.data.warning
|
||||||
self.assertLen(warnings, mujoco.mjtWarning.mjNWARNING)
|
self.assertLen(warnings, mujoco.mjtWarning.mjNWARNING)
|
||||||
|
|||||||
@@ -159,7 +159,11 @@ PYBIND11_MODULE(_functions, pymodule) {
|
|||||||
// Skipped: mj_deleteModel (have MjModel.__del__)
|
// Skipped: mj_deleteModel (have MjModel.__del__)
|
||||||
Def<traits::mj_sizeModel>(pymodule);
|
Def<traits::mj_sizeModel>(pymodule);
|
||||||
// Skipped: mj_makeData (have MjData.__init__)
|
// Skipped: mj_makeData (have MjData.__init__)
|
||||||
// Skipped: mj_copyData (have MjData.__copy__, memory managed by MjData)
|
DEF_WITH_OMITTED_PY_ARGS(traits::mj_copyData)(
|
||||||
|
pymodule,
|
||||||
|
[](raw::MjData* dest, const raw::MjModel* m, const raw::MjData* src) {
|
||||||
|
InterceptMjErrors(::mj_copyData)(dest, m, src);
|
||||||
|
});
|
||||||
Def<traits::mj_resetData>(pymodule);
|
Def<traits::mj_resetData>(pymodule);
|
||||||
Def<traits::mj_resetDataDebug>(pymodule);
|
Def<traits::mj_resetDataDebug>(pymodule);
|
||||||
Def<traits::mj_resetDataKeyframe>(pymodule);
|
Def<traits::mj_resetDataKeyframe>(pymodule);
|
||||||
|
|||||||
Reference in New Issue
Block a user