<mujoco model="01_pendulum">
  <!-- 第 1 章 第一个模型：单摆 + 一个 slide 关节（练习用） -->
  <option timestep="0.002" integrator="implicitfast"/>

  <default>
    <geom rgba="0.7 0.7 0.75 1"/>
    <joint damping="0.02" armature="0.01"/>
  </default>

  <worldbody>
    <light pos="0 0 3" dir="0 0 -1"/>
    <geom name="floor" type="plane" size="0 0 0.05" pos="0 0 -1.2"/>

    <body name="upper_arm" pos="0 0 0">
      <joint name="shoulder" type="hinge" axis="0 1 0" range="-90 90" limited="auto"/>
      <geom name="upper_arm_cap" type="capsule" size="0.03 0.2" pos="0 0 -0.2" mass="1.2"/>
      <site name="elbow" pos="0 0 -0.4"/>

      <body name="forearm" pos="0 0 -0.4">
        <joint name="elbow_hinge" type="hinge" axis="0 1 0" range="-120 20" limited="auto"/>
        <geom name="forearm_cap" type="capsule" size="0.025 0.18" pos="0 0 -0.18" mass="0.8"/>
        <body name="slider" pos="0 0 -0.36">
          <joint name="prize" type="slide" axis="0 0 1" range="0 0.046" limited="auto"/>
          <geom name="gripper" type="box" size="0.03 0.04 0.02" pos="0 0 -0.02" mass="0.3"/>
          <site name="tcp" pos="0 0 -0.05"/>
        </body>
      </body>
    </body>
  </worldbody>

  <actuator>
    <position name="shoulder_pos" joint="shoulder" kp="50" ctrlrange="-1.6 1.6"/>
    <position name="elbow_pos" joint="elbow_hinge" kp="40" ctrlrange="-2.1 0.3"/>
    <motor name="prize_motor" joint="prize" ctrlrange="-20 20"/>
  </actuator>

  <sensor>
    <framepos name="tcp_pos" objtype="site" objname="tcp"/>
  </sensor>
</mujoco>
