Add boolean flags for gravity compensation and surface velocity in mjModel.

These fields (`flg_gravcomp` and `flg_surfacevel`) replace the fast-path checks originally guarded by `ngravcomp` and (recently) `nsurfacevel`. Since the engine uses these integers only as flags (zero vs non-zero), migrating them to actual booleans makes them writeable from the Python bindings at runtime without violating size/dimension constraints.

The legacy integer field `ngravcomp` is marked as deprecated and will be removed in a future release.

PiperOrigin-RevId: 949779204
Change-Id: Ifab1f026063a4239302e6ad689663b611b59dda8
This commit is contained in:
Yuval Tassa
2026-07-17 15:04:37 -07:00
committed by Copybara-Service
parent ebd4abae03
commit a04b0c5b97
20 changed files with 111 additions and 34 deletions
+19
View File
@@ -169,6 +169,25 @@ class MuJoCoBindingsTest(parameterized.TestCase):
self.data.qpos, [0.12345] * len(self.data.qpos)
)
def test_flg_gravcomp_and_surfacevel_properties(self):
self.assertFalse(self.model.flg_gravcomp)
self.assertFalse(self.model.flg_surfacevel)
self.assertEqual(self.model.ngravcomp, 0)
self.model.flg_gravcomp = True
self.assertTrue(self.model.flg_gravcomp)
self.assertEqual(self.model.ngravcomp, 1)
self.model.flg_surfacevel = True
self.assertTrue(self.model.flg_surfacevel)
self.model.flg_gravcomp = False
self.assertFalse(self.model.flg_gravcomp)
self.assertEqual(self.model.ngravcomp, 0)
self.model.flg_surfacevel = False
self.assertFalse(self.model.flg_surfacevel)
def test_array_is_a_view(self):
qpos_ref = self.data.qpos
self.data.qpos = 0.789