Re: [ros-users] replicating pr2_arm_kinematics for 6-DOF arm

Top Page
Attachments:
Message as email
+ (text/plain)
+ bandit_current.xml (text/xml)
Delete this message
Reply to this message
Author: David Feil-Seifer
Date:  
To: ros-users
Subject: Re: [ros-users] replicating pr2_arm_kinematics for 6-DOF arm
Rosen-

Thanks for the pointer. I had some trouble with urdf_to_collada and
openrave when I tried it out. urdf_to_collada returns a dae file that
I can view and it parses ok. However, when I view it in the openrave
viewer it does no look right, the several of the joints are in the
wrong place. I've attached the before and after to show you, though
you'll need stl files to view it properly (several MBs).

Further, when I tried to use openrave.py --database, I get several of
the following errors:

> rosrun openrave inversekinematics.py --robot=bandit_current.dae --manipname=rightarm --freejoint=right_torso_shoulder_mounting_joint --freeinc=0.01


[colladareader.h:1613] Not Exists Motion axis info, joint
right_torso_shoulder_mounting_joint

Terminating with:

[colladareader.h:1176] Robot (null) created ...
destroying environment
Traceback (most recent call last):
  File "/home/dfseifer/cturtle_usc/stacks/openrave_planning/openrave/share/openrave/openravepy/databases/inversekinematics.py",
line 430, in <module>
    InverseKinematicsModel.RunFromParser()
  File "/home/dfseifer/cturtle_usc/stacks/openrave_planning/openrave/share/openrave/openravepy/databases/inversekinematics.py",
line 402, in RunFromParser
    OpenRAVEModel.RunFromParser(Model=Model,parser=parser)
  File "/home/dfseifer/cturtle_usc/stacks/openrave_planning/openrave/share/openrave/openravepy/openravepy_ext.py",
line 469, in RunFromParser
    robot.SetActiveManipulator([i for i,m in
enumerate(robot.GetManipulators()) if
m.GetName()==options.manipname][0])
IndexError: list index out of range


I'm guessing that the combination of the two errors means that
something is up with my urdf file that is getting botched when it goes
to collada, but I don't know the format well enough to view it by
inspection.

For ikfast.py, I can wait for the documentation, but while I
understand the command-line options from the --help menu, I do not
know how to get the fkfile. Does this come from openrave.py
--database?

Anyway, thanks for your help. I'm not in a rush on this, but I am
curious how to get this working.

-Dave

On Sat, Jul 17, 2010 at 5:46 PM, Rosen Diankov <> wrote:
> I am in the process of writing better documentation, but if you have
> your robot in COLLADA or OpenRAVE XML format, then you can use the
> ikfast program to generate the analytical inverse kinematics:
>
> http://openrave.programmingvision.com/index.php?title=Component:Ikfast
>
> http://openrave.programmingvision.com/index.php/Databases:InverseKinematics
>
> from all the timings i've done, these ikfast solvers can generate all
> possible solutions for you in ~6 microseconds.
>
>
> rosen,
>
> 2010/7/17 Morgan Quigley <>:
>> Hi Dave,
>>
>> The Orocos KDL library is great. I just switched to it last week; my
>> code is pretty ugly, but it's using the KDL::ChainIkSolverPos_NR_JL
>> class, which has joint limits:
>>
>> http://stanford-ros-pkg.googlecode.com/svn/trunk/openarms/control/goto_cart.cpp
>>
>> The ik_tool() function is what you're after. You set the joint limits
>> when you construct the ChainIkSolverPos_NR_JL object; search for
>> "ik_solver_pos" in that .cpp file to see the exact syntax.
>>
>> (sorry about all the commented code... it's a work in progress)
>>
>> HTH,
>> Morgan
>>
>>
>> On Sat, Jul 17, 2010 at 10:43 AM, David Feil-Seifer
>> <> wrote:
>>> I am trying to replicate the IK-functionality of pr2_arm_navigation
>>> for our humanoid robot, Bandit. I have attached a xacro file for it's
>>> arm. I have it rendering correctly, and am able to have it mimic the
>>> movements of a real Bandit with joint_states_publisher and a
>>> /joint_states message. I seem to have correctly ported
>>> pr2_arm_ik_solver and pr2_arm_kinematics by simply changing all 7's to
>>> 6's and changing the names of the root and tip links
>>> (bandit_torso_link and left/right_hand_link). However, I'm having
>>> trouble with pr2_arm_ik.cpp. Clearly, the math here was meant for a
>>> 7-DOF arm, and I don't really know what algorithm is being used here,
>>> so I'm having trouble translating that to a 6-DOF arm. I have figured
>>> out that in the init function, that I needed to change the
>>> link_offsets for the shoulder_upperarm_offset, elbow_wrist offset, and
>>> upperarm_elbow_offset values. Those are now correct. I am just having
>>> trouble making computeIKShoulderPan and computeIKShoulderRoll to a 6
>>> joint arm. Can anyone give me some guidance on how to proceed?
>>>
>>> I did look at the KDL examples on their website, but they were pretty
>>> vague about creating an IK solver with joint limits.
>>>
>>> Thanks for your help.
>>> -Dave
>>>
>>> _______________________________________________
>>> ros-users mailing list
>>>
>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>>
>> _______________________________________________
>> ros-users mailing list
>>
>> https://code.ros.org/mailman/listinfo/ros-users
>>
> _______________________________________________
> ros-users mailing list
>
> https://code.ros.org/mailman/listinfo/ros-users
>

<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from defs/bandit_defs.xacro         | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="bandit" xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#controller" xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface" xmlns:sensor="http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor" xmlns:xacro="http://ros.org/wiki/xacro">
  <!--<include filename="$(find pr2_description)/urdf/common.xacro"/>-->
  <material name="Blue">
    <color rgba="0.0 0.0 0.8 1.0"/>
  </material>
  <material name="Green">
    <color rgba="0.0 0.8 0.0 1.0"/>
  </material>
  <material name="Grey">
    <color rgba="0.5 0.5 0.5 1.0"/>
  </material>
  <material name="Grey2">
    <color rgba="0.3 0.3 0.3 1.0"/>
  </material>
  <material name="Red">
    <color rgba="0.8 0.0 0.0 1.0"/>
  </material>
  <material name="FaceGrey">
    <color rgba="0.35 0.35 0.35 1.0"/>
  </material>
  <material name="White">
    <color rgba="1.0 1.0 1.0 1.0"/>
  </material>
  <material name="SweaterRed">
    <color rgba="0.45 0.0 0.0 1.0"/>
  </material>
  <material name="Yellow">
    <color rgba="0.75 0.75 0.0 1.0"/>
  </material>
  <material name="Black">
    <color rgba="0 0 0 1.0"/>
  </material>
  <material name="LipsPink">
    <color rgba="0.737 0.118 0.193 1.0"/>
  </material>
  <material name="NewFace">
    <color rgba="0.5 0.5 0.5 1.0"/>
  </material>
  <material name="NewEye">
    <color rgba="0.35 0.35 0.35 1.0"/>
  </material>
  <link name="bandit_stop_link">
    <inertial>
      <mass value="0"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
    </inertial>
    <visual name="base_visual">
      <origin rpy="0 1.57079632679 3.14159265359" xyz="0 0 0"/>
      <geometry name="pioneer_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/stop_switch_small.STL"/>
      </geometry>
      <material name="Red"/>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="0 0 0"/>
      </geometry>
    </collision>
  </link>
  <joint name="bandit_stop_joint" type="fixed">
    <origin rpy="0 0 0" xyz="-0.08 0 -0.04"/>
    <parent link="bandit_torso_link"/>
    <child link="bandit_stop_link"/>
  </joint>
  <joint name="pupil_left_joint" type="fixed">
    <origin rpy="0 0 0" xyz="0.0012 -0.0048 -0.032"/>
    <parent link="bandit_head_left_camera_link"/>
    <child link="pupil_left_link"/>
  </joint>
  <link name="pupil_left_link">
    <inertial>
      <mass value="0"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
    </inertial>
    <visual name="pupil_visual">
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry name="pupil_left_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/middle_eye.stl"/>
      </geometry>
      <material name="EyeBlack">
        <color rgba="0 0 0 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="0 0 0"/>
      </geometry>
    </collision>
  </link>
  <joint name="pupil_right_joint" type="fixed">
    <origin rpy="0 0 0" xyz="0.0012 -0.0046 -0.032"/>
    <parent link="bandit_head_right_camera_link"/>
    <child link="pupil_right_link"/>
  </joint>
  <link name="pupil_right_link">
    <inertial>
      <mass value="0"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
    </inertial>
    <visual name="pupil_visual">
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry name="pupil_left_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/middle_eye.stl"/>
      </geometry>
      <material name="EyeBlack">
        <color rgba="0 0 0 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="0 0 0"/>
      </geometry>
    </collision>
  </link>
  <gazebo>
    <!-- PR2_ACTARRAY -->
    <controller:gazebo_ros_controller_manager name="gazebo_ros_controller_manager" plugin="libgazebo_ros_controller_manager.so">
      <alwaysOn>true</alwaysOn>
      <updateRate>1000.0</updateRate>
      <interface:audio name="gazebo_ros_controller_manager_dummy_iface"/>
    </controller:gazebo_ros_controller_manager>
    <!--    <controller:ros_time name="ros_time" plugin="libros_time.so">
      <alwaysOn>true</alwaysOn>
      <updateRate>1000.0</updateRate>
      <interface:audio name="dummy_ros_time_iface_should_not_be_here"/>
    </controller:ros_time>-->
  </gazebo>
  <!--<xacro:pr2_base_v0 name="base"/>-->
  <link name="bandit_torso_link">
    <inertial>
      <mass value="0"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
    </inertial>
    <visual name="bandit_torso_visual">
      <material name="Grey2"/>
      <origin rpy="1.57079632679 0 1.57079632679" xyz="0 0 0.0"/>
      <!--<origin xyz="0 0 0.05" rpy="${M_PI/2} 0 ${M_PI/2}"/>-->
      <geometry name="bandit_torso_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/body_small.stl"/>
        <!--  <box size="0 0 0"/>-->
      </geometry>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="0 0 0"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="bandit_torso_link">
    <material value="PR2/Green"/>
  </gazebo>
  <joint name="bandit_head_pan_joint" type="revolute">
    <origin xyz="0 0 0.1105"/>
    <!--<origin xyz="0 0 ${(body_height/2) + (neck_height/2)-0.01}"/>-->
    <axis xyz="0 0 1"/>
    <limit effort="2.645" lower="-1.57079633" upper="1.57079633" velocity="6"/>
    <safety_controller k_position="100" k_velocity="1.5" soft_lower_limit="-1.42079633" soft_upper_limit="1.42079633"/>
    <calibration reference_position="0.0"/>
    <dynamics damping="1.0"/>
    <origin rpy="0 0 0" xyz="0 0 0.18135"/>
    <parent link="bandit_torso_link"/>
    <child link="bandit_head_pan_link"/>
  </joint>
  <link name="bandit_head_pan_link">
    <inertial>
      <mass value="0"/>
      <origin rpy="183.928 0 -90" xyz="-0.05 0 -0.101"/>
      <inertia ixx="0.00482611007" ixy="-0.000144683999" ixz="0.000110076136" iyy="0.005218991412" iyz="-0.000314239509" izz="0.008618784925"/>
    </inertial>
    <visual name="bandit_head_pan_visual">
      <origin rpy="1.5696 0 -1.5696" xyz="0 0 0"/>
      <geometry name="bandit_head_pan_visual_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/neck_small.stl"/>
      </geometry>
      <material name="NewFace"/>
    </visual>
    <collision name="bandit_head_pan_collision">
      <origin rpy="1.5696 0 1.5696" xyz="0 0 0"/>
      <geometry name="bandit_head_pan_visual_geom">
        <box size="0.063 0.063 0.076"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="bandit_head_pan_link">
    <material value="PR2/Blue"/>
  </gazebo>
  <transmission name="bandit_head_pan_trans" type="SimpleTransmission">
    <actuator name="bandit_head_pan_motor"/>
    <joint name="bandit_head_pan_joint"/>
    <mechanicalReduction>1.0</mechanicalReduction>
  </transmission>
  <joint name="bandit_head_tilt_joint" type="revolute">
    <axis xyz="0 -1 0.0375"/>
    <limit effort="2.645" lower="-0.261799388" upper="0.261799388" velocity="6"/>
    <safety_controller k_position="100" k_velocity="1.5" soft_lower_limit="-1.42079633" soft_upper_limit="1.42079633"/>
    <calibration reference_position="0.0"/>
    <dynamics damping="1.0"/>
    <origin rpy="0 0 0" xyz="0.00 0 0.02"/>
    <parent link="bandit_head_pan_link"/>
    <child link="bandit_head_tilt_link"/>
  </joint>
  <link name="bandit_head_tilt_link">
    <inertial>
      <mass value="0"/>
      <origin rpy="1.5696 0 1.5696" xyz="0 0 0"/>
      <inertia ixx="0.00482611007" ixy="-0.000144683999" ixz="0.000110076136" iyy="0.005218991412" iyz="-0.000314239509" izz="0.008618784925"/>
    </inertial>
    <visual name="bandit_head_tilt_visual">
      <origin rpy="1.5696 0 1.5696" xyz="-.02 0 .01"/>
      <!--<origin xyz="0 0 0" rpy="${RCon*90} 0 ${RCon*90}"/>-->
      <!-- -->
      <geometry name="bandit_head_tilt_visual_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/head_small.stl"/>
      </geometry>
      <material name="NewFace"/>
    </visual>
    <collision name="bandit_head_tilt_collision">
      <origin rpy="0 0 0 " xyz="0 0 0"/>
      <geometry name="bandit_head_tilt_visual_geom">
        <box size="0.127 0.158 0.175"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="bandit_head_tilt_link">
    <material value="PR2/Grey"/>
  </gazebo>
  <transmission name="bandit_head_tilt_trans" type="SimpleTransmission">
    <actuator name="bandit_head_tilt_motor"/>
    <joint name="bandit_head_tilt_joint"/>
    <mechanicalReduction>1.0</mechanicalReduction>
  </transmission>
  <joint name="bandit_head_right_camera_joint" type="fixed">
    <origin rpy="0 1.57079632679 0" xyz="0.05 -0.0320 .060"/>
    <parent link="bandit_head_tilt_link"/>
    <child link="bandit_head_right_camera_link"/>
  </joint>
  <link name="bandit_head_right_camera_link">
    <inertial>
      <mass value="0"/>
      <origin rpy="1.5696 0 1.5696" xyz="0 0 0"/>
      <inertia ixx="0.00482611007" ixy="-0.000144683999" ixz="0.000110076136" iyy="0.005218991412" iyz="-0.000314239509" izz="0.008618784925"/>
    </inertial>
    <visual name="bandit_head_right_camera_visual">
      <origin rpy="1.5696 0 -1.5696" xyz="0.035 0 0"/>
      <geometry name="bandit_head_right_camera_visual_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/camera_board.stl"/>
      </geometry>
      <!--  <material name="Silver"/>  -->
      <material name="texture">
        <texture filename="package://bandit_urdf/meshes/bandit_mesh/reflect1.jpg"/>
      </material>
    </visual>
    <collision name="bandit_head_right_camera_collision">
      <origin rpy="0 0 0 " xyz="0 0 0"/>
      <geometry name="bandit_head_right_camera_visual_geom">
        <box size="0.127 0.158 0.175"/>
      </geometry>
    </collision>
  </link>
  <joint name="bandit_head_left_camera_joint" type="fixed">
    <origin rpy="0 1.57079632679 0" xyz="0.05 0.0320 .060"/>
    <parent link="bandit_head_tilt_link"/>
    <child link="bandit_head_left_camera_link"/>
  </joint>
  <link name="bandit_head_left_camera_link">
    <inertial>
      <mass value="0"/>
      <origin rpy="1.5696 0 1.5696" xyz="0 0 0"/>
      <inertia ixx="0.00482611007" ixy="-0.000144683999" ixz="0.000110076136" iyy="0.005218991412" iyz="-0.000314239509" izz="0.008618784925"/>
    </inertial>
    <visual name="bandit_head_left_camera_visual">
      <origin rpy="1.5696 0 -1.5696" xyz="0.035 0 0"/>
      <geometry name="bandit_head_left_camera_visual_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/camera_board.stl"/>
      </geometry>
      <!--  <material name="Silver"/>  -->
      <material name="texture">
        <texture filename="package://bandit_urdf/meshes/bandit_mesh/reflect1.jpg"/>
      </material>
    </visual>
    <collision name="bandit_head_left_camera_collision">
      <origin rpy="0 0 0 " xyz="0 0 0"/>
      <geometry name="bandit_head_left_camera_visual_geom">
        <box size="0.127 0.158 0.175"/>
      </geometry>
    </collision>
  </link>
  <joint name="bandit_head_left_brow_joint" type="revolute">
    <axis xyz="0 1 0"/>
    <limit effort="2.645" lower="-0.261799388" upper="0.261799388" velocity="6"/>
    <safety_controller k_position="100" k_velocity="1.5" soft_lower_limit="-1.42079633" soft_upper_limit="1.42079633"/>
    <calibration reference_position="0.0"/>
    <dynamics damping="1.0"/>
    <origin rpy="-1.57079632679 -1.57079632679 0" xyz="0.06 0.0470 .085"/>
    <parent link="bandit_head_tilt_link"/>
    <child link="bandit_head_left_brow_link"/>
  </joint>
  <link name="bandit_head_left_brow_link">
    <inertial>
      <mass value="0"/>
      <origin rpy="1.5696 0 1.5696" xyz="0 0 0"/>
      <inertia ixx="0.00482611007" ixy="-0.000144683999" ixz="0.000110076136" iyy="0.005218991412" iyz="-0.000314239509" izz="0.008618784925"/>
    </inertial>
    <visual name="bandit_head_left_brow_visual">
      <origin rpy="0.0 0 -1.5696" xyz="0 0 0"/>
      <geometry name="bandit_head_left_brow_visual_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/eyebrow_left_small.stl"/>
      </geometry>
      <material name="NewEye"/>
    </visual>
    <collision name="bandit_head_left_brow_collision">
      <origin rpy="0 0 0 " xyz="0 0 0"/>
      <geometry name="bandit_head_left_brow_visual_geom">
        <box size="0 0 0"/>
      </geometry>
    </collision>
  </link>
  <joint name="bandit_head_right_brow_joint" type="revolute">
    <axis xyz="0 -1 0"/>
    <limit effort="2.645" lower="-0.261799388" upper="0.261799388" velocity="6"/>
    <safety_controller k_position="100" k_velocity="1.5" soft_lower_limit="-1.42079633" soft_upper_limit="1.42079633"/>
    <calibration reference_position="0.0"/>
    <dynamics damping="1.0"/>
    <origin rpy="-1.57079632679 -1.57079632679 0" xyz="0.06 -0.0470 .085"/>
    <parent link="bandit_head_tilt_link"/>
    <child link="bandit_head_right_brow_link"/>
  </joint>
  <link name="bandit_head_right_brow_link">
    <inertial>
      <mass value="0"/>
      <origin rpy="1.5696 0 1.5696" xyz="0 0 0"/>
      <inertia ixx="0.00482611007" ixy="-0.000144683999" ixz="0.000110076136" iyy="0.005218991412" iyz="-0.000314239509" izz="0.008618784925"/>
    </inertial>
    <visual name="bandit_head_right_brow_visual">
      <origin rpy="0.0 0 -1.5696" xyz="0 0 0"/>
      <geometry name="bandit_head_right_brow_visual_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/eyebrow_right_small.stl"/>
      </geometry>
      <material name="NewEye"/>
    </visual>
    <collision name="bandit_head_right_brow_collision">
      <origin rpy="0 0 0 " xyz="0 0 0"/>
      <geometry name="bandit_head_right_brow_visual_geom">
        <box size="0 0 0"/>
      </geometry>
    </collision>
  </link>
  <joint name="bandit_head_lips_joint" type="revolute">
    <axis xyz="0 -1 0"/>
    <limit effort="2.645" lower="-0.261799388" upper="0.261799388" velocity="6"/>
    <safety_controller k_position="100" k_velocity="1.5" soft_lower_limit="-1.42079633" soft_upper_limit="1.42079633"/>
    <calibration reference_position="0.0"/>
    <dynamics damping="1.0"/>
    <origin rpy="0 0 0" xyz="0.070 0.0 -0.0075"/>
    <parent link="bandit_head_tilt_link"/>
    <child link="bandit_head_lips_link"/>
  </joint>
  <link name="bandit_head_lips_link">
    <inertial>
      <mass value="0"/>
      <origin rpy="0 0 1.5696" xyz="0 0 0"/>
      <inertia ixx="0.00482611007" ixy="-0.000144683999" ixz="0.000110076136" iyy="0.005218991412" iyz="-0.000314239509" izz="0.008618784925"/>
    </inertial>
    <visual name="bandit_head_lips_visual">
      <origin rpy="0.0 0 -1.5696" xyz="0 0 .002"/>
      <!--<origin xyz="0 0 -0.035" rpy="${RCon*0} 0 ${RCon*-90}"/>-->
      <!--<origin xyz="0 0 0" rpy="${RCon*90} 0 ${RCon*90}"/>-->
      <!-- -->
      <geometry name="bandit_head_lips_visual_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/top_lip_small.STL"/>
      </geometry>
      <material name="LipsPink"/>
    </visual>
    <collision name="bandit_head_lips_collision">
      <origin rpy="0 0 0 " xyz="0 0 0"/>
      <geometry name="bandit_head_lips_visual_geom">
        <box size="0.127 0.158 0.175"/>
      </geometry>
    </collision>
  </link>
  <joint name="bandit_head_lips2_joint" type="revolute">
    <axis xyz="0 -1 0"/>
    <limit effort="2.645" lower="-0.261799388" upper="0.261799388" velocity="6"/>
    <safety_controller k_position="100" k_velocity="1.5" soft_lower_limit="-1.42079633" soft_upper_limit="1.42079633"/>
    <calibration reference_position="0.0"/>
    <dynamics damping="1.0"/>
    <origin rpy="0 0 0" xyz="0.070 0.0 -0.0075"/>
    <parent link="bandit_head_tilt_link"/>
    <child link="bandit_head_lips2_link"/>
  </joint>
  <link name="bandit_head_lips2_link">
    <inertial>
      <mass value="0"/>
      <origin rpy="1.5696 0 1.5696" xyz="0 0 0"/>
      <inertia ixx="0.00482611007" ixy="-0.000144683999" ixz="0.000110076136" iyy="0.005218991412" iyz="-0.000314239509" izz="0.008618784925"/>
    </inertial>
    <visual name="bandit_head_lips2_visual">
      <origin rpy="0 0 -1.5696" xyz="0 0 -0.002"/>
      <!--<origin xyz="0 0 -0.035" rpy="${RCon*0} 0 ${RCon*-90}"/>-->
      <!--<origin xyz="0 0 0" rpy="${RCon*90} 0 ${RCon*90}"/>-->
      <!-- -->
      <geometry name="bandit_head_lips2_visual_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/bottom_lip_small.stl"/>
      </geometry>
      <material name="LipsPink"/>
    </visual>
    <collision name="bandit_head_lips2_collision">
      <origin rpy="0 0 0 " xyz="0 0 0"/>
      <geometry name="bandit_head_lips2_visual_geom">
        <box size="0.127 0.158 0.175"/>
      </geometry>
    </collision>
  </link>
  <joint name="left_torso_shoulder_mounting_joint" type="revolute">
    <axis xyz="0 -1 0"/>
    <origin rpy="0 0 0" xyz="0 0.16 0"/>
    <parent link="bandit_torso_link"/>
    <child link="left_shoulder_mounting_link"/>
    <limit effort="30" lower="-0.714601836603" upper="2.2853981634" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-0.564601836603" soft_upper_limit="2.1353981634"/>
  </joint>
  <link name="left_shoulder_mounting_link">
    <inertial>
      <origin rpy="3.14 0 0" xyz="-0.035 0.131 0.168"/>
      <!--<origin xyz="-0.035 0.131 -0.168" rpy="${PI} 0 0"/>-->
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="left_shoulder_mounting_link_visual">
      <origin rpy="1.5696 0 1.5696" xyz="0 0 0"/>
      <geometry name="left_shoulder_mounting_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/shoulder_cover_left_small.stl"/>
        <!--<box size="0.080 0.085 ${shoulder_mounting_link_z}"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="left_shoulder_mounting_link_collision">
      <origin rpy="1.5696 0 1.5696" xyz="0 0 0"/>
      <geometry name="left_shoulder_mounting_link_geom">
        <box size="0.080 0.085 0.081"/>
      </geometry>
    </collision>
  </link>
  <joint name="left_shoulder_mounting_shoulder_joint" type="revolute">
    <origin xyz="0 0.0 0"/>
    <axis xyz="1 0 0"/>
    <parent link="left_shoulder_mounting_link"/>
    <child link="left_shoulder_link"/>
    <limit effort="30" lower="-0.714601836603" upper="2.2853981634" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-0.564601836603" soft_upper_limit="2.1353981634"/>
  </joint>
  <link name="left_shoulder_link">
    <inertial>
      <origin rpy="0 3.1392 0" xyz="-0.030 -0. -0"/>
      <!--<origin xyz="-0.030 -0.160 -0" rpy="0 ${RCon*180} 0"/>-->
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="left_shoulder_link_visual">
      <origin rpy="0 1.57079632679 0" xyz="0 -0.0 0"/>
      <geometry name="left_shoulder_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/bicep_cover_left_small.stl"/>
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="left_shoulder_link_collision">
      <origin rpy="0 0 0" xyz="0 0 -0.04"/>
      <geometry name="left_shoulder_link_geom">
        <box size="0.080 0.080 0.16"/>
      </geometry>
    </collision>
  </link>
  <joint name="left_shoulder_bicep_joint" type="revolute">
    <origin xyz="0 0 -0.15"/>
    <axis xyz="0 0 1"/>
    <parent link="left_shoulder_link"/>
    <child link="left_bicep_link"/>
    <limit effort="30" lower="-2.2853981634" upper="0.714601836603" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-2.1353981634" soft_upper_limit="0.564601836603"/>
  </joint>
  <link name="left_bicep_link">
    <inertial>
      <origin rpy="0 0 1.5696" xyz="-0.0 0.0 -0.288"/>
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="left_bicep_link_visual">
      <origin rpy="0 -1.57079632679 -1.57079632679" xyz="0 0 0"/>
      <geometry name="left_bicep_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/elbow_cover_left_small.stl"/>
        <!--<box size="0.050 0.050 0.065"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="left_bicep_link_collision">
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry name="left_bicep_link_geom">
        <box size="0.050 0.050 0.065"/>
      </geometry>
    </collision>
  </link>
  <joint name="left_bicep_forearm_joint" type="revolute">
    <origin xyz="0 0 0"/>
    <axis xyz="0 -1.0 0"/>
    <parent link="left_bicep_link"/>
    <child link="left_forearm_link"/>
    <limit effort="30" lower="-0.714601836603" upper="2.2853981634" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-0.564601836603" soft_upper_limit="2.1353981634"/>
  </joint>
  <link name="left_forearm_link">
    <inertial>
      <origin rpy="0 3.1392 3.1392" xyz="-0.028 0.163 -0.372"/>
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="left_forearm_link_visual">
      <origin rpy="0 1.57079632679 1.57079632679" xyz="0 0 0"/>
      <!--<origin xyz="0 0 -0.025" rpy="0 ${M_PI/2} ${M_PI/2}"/>-->
      <geometry name="left_forearm_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/forearm_cover_left_small.stl"/>
        <!--<box size="0.068 0.065 0.095"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="left_forearm_link_collision">
      <origin rpy="0 0 0" xyz="0 0 -0.025"/>
      <geometry name="left_forearm_link_geom">
        <box size="0.068 0.065 0.095"/>
      </geometry>
    </collision>
  </link>
  <joint name="left_forearm_wrist_joint" type="revolute">
    <origin rpy="0 0 -1.57079632679" xyz="0 0 -0.145"/>
    <!--<origin xyz="0 0 -0.090"/>-->
    <axis xyz="0 0 1"/>
    <parent link="left_forearm_link"/>
    <child link="left_wrist_link"/>
    <limit effort="30" lower="-0.714601836603" upper="2.2853981634" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-0.564601836603" soft_upper_limit="2.1353981634"/>
  </joint>
  <link name="left_wrist_link">
    <inertial>
      <origin rpy="0 0 0" xyz="-0.026 0.163 -0.434"/>
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="left_wrist_link_visual">
      <origin rpy="1.57079632679 0 1.57079632679" xyz="0 0 -0.01"/>
      <geometry name="left_wrist_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/wrist_cover_left_small.stl"/>
        <!--<box size="0.054 0.054 0.055"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="">
      <origin rpy="0 0 0" xyz="0 0 -0.01"/>
      <geometry name="left_wrist_link_geom">
        <box size="0.054 0.054 0.055"/>
      </geometry>
    </collision>
  </link>
  <joint name="left_wrist_hand_joint" type="revolute">
    <origin xyz="0 0 -0.01"/>
    <!--<origin xyz="0 0 -0.025"/>-->
    <axis xyz="0 -1 0"/>
    <parent link="left_wrist_link"/>
    <child link="left_hand_link"/>
    <limit effort="30" lower="-0.714601836603" upper="2.2853981634" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-0.564601836603" soft_upper_limit="2.1353981634"/>
  </joint>
  <link name="left_hand_link">
    <inertial>
      <origin rpy="0.99408 0 1.5696" xyz="-0.015 0.163 -0.486"/>
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="left_hand_link_visual">
      <origin rpy="1.57079632679 0 0" xyz="0 0 -.00"/>
      <geometry name="left_hand_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/left_hand_small.stl"/>
        <!--<box size="0.060 0.060 0.080"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="left_hand_link_collision">
      <origin rpy="0 0 0" xyz="0 0 -.03"/>
      <geometry name="left_hand_link_geom">
        <box size="0.060 0.060 0.080"/>
      </geometry>
    </collision>
  </link>
  <joint name="left_hand_thumb_joint" type="revolute">
    <origin xyz="0.014 0 -.033"/>
    <axis xyz="0 1 0"/>
    <parent link="left_hand_link"/>
    <child link="left_thumb_link"/>
    <limit effort="30" lower="-0.714601836603" upper="0" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-0.564601836603" soft_upper_limit="-0.15"/>
  </joint>
  <link name="left_thumb_link">
    <inertial>
      <origin rpy="1.5696 0 1.5696" xyz="0.037 0.163 -0.484"/>
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="left_thumb_link_visual">
      <origin rpy="1.57079632679 -1.57079632679 0" xyz="0 0 0"/>
      <geometry name="left_thumb_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/left_thumb_small.stl"/>
        <!--<box size="0.030 0.025 0.06"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="left_thumb_link_collision">
      <origin rpy="0 0 0" xyz="0 0 -.015"/>
      <geometry name="left_thumb_link_geom">
        <box size="0.030 0.025 0.06"/>
      </geometry>
    </collision>
  </link>
  <joint name="right_torso_shoulder_mounting_joint" type="revolute">
    <axis xyz="0 -1 0"/>
    <origin rpy="0 0 0" xyz="0 -0.16 0"/>
    <parent link="bandit_torso_link"/>
    <child link="right_shoulder_mounting_link"/>
    <limit effort="30" lower="-2.2853981634" upper="0.714601836603" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-2.1353981634" soft_upper_limit="0.564601836603"/>
  </joint>
  <link name="right_shoulder_mounting_link">
    <inertial>
      <origin rpy="3.14 0 0" xyz="-0.035 0.131 -0.168"/>
      <!--<origin xyz="-0.035 0.131 -0.168" rpy="${PI} 0 0"/>-->
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="right_shoulder_mounting_link_visual">
      <origin rpy="1.5696 0 1.5696" xyz="0 0 0"/>
      <geometry name="right_shoulder_mounting_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/shoulder_cover_right_small.stl"/>
        <!--<box size="0.080 0.085 ${shoulder_mounting_link_z}"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="right_shoulder_mounting_link_collision">
      <origin rpy="1.5696 0 1.5696" xyz="0 0 0"/>
      <geometry name="right_shoulder_mounting_link_geom">
        <box size="0.080 0.085 0.081"/>
      </geometry>
    </collision>
  </link>
  <joint name="right_shoulder_mounting_shoulder_joint" type="revolute">
    <origin xyz="0 -0.0 0"/>
    <axis xyz="-1 0 0"/>
    <parent link="right_shoulder_mounting_link"/>
    <child link="right_shoulder_link"/>
    <limit effort="30" lower="-2.2853981634" upper="0.714601836603" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-2.1353981634" soft_upper_limit="0.564601836603"/>
  </joint>
  <link name="right_shoulder_link">
    <inertial>
      <origin rpy="0 3.1392 0" xyz="-0.030 -0. -0"/>
      <!--<origin xyz="-0.030 -0.160 -0" rpy="0 ${RCon*180} 0"/>-->
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="right_shoulder_link_visual">
      <origin rpy="0 1.57079632679 0" xyz="0 0.0 0"/>
      <geometry name="right_shoulder_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/bicep_cover_right_small.stl"/>
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="right_shoulder_link_collision">
      <origin rpy="0 0 0" xyz="0 0 -0.04"/>
      <geometry name="right_shoulder_link_geom">
        <box size="0.080 0.080 0.16"/>
      </geometry>
    </collision>
  </link>
  <joint name="right_shoulder_bicep_joint" type="revolute">
    <origin xyz="0 0 -0.15"/>
    <axis xyz="0 0 -1"/>
    <parent link="right_shoulder_link"/>
    <child link="right_bicep_link"/>
    <limit effort="30" lower="-0.714601836603" upper="2.2853981634" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-0.564601836603" soft_upper_limit="2.1353981634"/>
  </joint>
  <link name="right_bicep_link">
    <inertial>
      <origin rpy="0 0 1.5696" xyz="-0.0 0.0 -0.288"/>
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="right_bicep_link_visual">
      <origin rpy="0 -1.57079632679 -1.57079632679" xyz="0 0 0"/>
      <geometry name="right_bicep_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/elbow_cover_right_small.stl"/>
        <!--<box size="0.050 0.050 0.065"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="right_bicep_link_collision">
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry name="right_bicep_link_geom">
        <box size="0.050 0.050 0.065"/>
      </geometry>
    </collision>
  </link>
  <joint name="right_bicep_forearm_joint" type="revolute">
    <origin xyz="0 0 0"/>
    <axis xyz="0 -1.0 0"/>
    <parent link="right_bicep_link"/>
    <child link="right_forearm_link"/>
    <limit effort="30" lower="-2.2853981634" upper="0.714601836603" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-2.1353981634" soft_upper_limit="0.564601836603"/>
  </joint>
  <link name="right_forearm_link">
    <inertial>
      <origin rpy="0 3.1392 3.1392" xyz="-0.028 0.163 -0.372"/>
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="right_forearm_link_visual">
      <origin rpy="0 1.57079632679 1.57079632679" xyz="0 0 0"/>
      <!--<origin xyz="0 0 -0.025" rpy="0 ${M_PI/2} ${M_PI/2}"/>-->
      <geometry name="right_forearm_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/forearm_cover_right_small.stl"/>
        <!--<box size="0.068 0.065 0.095"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="right_forearm_link_collision">
      <origin rpy="0 0 0" xyz="0 0 -0.025"/>
      <geometry name="right_forearm_link_geom">
        <box size="0.068 0.065 0.095"/>
      </geometry>
    </collision>
  </link>
  <joint name="right_forearm_wrist_joint" type="revolute">
    <origin rpy="0 0 1.57079632679" xyz="0 0 -0.145"/>
    <!--<origin xyz="0 0 -0.090"/>-->
    <axis xyz="0 0 -1"/>
    <parent link="right_forearm_link"/>
    <child link="right_wrist_link"/>
    <limit effort="30" lower="-2.2853981634" upper="0.714601836603" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-2.1353981634" soft_upper_limit="0.564601836603"/>
  </joint>
  <link name="right_wrist_link">
    <inertial>
      <origin rpy="0 0 0" xyz="-0.026 0.163 -0.434"/>
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="right_wrist_link_visual">
      <origin rpy="1.57079632679 0 1.57079632679" xyz="0 0 -0.01"/>
      <geometry name="right_wrist_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/wrist_cover_right_small.stl"/>
        <!--<box size="0.054 0.054 0.055"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="">
      <origin rpy="0 0 0" xyz="0 0 -0.01"/>
      <geometry name="right_wrist_link_geom">
        <box size="0.054 0.054 0.055"/>
      </geometry>
    </collision>
  </link>
  <joint name="right_wrist_hand_joint" type="revolute">
    <origin xyz="0 0 -0.01"/>
    <!--<origin xyz="0 0 -0.025"/>-->
    <axis xyz="0 -1 0"/>
    <parent link="right_wrist_link"/>
    <child link="right_hand_link"/>
    <limit effort="30" lower="-2.2853981634" upper="0.714601836603" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-2.1353981634" soft_upper_limit="0.564601836603"/>
  </joint>
  <link name="right_hand_link">
    <inertial>
      <origin rpy="0.99408 0 1.5696" xyz="-0.015 0.163 -0.486"/>
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="right_hand_link_visual">
      <origin rpy="1.57079632679 0 0" xyz="0 0 -.00"/>
      <geometry name="right_hand_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/right_hand_small.stl"/>
        <!--<box size="0.060 0.060 0.080"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="right_hand_link_collision">
      <origin rpy="0 0 0" xyz="0 0 -.03"/>
      <geometry name="right_hand_link_geom">
        <box size="0.060 0.060 0.080"/>
      </geometry>
    </collision>
  </link>
  <joint name="right_hand_thumb_joint" type="revolute">
    <origin xyz="0.014 0 -.033"/>
    <axis xyz="0 1 0"/>
    <parent link="right_hand_link"/>
    <child link="right_thumb_link"/>
    <limit effort="30" lower="-2.2853981634" upper="0" velocity="6"/>
    <dynamics damping="1.0"/>
    <calibration reference_position="0.0"/>
    <safety_controller k_position="100" k_velocity="10" soft_lower_limit="-2.1353981634" soft_upper_limit="-0.15"/>
  </joint>
  <link name="right_thumb_link">
    <inertial>
      <origin rpy="1.5696 0 1.5696" xyz="0.037 0.163 -0.484"/>
      <mass value="0"/>
      <inertia ixx="0.866179142480" ixy="-0.06086507933" ixz="-0.12118061183" iyy="0.87421714893" iyz="-0.05886609911" izz="0.27353821674"/>
    </inertial>
    <visual name="right_thumb_link_visual">
      <origin rpy="1.57079632679 -1.57079632679 0" xyz="0 0 0"/>
      <geometry name="right_thumb_link_geom">
        <mesh filename="package://bandit_urdf/meshes/bandit_mesh/right_thumb_small.stl"/>
        <!--<box size="0.030 0.025 0.06"/>-->
      </geometry>
      <material name="Grey"/>
    </visual>
    <collision name="right_thumb_link_collision">
      <origin rpy="0 0 0" xyz="0 0 -.015"/>
      <geometry name="right_thumb_link_geom">
        <box size="0.030 0.025 0.06"/>
      </geometry>
    </collision>
  </link>
</robot>