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
File diff suppressed because it is too large Load Diff
+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>
+27
View File
@@ -0,0 +1,27 @@
# Replicate
Models in this directory provide usage examples of the `<replicate>` meta-element, see
[documentation](https://mujoco.readthedocs.io/en/stable/XMLreference.html#replicate-r).
The models contain several categories:
1. Constructing static geometries:
- cylinder.xml
- bowl.xml
- helix.xml
- container.xml
2. Replicating moving bodies:
- particle.xml
- bunnies.xml
- leaves.xml
- stonehenge.xml
3. Replicas that include tendons:
- newton_cradle.xml
- tendon.xml
4. Replicas with multiple referencing elements:
- references.xml
[![Replicate showcase](https://img.youtube.com/vi/5k0_wsIRAFc/0.jpg)](https://www.youtube.com/watch?v=5k0_wsIRAFc)
+46
View File
@@ -0,0 +1,46 @@
<mujoco model="Bowl">
<statistic meansize=".05"/>
<worldbody>
<light pos=".1 0 .6"/>
<light pos="-.1 0 .6"/>
<geom type="plane" size="1 1 .01"/>
<body pos="-.1 0 .04" euler="20 10 0">
<freejoint/>
<geom type="cylinder" size="0.03 0.002" rgba=".8 0 0 1"/>
<replicate count="20" euler="0 0 18">
<frame pos="-.025 0 .03" euler="0 15 0">
<replicate count="6" euler="0 15 0">
<geom type="box" size=".0044 .009 .002" pos="0 0 -.03" rgba=".8 0 0 1"/>
</replicate>
</frame>
</replicate>
</body>
<body pos="0 0 .02" euler="20 20 0">
<freejoint/>
<geom type="cylinder" size="0.01 0.0015" rgba="0 .8 0 1"/>
<replicate count="20" euler="0 0 18">
<frame pos="-.005 0 .03" euler="0 15 0">
<replicate count="6" euler="0 15 0">
<geom type="box" size=".0044 .006 .0015" pos="0 0 -.03" rgba="0 .8 0 1"/>
</replicate>
</frame>
</replicate>
</body>
<body pos=".09 0 .04" euler="30 30 0">
<freejoint/>
<geom type="cylinder" size="0.03 0.002" rgba="0 0 .8 1"/>
<replicate count="20" euler="0 0 18">
<frame pos="-.025 0 .03" euler="0 15 0">
<replicate count="4" euler="0 15 0">
<geom type="box" size=".0044 .009 .002" pos="0 0 -.03" rgba="0 0 .8 1"/>
</replicate>
</frame>
</replicate>
</body>
</worldbody>
</mujoco>
+25
View File
@@ -0,0 +1,25 @@
<mujoco model="Bunnies">
<include file="container.xml"/>
<size memory="1G"/>
<option solver="CG" tolerance="1e-6" timestep=".01"/>
<asset>
<mesh file="bunny.obj"/>
</asset>
<worldbody>
<replicate count="5" offset=".17 0 0">
<replicate count="5" offset="0 .17 0">
<replicate count="5" offset="0 0 .17">
<body pos="-0.35 -0.35 0.65">
<freejoint/>
<geom type="mesh" mesh="bunny" rgba="0.8 0.2 0.1 1"/>
</body>
</replicate>
</replicate>
</replicate>
</worldbody>
</mujoco>
File diff suppressed because it is too large Load Diff
+31
View File
@@ -0,0 +1,31 @@
<mujoco model="Container">
<statistic extent="1.5" meansize=".05"/>
<visual>
<rgba haze="0.15 0.25 0.35 1"/>
<map shadowscale="0.5" zfar="40"/>
</visual>
<asset>
<texture type="skybox" builtin="gradient" rgb1="0.3 0.5 0.7" rgb2="0 0 0" width="64" height="64"/>
<texture name="texplane" type="2d" builtin="checker" rgb1=".2 .3 .4" rgb2=".1 0.15 0.2" width="512" height="512" mark="cross" markrgb=".8 .8 .8"/>
<material name="matplane" reflectance="0.3" texture="texplane" texrepeat="1 1" texuniform="true"/>
</asset>
<worldbody>
<light directional="true" diffuse=".4 .4 .4" specular="0.1 0.1 0.1" pos="0 0 5" castshadow="false"/>
<light diffuse=".6 .6 .6" specular="0.2 0.2 0.2" pos="0 0 4"/>
<geom name="ground" type="plane" size="0 0 1" pos="0 0 0" quat="1 0 0 0" material="matplane" condim="1"/>
<body mocap="true" pos="-.1 .05 0" zaxis=".5 0 1">
<geom type="capsule" size=".1 .1" group="1" condim="1"/>
</body>
</worldbody>
<worldbody>
<replicate count="4" euler="0 0 90">
<geom type="plane" size=".5 .5 .05" zaxis="1 0 0" pos="-.5 0 -.25"/>
</replicate>
</worldbody>
</mujoco>
+31
View File
@@ -0,0 +1,31 @@
<mujoco model="Cylinder">
<statistic meansize=".05"/>
<worldbody>
<light pos=".5 0 3"/>
<light pos="-.5 0 3"/>
<geom type="plane" size="2 2 .01"/>
<body pos="-.3 0 .3" euler="80 10 0">
<freejoint/>
<replicate count="30" euler="0 0 12">
<geom type="box" pos="0 -.12 0" size=".01315 .005 .1" rgba=".8 0 0 1"/>
</replicate>
</body>
<body pos="0 0 .4" euler="20 20 0">
<freejoint/>
<replicate count="10" euler="0 0 36">
<geom type="box" pos="0 -0.067 0" size=".025 .01 .1" rgba="0 .8 0 1"/>
</replicate>
</body>
<body pos=".3 0 .3" euler="30 30 0">
<freejoint/>
<replicate count="4" euler="0 0 90">
<geom type="box" pos="0.005 -0.05 0" size=".05 .005 .08" rgba="0 0 .8 1"/>
</replicate>
</body>
</worldbody>
</mujoco>
+25
View File
@@ -0,0 +1,25 @@
<mujoco model="Helix">
<statistic meansize=".05"/>
<worldbody>
<light pos=".5 0 3"/>
<light pos="-.5 0 3"/>
<geom type="plane" size="2 2 .01"/>
<body pos="0 0 .3">
<freejoint/>
<replicate count="50" offset="0 0 0.01" euler="0 0 25">
<geom type="capsule" size=".01 .05" pos="0 -.23 -.2" euler="0 84.5 0" rgba="0 0 1 1"/>
</replicate>
</body>
<body pos=".6 0 .3" euler="0 0 90">
<freejoint/>
<replicate count="50" offset="0 0 0.01" euler="0 0 15">
<geom type="box" pos=".025 -.2 -.2" size=".032 .04 .005" euler="-24 -12 2" rgba=".8 0 0 1"/>
</replicate>
</body>
</worldbody>
</mujoco>
+50
View File
@@ -0,0 +1,50 @@
<mujoco model="Leaves">
<statistic extent="1.5"/>
<visual>
<rgba haze="0.15 0.25 0.35 1"/>
<map shadowscale="0.5" zfar="40"/>
</visual>
<asset>
<texture type="skybox" builtin="gradient" rgb1="0.3 0.5 0.7" rgb2="0 0 0" width="64" height="64"/>
<texture name="texplane" type="2d" builtin="checker" rgb1=".2 .3 .4" rgb2=".1 0.15 0.2" width="512" height="512" mark="cross" markrgb=".8 .8 .8"/>
<material name="matplane" reflectance="0.3" texture="texplane" texrepeat="1 1" texuniform="true"/>
</asset>
<size memory="1G"/>
<option solver="CG" tolerance="1e-6" timestep=".003" density="1.225" viscosity="1.8e-5" integrator="implicitfast"/>
<visual>
<global realtime="0.2"/>
</visual>
<default>
<default class="leaf">
<geom type="ellipsoid" size=".025 .01 0.001" mass="1e-4" fluidshape="ellipsoid" rgba="0 .4 0 1"/>
</default>
</default>
<worldbody>
<camera name="Cinematic" pos="0 -1.6 4.5" xyaxes="1 0 0 0 0.6 0.8" mode="trackcom"/>
<light diffuse="1 1 1" attenuation=".4 .2 0" pos="-1 -1 6" mode="trackcom" dir="1 1 -3"/>
<light diffuse="1 1 1" attenuation=".4 .2 0" pos="-.98 -1.02 6" mode="trackcom" dir="1 1 -3"/>
<geom name="ground" type="plane" size="5 5 .01" pos="0 0 0" quat="1 0 0 0" material="matplane" condim="1"/>
<replicate count="10" offset="0 0 0.07" euler="0 0 30">
<replicate count="6" euler="-3 0 0">
<frame pos="-.3 -.3 3">
<replicate count="5" offset=".05 0 0" euler="50 0 0">
<body euler="50 50 0">
<freejoint/>
<geom class="leaf" pos=".025 0 0" euler="10 0 0"/>
<geom class="leaf" pos="-.025 0 0" euler="-14 0 0" mass="1.2e-4"/>
</body>
</replicate>
</frame>
</replicate>
</replicate>
</worldbody>
</mujoco>
+69
View File
@@ -0,0 +1,69 @@
<mujoco model="Newton's Cradle">
<option timestep="1e-4"/>
<visual>
<global realtime="0.2"/>
</visual>
<asset>
<texture type="skybox" builtin="gradient" rgb1="0.3 0.5 0.7" rgb2="0 0 0" width="64" height="64"/>
<texture name="texplane" type="2d" builtin="checker" rgb1=".2 .3 .4" rgb2=".1 0.15 0.2" width="512" height="512" mark="cross" markrgb=".8 .8 .8"/>
<material name="matplane" reflectance="0.5" texture="texplane" texrepeat="3 3" texuniform="true"/>
</asset>
<default>
<geom friction=".5" solref="-1e8 -0" solimp="0 .01 1e-3"/>
<tendon limited="true" range="0 0.146" width="0.001" solreflimit="1e-3 1" rgba="0 0 .7 1"/>
<default class="steel ball">
<geom size=".02" rgba=".7 .7 0 1" density="8000" friction=".4" solref="-1e8 -0" solimp="0 .01 1e-3"/>
</default>
</default>
<worldbody>
<light pos=".5 0 1" dir="-1 0 -2"/>
<light pos="-.5 0 1" dir="1 0 -2"/>
<geom type="plane" size="4 4 .1" material="matplane"/>
<replicate count="5" offset="-.04 0 0">
<site name="a" pos="0 -.04 .2"/>
<site name="c" pos="0 .04 .2"/>
<body name="equilibrium" pos="0 0 .04">
<freejoint/>
<geom class="steel ball"/>
<site name="b" pos="0 -.008 .018"/>
<site name="d" pos="0 .008 .018"/>
</body>
</replicate>
<replicate count="2" offset=".04 0 0">
<site name="e" pos=".04 -.04 .2"/>
<site name="g" pos=".04 .04 .2"/>
<body name="perturbed" pos=".12 0 .061" euler="0 -34 0">
<freejoint/>
<geom class="steel ball"/>
<site name="f" pos="0 -.008 .018"/>
<site name="h" pos="0 .008 .018"/>
</body>
</replicate>
</worldbody>
<tendon>
<spatial>
<site site="a"/>
<site site="b"/>
</spatial>
<spatial>
<site site="c"/>
<site site="d"/>
</spatial>
<spatial>
<site site="e"/>
<site site="f"/>
</spatial>
<spatial>
<site site="g"/>
<site site="h"/>
</spatial>
</tendon>
</mujoco>
+23
View File
@@ -0,0 +1,23 @@
<mujoco model="Particle">
<include file="container.xml"/>
<size memory="1G"/>
<option solver="CG" tolerance="1e-6" timestep=".01"/>
<worldbody>
<replicate count="10" offset=".07 0 0">
<replicate count="10" offset="0 .07 0">
<replicate count="10" offset="0 0 .07">
<body pos="-0.35 -0.35 0.65">
<joint type="slide" axis="1 0 0" group="3"/>
<joint type="slide" axis="0 1 0" group="3"/>
<joint type="slide" axis="0 0 1" group="3"/>
<geom size="0.025" condim="1" priority="1" rgba="0.8 0.2 0.1 1"/>
</body>
</replicate>
</replicate>
</replicate>
</worldbody>
</mujoco>
+40
View File
@@ -0,0 +1,40 @@
<mujoco model="Stonehenge">
<statistic meansize="1"/>
<worldbody>
<light directional="true" pos="-50 -20 10" dir="5 2 -1" diffuse="1 1 1"/>
<geom type="plane" size="30 30 .1" rgba="0 1 0 1"/>
<geom type="plane" pos="38 0 5" size="10 30 .1" euler="0 -30 0" rgba="0 .8 0 1"/>
<body name="wrecking ball" pos="45 0 16">
<freejoint/>
<geom size="5.5"/>
</body>
<replicate count="30" euler="0 0 12">
<body pos="0 -15 2">
<freejoint/>
<geom type="box" size="1 .5 2"/>
</body>
<body pos="1.5 -15 4.4" euler="0 0 6">
<freejoint/>
<geom type="box" size="1.5 .5 .4"/>
</body>
</replicate>
<replicate count="5" euler="0 0 45">
<body pos="-1.2 -10 3">
<freejoint/>
<geom type="box" size=".9 .5 3"/>
</body>
<body pos="1.2 -10 3">
<freejoint/>
<geom type="box" size=".9 .5 3"/>
</body>
<body pos="0 -10 6.4">
<freejoint/>
<geom type="box" size="2.4 .5 .4"/>
</body>
</replicate>
</worldbody>
</mujoco>
+47
View File
@@ -0,0 +1,47 @@
<mujoco model="Tendon">
<option solver="PGS"/>
<default>
<site size=".02" rgba="0 .8 0 1"/>
<geom condim="1"/>
</default>
<worldbody>
<light pos="1 0 4" dir="-1 0 -4"/>
<light pos="-1 0 4" dir="1 0 -4"/>
<geom type="plane" size="2 2 .01"/>
<site name="ceiling" pos="0.01 0.02 2.4"/>
<body pos="0 0 1.5">
<freejoint/>
<site name="hook" pos="0 0 .3"/>
<site name="bulb"/>
<geom name="bulb" size=".3" rgba="0 0 .8 1" density="100" contype="0" conaffinity="0"/>
</body>
<replicate count="18" euler="0 0 20">
<body pos=".2 0 1.5">
<freejoint/>
<site name="a"/>
<geom rgba=".8 0 .4 1" size=".03"/>
</body>
<body pos="1.2 0 1.5">
<freejoint/>
<site name="b"/>
<geom rgba=".8 .4 0 1" size=".1"/>
</body>
</replicate>
</worldbody>
<tendon>
<spatial springlength="0 0.5" stiffness="10000">
<site site="ceiling"/>
<site site="hook"/>
</spatial>
<spatial range="0 0.5">
<site site="a"/>
<geom geom="bulb" sidesite="bulb"/>
<site site="b"/>
</spatial>
</tendon>
</mujoco>