Add sleep related data structures

PiperOrigin-RevId: 829055431
Change-Id: I1ccbd77a57044a754ae7db611b4c2c0010fbda53
This commit is contained in:
Yuval Tassa
2025-11-06 12:09:59 -08:00
committed by Copybara-Service
parent 3080e3424f
commit 252a0d73df
37 changed files with 1907 additions and 186 deletions
+1 -1
View File
@@ -950,7 +950,7 @@ Euler integrator, semi-implicit in velocity.
self.assertEqual(mujoco.mjtEnableBit.mjENBL_OVERRIDE, 1 << 0)
self.assertEqual(mujoco.mjtEnableBit.mjENBL_ENERGY, 1 << 1)
self.assertEqual(mujoco.mjtEnableBit.mjENBL_FWDINV, 1 << 2)
self.assertEqual(mujoco.mjtEnableBit.mjNENABLE, 5)
self.assertEqual(mujoco.mjtEnableBit.mjNENABLE, 6)
self.assertEqual(mujoco.mjtGeom.mjGEOM_PLANE, 0)
self.assertEqual(mujoco.mjtGeom.mjGEOM_HFIELD, 1)
self.assertEqual(mujoco.mjtGeom.mjGEOM_SPHERE, 2)
+25 -1
View File
@@ -59,7 +59,8 @@ ENUMS: Mapping[str, EnumDecl] = dict([
('mjENBL_FWDINV', 4),
('mjENBL_INVDISCRETE', 8),
('mjENBL_MULTICCD', 16),
('mjNENABLE', 5),
('mjENBL_SLEEP', 32),
('mjNENABLE', 6),
]),
)),
('mjtJoint',
@@ -418,6 +419,19 @@ ENUMS: Mapping[str, EnumDecl] = dict([
('mjSAMEFRAME_INERTIAROT', 4),
]),
)),
('mjtSleepPolicy',
EnumDecl(
name='mjtSleepPolicy',
declname='enum mjtSleepPolicy_',
values=dict([
('mjSLEEP_AUTO', 0),
('mjSLEEP_AUTO_NEVER', 1),
('mjSLEEP_AUTO_ALLOWED', 2),
('mjSLEEP_NEVER', 3),
('mjSLEEP_ALLOWED', 4),
('mjSLEEP_INIT', 5),
]),
)),
('mjtLRMode',
EnumDecl(
name='mjtLRMode',
@@ -553,6 +567,16 @@ ENUMS: Mapping[str, EnumDecl] = dict([
('mjNTIMER', 15),
]),
)),
('mjtSleepState',
EnumDecl(
name='mjtSleepState',
declname='enum mjtSleepState_',
values=dict([
('mjS_STATIC', -1),
('mjS_ASLEEP', 0),
('mjS_AWAKE', 1),
]),
)),
('mjtGeomInertia',
EnumDecl(
name='mjtGeomInertia',
+2 -1
View File
@@ -43,7 +43,8 @@ class EnumsTest(absltest.TestCase):
('mjENBL_FWDINV', 1<<2),
('mjENBL_INVDISCRETE', 1<<3),
('mjENBL_MULTICCD', 1<<4),
('mjNENABLE', 5)))
('mjENBL_SLEEP', 1<<5),
('mjNENABLE', 6)))
# values mostly increment by one with occasional overrides
def test_mjtGeom(self): # pylint: disable=invalid-name
+174
View File
@@ -148,6 +148,11 @@ STRUCTS: Mapping[str, StructDecl] = dict([
type=ValueType(name='mjtNum'),
doc='convex collision solver tolerance',
),
StructFieldDecl(
name='sleep_tolerance',
type=ValueType(name='mjtNum'),
doc='sleep velocity tolerance',
),
StructFieldDecl(
name='gravity',
type=ArrayType(
@@ -1846,6 +1851,54 @@ STRUCTS: Mapping[str, StructDecl] = dict([
doc='diag. inertia in qpos0',
array_extent=('nv',),
),
StructFieldDecl(
name='dof_length',
type=PointerType(
inner_type=ValueType(name='mjtNum'),
),
doc='linear: 1; angular: approx. length scale',
array_extent=('nv',),
),
StructFieldDecl(
name='tree_bodyadr',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='start addr of bodies',
array_extent=('ntree',),
),
StructFieldDecl(
name='tree_bodynum',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='number of bodies in tree',
array_extent=('ntree',),
),
StructFieldDecl(
name='tree_dofadr',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='start addr of dofs',
array_extent=('ntree',),
),
StructFieldDecl(
name='tree_dofnum',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='number of dofs in tree',
array_extent=('ntree',),
),
StructFieldDecl(
name='tree_sleep_policy',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='sleep policy (mjtSleepPolicy)',
array_extent=('ntree',),
),
StructFieldDecl(
name='geom_type',
type=PointerType(
@@ -3742,6 +3795,22 @@ STRUCTS: Mapping[str, StructDecl] = dict([
doc='group for visibility',
array_extent=('ntendon',),
),
StructFieldDecl(
name='tendon_treenum',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc="number of trees along tendon's path",
array_extent=('ntendon',),
),
StructFieldDecl(
name='tendon_treeid',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc="first two trees along tendon's path",
array_extent=('ntendon', 2),
),
StructFieldDecl(
name='tendon_limited',
type=PointerType(
@@ -5136,6 +5205,26 @@ STRUCTS: Mapping[str, StructDecl] = dict([
type=ValueType(name='int'),
doc='number of dofs in all islands',
),
StructFieldDecl(
name='ntree_awake',
type=ValueType(name='int'),
doc='number of awake trees',
),
StructFieldDecl(
name='nbody_awake',
type=ValueType(name='int'),
doc='number of awake dynamic and static bodies',
),
StructFieldDecl(
name='nparent_awake',
type=ValueType(name='int'),
doc='number of bodies with awake parents',
),
StructFieldDecl(
name='nv_awake',
type=ValueType(name='int'),
doc='number of awake dofs',
),
StructFieldDecl(
name='time',
type=ValueType(name='mjtNum'),
@@ -5283,6 +5372,14 @@ STRUCTS: Mapping[str, StructDecl] = dict([
doc='sensor data array',
array_extent=('nsensordata',),
),
StructFieldDecl(
name='tree_asleep',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='<0: awake; >=0: index cycle of sleeping trees',
array_extent=('ntree',),
),
StructFieldDecl(
name='plugin',
type=PointerType(
@@ -5667,6 +5764,46 @@ STRUCTS: Mapping[str, StructDecl] = dict([
doc='was bounding volume checked for collision',
array_extent=('nbvh',),
),
StructFieldDecl(
name='tree_awake',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='is tree awake; 0: asleep; 1: awake',
array_extent=('ntree',),
),
StructFieldDecl(
name='body_awake',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='body sleep state (mjtSleepState)',
array_extent=('nbody',),
),
StructFieldDecl(
name='body_awake_ind',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='indices of awake and static bodies',
array_extent=('nbody',),
),
StructFieldDecl(
name='parent_awake_ind',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='indices of bodies with awake or static parents',
array_extent=('nbody',),
),
StructFieldDecl(
name='dof_awake_ind',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='indices of awake dofs',
array_extent=('nv',),
),
StructFieldDecl(
name='flexedge_velocity',
type=PointerType(
@@ -6003,6 +6140,38 @@ STRUCTS: Mapping[str, StructDecl] = dict([
doc='first efc address involving tendon; -1: none',
array_extent=('ntendon',),
),
StructFieldDecl(
name='tree_island',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='island id of this tree; -1: none',
array_extent=('ntree',),
),
StructFieldDecl(
name='island_ntree',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='number of trees in this island',
array_extent=('nisland',),
),
StructFieldDecl(
name='island_itreeadr',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='island start address in itree vector',
array_extent=('nisland',),
),
StructFieldDecl(
name='map_itree2tree',
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='map from itree to tree',
array_extent=('ntree',),
),
StructFieldDecl(
name='dof_island',
type=PointerType(
@@ -6815,6 +6984,11 @@ STRUCTS: Mapping[str, StructDecl] = dict([
type=ValueType(name='double'),
doc='gravity compensation',
),
StructFieldDecl(
name='sleep',
type=ValueType(name='mjtSleepPolicy'),
doc='sleep policy',
),
StructFieldDecl(
name='userdata',
type=PointerType(