Add replicate element to MJCF. Fixes #553

PiperOrigin-RevId: 629393578
Change-Id: Ia1db1b9e47eba8868117b0f7b85edcd0cc1b6d79
This commit is contained in:
Alessio Quaglino
2024-04-30 06:28:09 -07:00
committed by Copybara-Service
parent 6a5bbb5157
commit 26f23066d1
30 changed files with 8756 additions and 2807 deletions
+76 -436
View File
@@ -27,20 +27,20 @@
<default>
<geom solimp=".9 .9 .01"/>
<default class="object1">
<geom type="capsule" material="object1" size="0.1 0.05"/>
<default class="capsule">
<geom type="capsule" material="capsule" size="0.1 0.05"/>
</default>
<default class="object2">
<geom type="ellipsoid" material="object2" size="0.15 0.1 0.07"/>
<default class="ellipsoid">
<geom type="ellipsoid" material="ellipsoid" size="0.15 0.1 0.07"/>
</default>
<default class="object3">
<geom type="box" material="object3" size="0.15 0.1 0.05"/>
<default class="box">
<geom type="box" material="box" size="0.15 0.1 0.05"/>
</default>
<default class="object4">
<geom type="cylinder" material="object4" size="0.1 0.05" condim="4" friction="1 .01 .01"/>
<default class="cylinder">
<geom type="cylinder" material="cylinder" size="0.1 0.05" condim="4" friction="1 .01 .01"/>
</default>
<default class="object5">
<geom type="sphere" material="object5" size="0.1"/>
<default class="sphere">
<geom type="sphere" material="sphere" size="0.1"/>
</default>
<default class="border">
<geom type="capsule" size="0.4" rgba=".4 .4 .4 1"/>
@@ -56,13 +56,13 @@
rgb1="0.6 0.6 0.6" rgb2="0.6 0.6 0.6" markrgb="1 1 1"/>
<texture name="texplane" type="2d" builtin="checker" rgb1=".4 .4 .4" rgb2=".6 .6 .6"
width="512" height="512"/>
<material name='MatPlane' reflectance='0.3' texture="texplane" texrepeat="1 1" texuniform="true"
<material name="MatPlane" reflectance="0.3" texture="texplane" texrepeat="1 1" texuniform="true"
rgba=".7 .7 .7 1"/>
<material name='object1' texture="texgeom" texuniform="true" rgba=".4 .9 .6 1" />
<material name='object2' texture="texgeom" texuniform="true" rgba=".4 .6 .9 1" />
<material name='object3' texture="texgeom" texuniform="true" rgba=".4 .9 .9 1" />
<material name='object4' texture="texgeom" texuniform="true" rgba=".8 .6 .8 1" />
<material name='object5' texture="texgeom" texuniform="true" rgba=".9 .1 .1 1" />
<material name="capsule" texture="texgeom" texuniform="true" rgba=".4 .9 .6 1" />
<material name="ellipsoid" texture="texgeom" texuniform="true" rgba=".4 .6 .9 1" />
<material name="box" texture="texgeom" texuniform="true" rgba=".4 .9 .9 1" />
<material name="cylinder" texture="texgeom" texuniform="true" rgba=".8 .6 .8 1" />
<material name="sphere" texture="texgeom" texuniform="true" rgba=".9 .1 .1 1" />
</asset>
<visual>
@@ -84,430 +84,70 @@
<geom class="borderpost" pos="3 -3 0"/>
<geom class="borderpost" pos="-3 -3 0"/>
<body pos="-2 -2 1" quat="-0.632456 -0.632456 0.316228 0.316228">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 -2 2" quat="-0.5547 -0.5547 0.5547 0.27735">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 -2 3" quat="-0.471405 -0.471405 0.707107 0.235702">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 -2 4" quat="-0.471405 -0.471405 0.707107 0.235702">
<freejoint/>
<geom class="object1"/>
</body>
<frame pos="-2 -2 2.5">
<replicate count="5" offset="0 1 0" euler="0 180 0">
<frame pos="0 0 -1.5">
<replicate count="4" offset="0 0 1" euler="0 0 60">
<body euler="30 40 0">
<freejoint/>
<geom class="capsule"/>
</body>
</replicate>
</frame>
</replicate>
</frame>
<body pos="-2 -1 1" quat="-0.755929 -0.377964 0.377964 0.377964">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 -1 2" quat="-0.632456 -0.316228 0.632456 0.316228">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 -1 3" quat="-0.516398 -0.258199 0.774597 0.258199">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 -1 4" quat="-0.516398 -0.258199 0.774597 0.258199">
<freejoint/>
<geom class="object1"/>
</body>
<frame pos="-1 -2 2.5">
<replicate count="5" offset="0 1 0" euler="0 180 0">
<frame pos="0 0 -1.5">
<replicate count="4" offset="0 0 1" euler="0 0 60">
<body euler="20 40 60">
<freejoint/>
<geom class="ellipsoid"/>
</body>
</replicate>
</frame>
</replicate>
</frame>
<body pos="-2 0 1" quat="-0.816497 0 0.408248 0.408248">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 0 2" quat="-0.666667 0 0.666667 0.333333">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 0 3" quat="-0.534522 0 0.801784 0.267261">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 0 4" quat="-0.534522 0 0.801784 0.267261">
<freejoint/>
<geom class="object1"/>
</body>
<frame pos="0 -2 3.5">
<replicate count="5" offset="0 1 0" euler="0 180 0">
<frame pos="0 0 -1.5">
<replicate count="4" offset="0 0 1" euler="0 0 60">
<body euler="30 70 110">
<freejoint/>
<geom class="box"/>
</body>
</replicate>
</frame>
</replicate>
</frame>
<body pos="-2 1 1" quat="-0.755929 0.377964 0.377964 0.377964">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 1 2" quat="-0.632456 0.316228 0.632456 0.316228">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 1 3" quat="-0.516398 0.258199 0.774597 0.258199">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 1 4" quat="-0.516398 0.258199 0.774597 0.258199">
<freejoint/>
<geom class="object1"/>
</body>
<frame pos="1 -2 2.5">
<replicate count="5" offset="0 1 0" euler="0 180 0">
<frame pos="0 0 -1.5">
<replicate count="4" offset="0 0 1" euler="0 0 60">
<body euler="60 30 0">
<freejoint/>
<geom class="cylinder"/>
</body>
</replicate>
</frame>
</replicate>
</frame>
<body pos="-2 2 1" quat="-0.632456 0.632456 0.316228 0.316228">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 2 2" quat="-0.5547 0.5547 0.5547 0.27735">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 2 3" quat="-0.471405 0.471405 0.707107 0.235702">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-2 2 4" quat="-0.471405 0.471405 0.707107 0.235702">
<freejoint/>
<geom class="object1"/>
</body>
<body pos="-1 -2 1" quat="-0.377964 -0.755929 0.377964 0.377964">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 -2 2" quat="-0.316228 -0.632456 0.632456 0.316228">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 -2 3" quat="-0.258199 -0.516398 0.774597 0.258199">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 -2 4" quat="-0.258199 -0.516398 0.774597 0.258199">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 -1 1" quat="-0.5 -0.5 0.5 0.5">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 -1 2" quat="-0.377964 -0.377964 0.755929 0.377964">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 -1 3" quat="-0.288675 -0.288675 0.866025 0.288675">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 -1 4" quat="-0.288675 -0.288675 0.866025 0.288675">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 0 1" quat="-0.57735 0 0.57735 0.57735">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 0 2" quat="-0.408248 0 0.816497 0.408248">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 0 3" quat="-0.301511 0 0.904534 0.301511">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 0 4" quat="-0.301511 0 0.904534 0.301511">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 1 1" quat="-0.5 0.5 0.5 0.5">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 1 2" quat="-0.377964 0.377964 0.755929 0.377964">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 1 3" quat="-0.288675 0.288675 0.866025 0.288675">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 1 4" quat="-0.288675 0.288675 0.866025 0.288675">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 2 1" quat="-0.377964 0.755929 0.377964 0.377964">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 2 2" quat="-0.316228 0.632456 0.632456 0.316228">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 2 3" quat="-0.258199 0.516398 0.774597 0.258199">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="-1 2 4" quat="-0.258199 0.516398 0.774597 0.258199">
<freejoint/>
<geom class="object2"/>
</body>
<body pos="0 -2 1" quat="0 -0.816497 0.408248 0.408248">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 -2 2" quat="0 -0.666667 0.666667 0.333333">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 -2 3" quat="0 -0.534522 0.801784 0.267261">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 -2 4" quat="0 -0.534522 0.801784 0.267261">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 -1 1" quat="0 -0.57735 0.57735 0.57735">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 -1 2" quat="0 -0.408248 0.816497 0.408248">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 -1 3" quat="0 -0.301511 0.904534 0.301511">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 -1 4" quat="0 -0.301511 0.904534 0.301511">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0.3 0 1" quat="0 0 0.707107 0.707107">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 0 2" quat="0 0 0.894427 0.447214">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 0 3" quat="0 0 0.948683 0.316228">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 0 4" quat="0 0 0.948683 0.316228">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 1 1" quat="0 0.57735 0.57735 0.57735">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 1 2" quat="0 0.408248 0.816497 0.408248">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 1 3" quat="0 0.301511 0.904534 0.301511">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 1 4" quat="0 0.301511 0.904534 0.301511">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 2 1" quat="0 0.816497 0.408248 0.408248">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 2 2" quat="0 0.666667 0.666667 0.333333">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 2 3" quat="0 0.534522 0.801784 0.267261">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="0 2 4" quat="0 0.534522 0.801784 0.267261">
<freejoint/>
<geom class="object3"/>
</body>
<body pos="1 -2 1" quat="0.377964 -0.755929 0.377964 0.377964">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 -2 2" quat="0.316228 -0.632456 0.632456 0.316228">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 -2 3" quat="0.258199 -0.516398 0.774597 0.258199">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 -2 4" quat="0.258199 -0.516398 0.774597 0.258199">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 -1 1" quat="0.5 -0.5 0.5 0.5">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 -1 2" quat="0.377964 -0.377964 0.755929 0.377964">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 -1 3" quat="0.288675 -0.288675 0.866025 0.288675">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 -1 4" quat="0.288675 -0.288675 0.866025 0.288675">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 0 1" quat="0.57735 0 0.57735 0.57735">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 0 2" quat="0.408248 0 0.816497 0.408248">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 0 3" quat="0.301511 0 0.904534 0.301511">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 0 4" quat="0.301511 0 0.904534 0.301511">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 1 1" quat="0.5 0.5 0.5 0.5">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 1 2" quat="0.377964 0.377964 0.755929 0.377964">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 1 3" quat="0.288675 0.288675 0.866025 0.288675">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 1 4" quat="0.288675 0.288675 0.866025 0.288675">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 2 1" quat="0.377964 0.755929 0.377964 0.377964">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 2 2" quat="0.316228 0.632456 0.632456 0.316228">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 2 3" quat="0.258199 0.516398 0.774597 0.258199">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="1 2 4" quat="0.258199 0.516398 0.774597 0.258199">
<freejoint/>
<geom class="object4"/>
</body>
<body pos="2 -2 1" quat="0.632456 -0.632456 0.316228 0.316228">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 -2 2" quat="0.5547 -0.5547 0.5547 0.27735">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 -2 3" quat="0.471405 -0.471405 0.707107 0.235702">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 -2 4" quat="0.471405 -0.471405 0.707107 0.235702">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 -1 1" quat="0.755929 -0.377964 0.377964 0.377964">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 -1 2" quat="0.632456 -0.316228 0.632456 0.316228">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 -1 3" quat="0.516398 -0.258199 0.774597 0.258199">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 -1 4" quat="0.516398 -0.258199 0.774597 0.258199">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 0 1" quat="0.816497 0 0.408248 0.408248">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 0 2" quat="0.666667 0 0.666667 0.333333">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 0 3" quat="0.534522 0 0.801784 0.267261">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 0 4" quat="0.534522 0 0.801784 0.267261">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 1 1" quat="0.755929 0.377964 0.377964 0.377964">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 1 2" quat="0.632456 0.316228 0.632456 0.316228">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 1 3" quat="0.516398 0.258199 0.774597 0.258199">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 1 4" quat="0.516398 0.258199 0.774597 0.258199">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 2 1" quat="0.632456 0.632456 0.316228 0.316228">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 2 2" quat="0.5547 0.5547 0.5547 0.27735">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 2 3" quat="0.471405 0.471405 0.707107 0.235702">
<freejoint/>
<geom class="object5"/>
</body>
<body pos="2 2 4" quat="0.471405 0.471405 0.707107 0.235702">
<freejoint/>
<geom class="object5"/>
</body>
<frame pos="2 -2 2.5">
<replicate count="5" offset="0 1 0">
<frame pos="0 0 -1.5">
<replicate count="4" offset="0 0 1">
<body>
<freejoint/>
<geom class="sphere"/>
</body>
</replicate>
</frame>
</replicate>
</frame>
</worldbody>
</mujoco>