Improve logic and documentation for sleeping sensors

PiperOrigin-RevId: 830891115
Change-Id: Ife8309b165c085b54c9f668d825d69ed12a9a8f0
This commit is contained in:
Yuval Tassa
2025-11-11 06:44:53 -08:00
committed by Copybara-Service
parent 3e167e0f0b
commit 22c0b68903
5 changed files with 99 additions and 48 deletions
+34 -9
View File
@@ -10,30 +10,55 @@
<worldbody>
<light pos="0 -1 3"/>
<geom name="floor" type="plane" size="1 1 .01"/>
<site name="inside" type="box" size=".5 .5 .5" rgba="0 0 0 0"/>
<body name="1" pos="0 0 .1">
<freejoint/>
<geom name="1" type="box" size=".1 .1 .1"/>
<body name="force_static" pos="0 0 .025">
<geom name="0" type="box" size=".15 .15 .025"/>
<site name="force_static"/>
</body>
<body name="2" pos="0 0 .3">
<body name="1" pos="0 0 .15">
<freejoint/>
<geom name="1" type="box" size=".1 .1 .05" pos="0 0 .05"/>
<body name="force_dynamic" pos="0 0 -.05">
<geom name="1_bottom" type="box" size=".1 .1 .05"/>
<site name="force_dynamic"/>
</body>
</body>
<body name="2" pos="0 0 .35">
<freejoint/>
<geom name="2" type="box" size=".1 .1 .1"/>
<site name="2"/>
<site name="2" type="box" size=".11 .11 .11" rgba=".5 .7 .5 .2"/>
</body>
<body name="3" pos="0 0 1.2" euler="10 20 30">
<freejoint/>
<geom name="3" type="box" size=".1 .1 .1"/>
<site name="rf" type="cylinder" size=".01 .03" pos="0 0 -.11" zaxis="0 0 -1"/>
</body>
</worldbody>
<sensor>
<contact geom1="1" geom2="2"/>
<contact geom1="1" geom2="2" reduce="maxforce" data="force"/>
<contact geom1="1" geom2="floor"/>
<contact geom1="1" reduce="maxforce" data="force"/>
<!-- for most sensors, expect match between sleep enabled/disabled -->
<contact subtree1="1" geom2="2"/>
<contact subtree1="1" geom2="2" reduce="maxforce" data="force"/>
<contact subtree1="1" geom2="floor"/>
<contact subtree1="1"/>
<contact subtree1="1" reduce="maxforce" data="force"/>
<insidesite site="inside" objtype="body" objname="3"/>
<framelinvel objtype="body" objname="3"/>
<framelinvel objtype="body" objname="3" reftype="body" refname="2"/>
<gyro site="2"/>
<touch site="2"/>
<clock/>
<rangefinder site="rf"/>
<force site="force_dynamic"/>
<!-- sensors marked with user="1": expect mismatch between sleep enabled/disabled -->
<contact user="1" reduce="maxforce" data="force"/>
<contact user="1" geom1="floor"/>
<contact user="1" site="2"/>
<force user="1" site="force_static"/>
</sensor>
</mujoco>