<mujoco model="Hammock">
    <!--  Copyright © 2018, Roboti LLC

          This file is licensed under the MuJoCo Resource License (the "License").
          You may not use this file except in compliance with the License.
          You may obtain a copy of the License at

            https://www.roboti.us/resourcelicense.txt
    -->

    <compiler inertiafromgeom="true" angle="degree"/>

    <default>
        <default class="humanoid">
            <joint limited="true" damping="1" armature="0"/>
            <geom condim="1" material="matgeom"/>
        </default>
        <motor ctrlrange="-.4 .4" ctrllimited="true"/>
    </default>

    <option timestep="0.005" solver="CG" iterations="30" tolerance="1e-6" jacobian="sparse" cone="pyramidal"/>

    <size njmax="1000" nconmax="100" nstack="1000000"/>

    <visual>
        <map force="0.1" zfar="30"/>
        <rgba haze="0.15 0.25 0.35 1"/>
        <quality shadowsize="2048"/>
        <global offwidth="800" offheight="800"/>
    </visual>

    <asset>
        <texture type="skybox" builtin="gradient" rgb1="0.3 0.5 0.7" rgb2="0 0 0" width="512" height="512"/>

        <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"/>  

        <texture name="texhammock" type="2d" builtin="checker" rgb1=".1 .5 .1" rgb2=".5 .1 .1" width="512" height="512" mark="edge" markrgb=".8 .8 .8"/>  

        <texture name="texgeom" type="cube" builtin="flat" mark="cross" width="127" height="1278" 
            rgb1="0.8 0.6 0.4" rgb2="0.8 0.6 0.4" markrgb="1 1 1"/>  

        <material name="matplane" reflectance="0.3" texture="texplane" texrepeat="1 1" texuniform="true"/>
        <material name="mathammock" texture="texhammock"/>

        <material name="matgeom" texture="texgeom" texuniform="true" rgba="0.8 0.6 .4 1"/>
    </asset>

    <worldbody>
        <geom name="floor" pos="0 0 -1" size="0 0 .25" type="plane" material="matplane" condim="3"/>

        <light directional="true" diffuse=".2 .2 .2" specular="0 0 0" pos="0 0 5" dir="0 0 -1" castshadow="false"/>
        <light directional="false" diffuse=".8 .8 .8" specular="0.3 0.3 0.3" pos="0 0 4.0" dir="0 0 -1"/>       
        
        <composite type="grid" count="11 9 1" spacing="0.2" offset="0. 0. 0">
            <skin texcoord="true" material="mathammock" inflate="0.01" subgrid="3"/>
            <pin coord="0 0"/>
            <pin coord="10 0"/>
            <pin coord="0 8"/>
            <pin coord="10 8"/>
            <geom size=".095"/>
            <joint kind="main" damping="10"/>
        </composite>

        <body name="torso" childclass="humanoid" pos="0 0 1.4">
            <freejoint name="root"/>
            <geom name="torso1" type="capsule" fromto="0 -.07 0 0 .07 0"  size="0.07"/>
            <geom name="head" type="sphere" pos="0 0 .19" size=".09"/>
            <geom name="uwaist" type="capsule" fromto="-.01 -.06 -.12 -.01 .06 -.12" size="0.06"/>
            <body name="lwaist" pos="-.01 0 -0.260" quat="1.000 0 -0.002 0" >
                <geom name="lwaist" type="capsule" fromto="0 -.06 0 0 .06 0"  size="0.06" />
                <joint name="abdomen_z" type="hinge" pos="0 0 0.065" axis="0 0 1" range="-45 45" damping="5" stiffness="20" armature="0.02" />
                <joint name="abdomen_y" type="hinge" pos="0 0 0.065" axis="0 1 0" range="-75 30" damping="5" stiffness="10" armature="0.02" />
                <body name="pelvis" pos="0 0 -0.165" quat="1.000 0 -0.002 0" >
                    <joint name="abdomen_x" type="hinge" pos="0 0 0.1" axis="1 0 0" range="-35 35" damping="5" stiffness="10" armature="0.02" />
                    <geom name="butt" type="capsule" fromto="-.02 -.07 0 -.02 .07 0"  size="0.09" />
                    <body name="right_thigh" pos="0 -0.1 -0.04" >
                        <joint name="right_hip_x" type="hinge" pos="0 0 0" axis="1 0 0" range="-25 5"   damping="5" stiffness="10" armature="0.01" />
                        <joint name="right_hip_z" type="hinge" pos="0 0 0" axis="0 0 1" range="-60 35"  damping="5" stiffness="10" armature="0.01" />
                        <joint name="right_hip_y" type="hinge" pos="0 0 0" axis="0 1 0" range="-120 20" damping="5" stiffness="20" armature="0.01" />
                        <geom name="right_thigh1" type="capsule" fromto="0 0 0 0 0.01 -.34"  size="0.06" />
                        <body name="right_shin" pos="0 0.01 -0.403" >
                            <joint name="right_knee" type="hinge" pos="0 0 .02" axis="0 -1 0" range="-160 -2" stiffness="1" armature="0.0060" />
                            <geom name="right_shin1" type="capsule" fromto="0 0 0 0 0 -.3"   size="0.049" />
                            <body name="right_foot" pos="0 0 -.39" >
                                <joint name="right_ankle_y" type="hinge" pos="0 0 0.08" axis="0 1 0"   range="-50 50" stiffness="4" armature="0.0008" />
                                <joint name="right_ankle_x" type="hinge" pos="0 0 0.04" axis="1 0 0.5" range="-50 50" stiffness="1"  armature="0.0006" />
                                <geom name="right_foot_cap1" type="capsule" fromto="-.07 -0.02 0 0.14 -0.04 0"  size="0.027" />
                                <geom name="right_foot_cap2" type="capsule" fromto="-.07 0 0 0.14  0.02 0"  size="0.027" />
                            </body>
                        </body>
                    </body>
                    <body name="left_thigh" pos="0 0.1 -0.04" >
                        <joint name="left_hip_x" type="hinge" pos="0 0 0" axis="-1 0 0" range="-25 5"  damping="5" stiffness="10" armature="0.01" />
                        <joint name="left_hip_z" type="hinge" pos="0 0 0" axis="0 0 -1" range="-60 35" damping="5" stiffness="10" armature="0.01" />
                        <joint name="left_hip_y" type="hinge" pos="0 0 0" axis="0 1 0" range="-120 20" damping="5" stiffness="20" armature="0.01" />
                        <geom name="left_thigh1" type="capsule" fromto="0 0 0 0 -0.01 -.34"  size="0.06" />
                        <body name="left_shin" pos="0 -0.01 -0.403" >
                            <joint name="left_knee" type="hinge" pos="0 0 .02" axis="0 -1 0" range="-160 -2" stiffness="1" armature="0.0060" />
                            <geom name="left_shin1" type="capsule" fromto="0 0 0 0 0 -.3"   size="0.049" />
                            <body name="left_foot" pos="0 0 -.39" >
                                <joint name="left_ankle_y" type="hinge" pos="0 0 0.08" axis="0 1 0"   range="-50 50"  stiffness="4" armature="0.0008" />
                                <joint name="left_ankle_x" type="hinge" pos="0 0 0.04" axis="1 0 0.5" range="-50 50"  stiffness="1"  armature="0.0006" />
                                <geom name="left_foot_cap1" type="capsule" fromto="-.07 0.02 0 0.14 0.04 0"  size="0.027" />
                                <geom name="left_foot_cap2" type="capsule" fromto="-.07 0 0 0.14  -0.02 0"  size="0.027" />
                            </body>
                        </body>
                    </body>
                </body>
            </body>
            <body name="right_upper_arm" pos="0 -0.17 0.06" >
                <joint name="right_shoulder1" type="hinge" pos="0 0 0" axis="2 1 1"  range="-85 60" stiffness="1" armature="0.0068" />
                <joint name="right_shoulder2" type="hinge" pos="0 0 0" axis="0 -1 1" range="-85 60" stiffness="1"  armature="0.0051" />
                <geom name="right_uarm1" type="capsule" fromto="0 0 0 .16 -.16 -.16"  size="0.04 0.16" />
                <body name="right_lower_arm" pos=".18 -.18 -.18" >
                    <joint name="right_elbow" type="hinge" pos="0 0 0" axis="0 -1 1" range="-90 50"  stiffness="0" armature="0.0028" />
                    <geom name="right_larm" type="capsule" fromto="0.01 0.01 0.01 .17 .17 .17"  size="0.031" />
                    <geom name="right_hand" type="sphere" pos=".18 .18 .18"  size="0.04"/>
                </body>
            </body>
            <body name="left_upper_arm" pos="0 0.17 0.06" >
                <joint name="left_shoulder1" type="hinge" pos="0 0 0" axis="2 -1 1" range="-60 85" stiffness="1" armature="0.0068" />
                <joint name="left_shoulder2" type="hinge" pos="0 0 0" axis="0 1 1" range="-60 85"  stiffness="1" armature="0.0051" />
                <geom name="left_uarm1" type="capsule" fromto="0 0 0 .16 .16 -.16"  size="0.04 0.16" />
                <body name="left_lower_arm" pos=".18 .18 -.18" >
                    <joint name="left_elbow" type="hinge" pos="0 0 0" axis="0 -1 -1" range="-90 50" stiffness="0" armature="0.0028" />
                    <geom name="left_larm" type="capsule" fromto="0.01 -0.01 0.01 .17 -.17 .17"  size="0.031" />
                    <geom name="left_hand" type="sphere" pos=".18 -.18 .18"  size="0.04"/>
                </body>
            </body>
        </body>

    </worldbody>

    <actuator>
        <motor name="abdomen_y"       gear="200" joint="abdomen_y" />
        <motor name="abdomen_z"       gear="200" joint="abdomen_z" />
        <motor name="abdomen_x"       gear="200" joint="abdomen_x" />
        <motor name="right_hip_x"     gear="200" joint="right_hip_x" />
        <motor name="right_hip_z"     gear="200" joint="right_hip_z" />
        <motor name="right_hip_y"     gear="600" joint="right_hip_y" />
        <motor name="right_knee"      gear="400" joint="right_knee" />
        <motor name="right_ankle_x"   gear="100" joint="right_ankle_x" />
        <motor name="right_ankle_y"   gear="100" joint="right_ankle_y" />
        <motor name="left_hip_x"      gear="200" joint="left_hip_x" />
        <motor name="left_hip_z"      gear="200" joint="left_hip_z" />
        <motor name="left_hip_y"      gear="600" joint="left_hip_y" />
        <motor name="left_knee"       gear="400" joint="left_knee" />
        <motor name="left_ankle_x"    gear="100" joint="left_ankle_x" />
        <motor name="left_ankle_y"    gear="100" joint="left_ankle_y" />
        <motor name="right_shoulder1" gear="100" joint="right_shoulder1" />
        <motor name="right_shoulder2" gear="100" joint="right_shoulder2" />
        <motor name="right_elbow"     gear="200" joint="right_elbow" />
        <motor name="left_shoulder1"  gear="100" joint="left_shoulder1" />
        <motor name="left_shoulder2"  gear="100" joint="left_shoulder2" />
        <motor name="left_elbow"      gear="200" joint="left_elbow" />
    </actuator>

</mujoco>
