Add replicate element to MJCF. Fixes #553
PiperOrigin-RevId: 629393578 Change-Id: Ia1db1b9e47eba8868117b0f7b85edcd0cc1b6d79
This commit is contained in:
committed by
Copybara-Service
parent
6a5bbb5157
commit
26f23066d1
@@ -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
|
||||
|
||||
[](https://www.youtube.com/watch?v=5k0_wsIRAFc)
|
||||
@@ -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>
|
||||
@@ -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
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user