<!--
THIS MODEL IS NOT MY OWN

> Model adapted from Deepmind's controlsuite library:

  * repo      : https://github.com/deepmind/dm_control
  * model-url : https://github.com/deepmind/dm_control/blob/master/dm_control/suite/humanoid.xml
  * credits   : the controlsuite authors
-->

<mujoco model="humanoid">
  <include file="./common/skybox.xml"/>
  <include file="./common/visual.xml"/>
  <include file="./common/materials.xml"/>

  <statistic extent="2" center="0 0 1"/>

  <option timestep=".005"/>

  <default>
    <motor ctrlrange="-1 1" ctrllimited="true"/>
    <default class="body">
      <geom  type="capsule" condim="1" friction=".7" solimp=".9 .99 .003" solref=".015 1" material="self"/>
      <joint type="hinge" damping=".2" stiffness="1" armature=".01" limited="true" solimplimit="0 .99 .01"/>
      <!--<default class="big_joint">-->
      <!--  <joint damping="5" stiffness="10"/>-->
      <!--  <default class="big_stiff_joint">-->
      <!--    <joint stiffness="20"/>-->
      <!--  </default>-->
      <!--</default>-->
      <site size=".04" group="3"/>
      <default class="force-torque">
        <site type="box" size=".01 .01 .02" rgba="1 0 0 1" />
      </default>
      <default class="touch">
        <site type="capsule" rgba="0 0 1 .3"/>
      </default>
    </default>
  </default>

  <worldbody>
    <geom name="floor" type="plane" conaffinity="1" size="100 100 .2" material="grid"/>
    <body name="torso" pos="0 0 1.5" childclass="body">
      <light name="top" pos="0 0 2" mode="trackcom"/>
      <camera name="back" pos="-3 0 1" xyaxes="0 -1 0 1 0 2" mode="trackcom"/>
      <camera name="side" pos="0 -3 1" xyaxes="1 0 0 0 1 2" mode="trackcom"/>
      <joint name="root" type="free"/>
      <site name="root" class="force-torque"/>
      <geom name="torso" fromto="0 -.07 0 0 .07 0" size=".07"/>
      <geom name="upper_waist" fromto="-.01 -.06 -.12 -.01 .06 -.12" size=".06"/>
      <site name="torso" class="touch" type="box" pos="0 0 -.05" size=".075 .14 .13"/>
      <body name="head" pos="0 0 .19">
        <geom name="head" type="sphere" size=".09"/>
        <site name="head" class="touch" type="sphere" size=".091"/>
        <camera name="egocentric" pos=".09 0 0" xyaxes="0 -1 0 .1 0 1" fovy="80"/>
      </body>
      <body name="lower_waist" pos="-.01 0 -.260" quat="1.000 0 -.002 0">
        <geom name="lower_waist" fromto="0 -.06 0 0 .06 0" size=".06"/>
        <site name="lower_waist" class="touch" size=".061 .06" zaxis="0 1 0"/>
        <joint name="abdomen_z" pos="0 0 .065" axis="0 0 1" range="-45 45" damping="5" stiffness="20"/>
        <joint name="abdomen_y" pos="0 0 .065" axis="0 1 0" range="-75 30" damping="5" stiffness="10"/>
        <body name="pelvis" pos="0 0 -.165" quat="1.000 0 -.002 0">
          <joint name="abdomen_x" pos="0 0 .1" axis="1 0 0" range="-35 35" damping="5" stiffness="10"/>
          <geom name="butt" fromto="-.02 -.07 0 -.02 .07 0" size=".09"/>
          <site name="butt" class="touch" size=".091 .07" pos="-.02 0 0" zaxis="0 1 0"/>
          <body name="right_thigh" pos="0 -.1 -.04">
            <site name="right_hip" class="force-torque"/>
            <joint name="right_hip_x" axis="1 0 0" range="-25 5"   damping="5" stiffness="10"/>
            <joint name="right_hip_z" axis="0 0 1" range="-60 35"  damping="5" stiffness="10"/>
            <joint name="right_hip_y" axis="0 1 0" range="-110 20" damping="5" stiffness="20"/>
            <geom name="right_thigh" fromto="0 0 0 0 .01 -.34" size=".06"/>
            <site name="right_thigh" class="touch" pos="0 .005 -.17" size=".061 .17" zaxis="0 -1 34"/>
            <body name="right_shin" pos="0 .01 -.403">
              <site name="right_knee" class="force-torque" pos="0 0 .02"/>
              <joint name="right_knee" pos="0 0 .02" axis="0 -1 0" range="-160 2"/>
              <geom name="right_shin" fromto="0 0 0 0 0 -.3"  size=".049"/>
              <site name="right_shin" class="touch" pos="0 0 -.15" size=".05 .15"/>
              <body name="right_foot" pos="0 0 -.39">
                <site name="right_ankle" class="force-torque"/>
                <joint name="right_ankle_y" pos="0 0 .08" axis="0 1 0"   range="-50 50" stiffness="6"/>
                <joint name="right_ankle_x" pos="0 0 .04" axis="1 0 .5" range="-50 50" stiffness="3"/>
                <geom name="right_right_foot" fromto="-.07 -.02 0 .14 -.04 0" size=".027"/>
                <geom name="left_right_foot" fromto="-.07 0 0 .14  .02 0" size=".027"/>
                <site name="right_right_foot" class="touch" pos=".035 -.03 0" size=".03 .11" zaxis="21 -2 0"/>
                <site name="left_right_foot" class="touch" pos=".035 .01 0" size=".03 .11" zaxis="21 2 0"/>
              </body>
            </body>
          </body>
          <body name="left_thigh" pos="0 .1 -.04">
            <site name="left_hip" class="force-torque"/>
            <joint name="left_hip_x" axis="-1 0 0" range="-25 5"  damping="5" stiffness="10"/>
            <joint name="left_hip_z" axis="0 0 -1" range="-60 35" damping="5" stiffness="10"/>
            <joint name="left_hip_y" axis="0 1 0" range="-120 20" damping="5" stiffness="20"/>
            <geom name="left_thigh" fromto="0 0 0 0 -.01 -.34" size=".06"/>
            <site name="left_thigh" class="touch" pos="0 -.005 -.17" size=".061 .17" zaxis="0 1 34"/>
            <body name="left_shin" pos="0 -.01 -.403">
              <site name="left_knee" class="force-torque" pos="0 0 .02"/>
              <joint name="left_knee" pos="0 0 .02" axis="0 -1 0" range="-160 2"/>
              <geom name="left_shin" fromto="0 0 0 0 0 -.3"  size=".049"/>
              <site name="left_shin" class="touch"  pos="0 0 -.15" size=".05 .15"/>
              <body name="left_foot" pos="0 0 -.39">
                <site name="left_ankle" class="force-torque"/>
                <joint name="left_ankle_y" pos="0 0 .08" axis="0 1 0"   range="-50 50" stiffness="6"/>
                <joint name="left_ankle_x" pos="0 0 .04" axis="1 0 .5" range="-50 50" stiffness="3"/>
                <geom name="left_left_foot" fromto="-.07 .02 0 .14 .04 0" size=".027"/>
                <geom name="right_left_foot" fromto="-.07 0 0 .14  -.02 0" size=".027"/>
                <site name="right_left_foot" class="touch" pos=".035 -.01 0" size=".03 .11" zaxis="21 -2 0"/>
                <site name="left_left_foot" class="touch" pos=".035 .03 0" size=".03 .11" zaxis="21 2 0"/>
              </body>
            </body>
          </body>
        </body>
      </body>
      <body name="right_upper_arm" pos="0 -.17 .06">
        <joint name="right_shoulder1" axis="2 1 1"  range="-85 60"/>
        <joint name="right_shoulder2" axis="0 -1 1" range="-85 60"/>
        <geom name="right_upper_arm" fromto="0 0 0 .16 -.16 -.16" size=".04 .16"/>
        <site name="right_upper_arm" class="touch" pos=".08 -.08 -.08" size=".041 .14" zaxis="1 -1 -1"/>
        <body name="right_lower_arm" pos=".18 -.18 -.18">
          <joint name="right_elbow" axis="0 -1 1" range="-90 50" stiffness="0"/>
          <geom name="right_lower_arm" fromto=".01 .01 .01 .17 .17 .17" size=".031"/>
          <site name="right_lower_arm" class="touch" pos=".09 .09 .09" size=".032 .14" zaxis="1 1 1"/>
          <body name="right_hand" pos=".18 .18 .18">
            <geom name="right_hand" type="sphere" size=".04"/>
            <site name="right_hand" class="touch" type="sphere" size=".041"/>
          </body>
        </body>
      </body>
      <body name="left_upper_arm" pos="0 .17 .06">
        <joint name="left_shoulder1" axis="2 -1 1" range="-60 85"/>
        <joint name="left_shoulder2" axis="0 1 1" range="-60 85"/>
        <geom name="left_upper_arm" fromto="0 0 0 .16 .16 -.16" size=".04 .16"/>
        <site name="left_upper_arm" class="touch" pos=".08 .08 -.08" size=".041 .14" zaxis="1 1 -1"/>
        <body name="left_lower_arm" pos=".18 .18 -.18">
          <joint name="left_elbow" axis="0 -1 -1" range="-90 50" stiffness="0"/>
          <geom name="left_lower_arm" fromto=".01 -.01 .01 .17 -.17 .17" size=".031"/>
          <site name="left_lower_arm" class="touch" pos=".09 -.09 .09" size=".032 .14" zaxis="1 -1 1"/>
          <body name="left_hand" pos=".18 -.18 .18">
            <geom name="left_hand" type="sphere" size=".04"/>
            <site name="left_hand" class="touch" type="sphere" size=".041"/>
          </body>
        </body>
      </body>
    </body>
  </worldbody>

  <actuator>
    <motor name="abdomen_y"       gear="40"  joint="abdomen_y"/>
    <motor name="abdomen_z"       gear="40"  joint="abdomen_z"/>
    <motor name="abdomen_x"       gear="40"  joint="abdomen_x"/>
    <motor name="right_hip_x"     gear="40"  joint="right_hip_x"/>
    <motor name="right_hip_z"     gear="40"  joint="right_hip_z"/>
    <motor name="right_hip_y"     gear="120" joint="right_hip_y"/>
    <motor name="right_knee"      gear="80"  joint="right_knee"/>
    <motor name="right_ankle_x"   gear="20"  joint="right_ankle_x"/>
    <motor name="right_ankle_y"   gear="20"  joint="right_ankle_y"/>
    <motor name="left_hip_x"      gear="40"  joint="left_hip_x"/>
    <motor name="left_hip_z"      gear="40"  joint="left_hip_z"/>
    <motor name="left_hip_y"      gear="120" joint="left_hip_y"/>
    <motor name="left_knee"       gear="80"  joint="left_knee"/>
    <motor name="left_ankle_x"    gear="20"  joint="left_ankle_x"/>
    <motor name="left_ankle_y"    gear="20"  joint="left_ankle_y"/>
    <motor name="right_shoulder1" gear="20"  joint="right_shoulder1"/>
    <motor name="right_shoulder2" gear="20"  joint="right_shoulder2"/>
    <motor name="right_elbow"     gear="40"  joint="right_elbow"/>
    <motor name="left_shoulder1"  gear="20"  joint="left_shoulder1"/>
    <motor name="left_shoulder2"  gear="20"  joint="left_shoulder2"/>
    <motor name="left_elbow"      gear="40"  joint="left_elbow"/>
  </actuator>

  <sensor>
    <subtreelinvel name="torso_subtreelinvel" body="torso"/>
    <accelerometer name="torso_accel"    site="root"/>
    <velocimeter name="torso_vel"        site="root"/>
    <gyro name="torso_gyro"              site="root"/>

    <force name="left_ankle_force"       site="left_ankle"/>
    <force name="right_ankle_force"      site="right_ankle"/>
    <force name="left_knee_force"        site="left_knee"/>
    <force name="right_knee_force"       site="right_knee"/>
    <force name="left_hip_force"         site="left_hip"/>
    <force name="right_hip_force"        site="right_hip"/>

    <torque name="left_ankle_torque"     site="left_ankle"/>
    <torque name="right_ankle_torque"    site="right_ankle"/>
    <torque name="left_knee_torque"      site="left_knee"/>
    <torque name="right_knee_torque"     site="right_knee"/>
    <torque name="left_hip_torque"       site="left_hip"/>
    <torque name="right_hip_torque"      site="right_hip"/>

    <touch name="torso_touch"            site="torso"/>
    <touch name="head_touch"             site="head"/>
    <touch name="lower_waist_touch"      site="lower_waist"/>
    <touch name="butt_touch"             site="butt"/>
    <touch name="right_thigh_touch"      site="right_thigh"/>
    <touch name="right_shin_touch"       site="right_shin"/>
    <touch name="right_right_foot_touch" site="right_right_foot"/>
    <touch name="left_right_foot_touch"  site="left_right_foot"/>
    <touch name="left_thigh_touch"       site="left_thigh"/>
    <touch name="left_shin_touch"        site="left_shin"/>
    <touch name="right_left_foot_touch"  site="right_left_foot"/>
    <touch name="left_left_foot_touch"   site="left_left_foot"/>
    <touch name="right_upper_arm_touch"  site="right_upper_arm"/>
    <touch name="right_lower_arm_touch"  site="right_lower_arm"/>
    <touch name="right_hand_touch"       site="right_hand"/>
    <touch name="left_upper_arm_touch"   site="left_upper_arm"/>
    <touch name="left_lower_arm_touch"   site="left_lower_arm"/>
    <touch name="left_hand_touch"        site="left_hand"/>
  </sensor>

</mujoco>

