Gazebo | Ignition | Community
Ask Your Question

Revision history [back]

Diff Drive Plugin Drift Problem

I am facing issue using the gazebo differential drive controller. The robot moves however it doesn't exactly move in a straight line when I issue /cmd_vel x="0.05". The robot will start to drift gradually. Appreciate any help thanks. I have tried increasing the mass and also ensuring the inertia is not tilted. Also, when I check the /joint_states topic each of the wheel joint has slightly different position.

<?xml version="1.0" ?>
<robot name="alphabot" xmlns:xacro="http://www.ros.org/wiki/xacro">

<xacro:include filename="$(find alphabot_description)/urdf/materials.xacro" />
<xacro:include filename="$(find alphabot_description)/urdf/alphabot.trans" />
<xacro:include filename="$(find alphabot_description)/urdf/alphabot.gazebo" />
<link name="base_link">
  <inertial>
    <origin xyz="3.9964129120210354e-17 -1.949783532853795e-05 0.014547668321607015" rpy="0 0 0"/>
    <mass value="0.2"/>
    <inertia ixx="0.000125" iyy="0.000266" izz="0.000389" ixy="-0.0" iyz="-0.0" ixz="0.0"/>
  </inertial>
  <visual>
    <origin xyz="0 0 0" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/base_link.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="blue"/>
  </visual>
  <collision>
    <origin xyz="0 0 0" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/base_link.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="spacer_1_1">
  <inertial>
    <origin xyz="-8.554354349876725e-08 -2.7824964554667986e-15 0.020056162439080906" rpy="0 0 0"/>
    <mass value="0.05"/>
    <inertia ixx="1e-06" iyy="1e-06" izz="0.0" ixy="-0.0" iyz="0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="-0.028948 -0.04191 -0.017048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/spacer_1_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="gold"/>
  </visual>
  <collision>
    <origin xyz="-0.028948 -0.04191 -0.017048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/spacer_1_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="spacer_1_2">
  <inertial>
    <origin xyz="-8.554354354040061e-08 -2.7755575615628914e-15 0.020056162439080906" rpy="0 0 0"/>
    <mass value="0.05"/>
    <inertia ixx="1e-06" iyy="1e-06" izz="0.0" ixy="-0.0" iyz="0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="-0.028948 0.04191 -0.017048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/spacer_1_2.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="gold"/>
  </visual>
  <collision>
    <origin xyz="-0.028948 0.04191 -0.017048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/spacer_1_2.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="spacer_1_3">
  <inertial>
    <origin xyz="8.554362094723156e-08 -2.7824964554667986e-15 0.02005616243908087" rpy="0 0 0"/>
    <mass value="0.05"/>
    <inertia ixx="1e-06" iyy="1e-06" izz="0.0" ixy="-0.0" iyz="0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="0.028948 0.04191 -0.017048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/spacer_1_3.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="gold"/>
  </visual>
  <collision>
    <origin xyz="0.028948 0.04191 -0.017048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/spacer_1_3.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="spacer_1_4">
  <inertial>
    <origin xyz="8.554362097498713e-08 -2.7478019859472624e-15 0.02005616243908087" rpy="0 0 0"/>
    <mass value="0.05"/>
    <inertia ixx="1e-06" iyy="1e-06" izz="0.0" ixy="-0.0" iyz="0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="0.028948 -0.04191 -0.017048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/spacer_1_4.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="gold"/>
  </visual>
  <collision>
    <origin xyz="0.028948 -0.04191 -0.017048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/spacer_1_4.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="ultasonic_1">
  <inertial>
    <origin xyz="0.033193707682986046 -9.529009860237083e-08 -0.0020378179399959465" rpy="0 0 0"/>
    <mass value="0.02930398813229992"/>
    <inertia ixx="6e-06" iyy="1e-06" izz="5e-06" ixy="-0.0" iyz="0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="-0.0 -0.0 -0.029095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/ultasonic_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="blue_2"/>
  </visual>
  <collision>
    <origin xyz="-0.0 -0.0 -0.029095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/ultasonic_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="AA_1">
  <inertial>
    <origin xyz="1.7694179454963432e-16 -0.024725409875466925 -3.3167839298339774e-07" rpy="0 0 0"/>
    <mass value="0.2"/>
    <inertia ixx="1.3e-05" iyy="2e-06" izz="1.3e-05" ixy="0.0" iyz="-0.0" ixz="0.0"/>
  </inertial>
  <visual>
    <origin xyz="0.02225 -0.026 -0.026048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/AA_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="white"/>
  </visual>
  <collision>
    <origin xyz="0.02225 -0.026 -0.026048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/AA_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="AA_2">
  <inertial>
    <origin xyz="2.0816681711721685e-16 0.024725409875466935 -3.3167839298339774e-07" rpy="0 0 0"/>
    <mass value="0.2"/>
    <inertia ixx="1.3e-05" iyy="2e-06" izz="1.3e-05" ixy="-0.0" iyz="-0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="0.03775 0.026 -0.026048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/AA_2.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="white"/>
  </visual>
  <collision>
    <origin xyz="0.03775 0.026 -0.026048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/AA_2.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="battery_case_1">
  <inertial>
    <origin xyz="-0.030001214328793938 -3.4027627677573753e-05 -0.008341128938452552" rpy="0 0 0"/>
    <mass value="0.06781923232527433"/>
    <inertia ixx="2.2e-05" iyy="8e-06" izz="2.8e-05" ixy="-0.0" iyz="0.0" ixz="0.0"/>
  </inertial>
  <visual>
    <origin xyz="-0.0 -0.0 -0.029095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/battery_case_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="black"/>
  </visual>
  <collision>
    <origin xyz="-0.0 -0.0 -0.029095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/battery_case_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="motor_1">
  <inertial>
    <origin xyz="-5.612031395152428e-11 -0.024604091884807677 -0.007047331744742258" rpy="0 0 0"/>
    <mass value="0.05"/>
    <inertia ixx="0.0" iyy="0.0" izz="0.0" ixy="-0.0" iyz="0.0" ixz="0.0"/>
  </inertial>
  <visual>
    <origin xyz="-0.0 -0.0 -0.029095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/motor_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="silver"/>
  </visual>
  <collision>
    <origin xyz="-0.0 -0.0 -0.029095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/motor_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="motor_2">
  <inertial>
    <origin xyz="5.6120382785351805e-11 0.024604091884807677 -0.007047331744742258" rpy="0 0 0"/>
    <mass value="0.05"/>
    <inertia ixx="0.0" iyy="0.0" izz="0.0" ixy="-0.0" iyz="-0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="-0.0 -0.0 -0.029095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/motor_2.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="silver"/>
  </visual>
  <collision>
    <origin xyz="-0.0 -0.0 -0.029095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/motor_2.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="top_link_1">
  <inertial>
    <origin xyz="0.028960085543582276 0.04191000000000044 0.0024996683216068558" rpy="0 0 0"/>
    <mass value="0.37189545514665234"/>
    <inertia ixx="0.000281" iyy="0.000282" izz="0.000561" ixy="0.0" iyz="-0.0" ixz="0.0"/>
  </inertial>
  <visual>
    <origin xyz="0.028948 0.04191 -0.057423" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/top_link_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="blue"/>
  </visual>
  <collision>
    <origin xyz="0.028948 0.04191 -0.057423" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/top_link_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="pantilt_1_1">
  <inertial>
    <origin xyz="-0.0036327417220515914 -2.873247422695575e-15 0.0018087943330409653" rpy="0 0 0"/>
    <mass value="0.02484644401179895"/>
    <inertia ixx="2e-06" iyy="3e-06" izz="5e-06" ixy="0.0" iyz="-0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="-1.2e-05 0.0 -0.062423" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/pantilt_1_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="blue"/>
  </visual>
  <collision>
    <origin xyz="-1.2e-05 0.0 -0.062423" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/pantilt_1_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="servo_emax_1_1">
  <inertial>
    <origin xyz="8.554358228704865e-08 1.254629415068201e-13 0.0035263014079521815" rpy="0 0 0"/>
    <mass value="0.0035428307305659244"/>
    <inertia ixx="0.0" iyy="0.0" izz="0.0" ixy="-0.0" iyz="-0.0" ixz="0.0"/>
  </inertial>
  <visual>
    <origin xyz="-1.2e-05 0.0 -0.064423" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/servo_emax_1_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="silver"/>
  </visual>
  <collision>
    <origin xyz="-1.2e-05 0.0 -0.064423" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/servo_emax_1_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="pantilt_2_1">
  <inertial>
    <origin xyz="-0.0044345407767680915 0.08095404581089227 0.003603404587610881" rpy="0 0 0"/>
    <mass value="0.05139456940551715"/>
    <inertia ixx="1e-05" iyy="1.1e-05" izz="1.4e-05" ixy="-0.0" iyz="-0.0" ixz="-2e-06"/>
  </inertial>
  <visual>
    <origin xyz="-0.01175 0.081723 -0.091723" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/pantilt_2_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="black"/>
  </visual>
  <collision>
    <origin xyz="-0.01175 0.081723 -0.091723" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/pantilt_2_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="servo_emax_2_1">
  <inertial>
    <origin xyz="-0.09208845165187876 -0.04184616942907199 -0.06897233167823215" rpy="0 0 0"/>
    <mass value="0.0026502814230264554"/>
    <inertia ixx="0.0" iyy="0.0" izz="0.0" ixy="-0.0" iyz="-0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="-0.118253 -0.025389 -0.180545" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/servo_emax_2_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="silver"/>
  </visual>
  <collision>
    <origin xyz="-0.118253 -0.025389 -0.180545" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/servo_emax_2_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="pantilt_3_1">
  <inertial>
    <origin xyz="0.13325626443826744 -0.013095879873687058 0.02043119326869315" rpy="0 0 0"/>
    <mass value="0.025707768034284914"/>
    <inertia ixx="6e-06" iyy="3e-06" izz="4e-06" ixy="0.0" iyz="0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="0.098261 -0.0148 -0.102061" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/pantilt_3_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="black"/>
  </visual>
  <collision>
    <origin xyz="0.098261 -0.0148 -0.102061" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/pantilt_3_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="servo_2_1">
  <inertial>
    <origin xyz="8.55435810034888e-08 0.012439350245232213 0.005558642662359281" rpy="0 0 0"/>
    <mass value="0.048166128445804444"/>
    <inertia ixx="4e-06" iyy="3e-06" izz="3e-06" ixy="-0.0" iyz="-0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="-0.027112 0.0112 -0.111573" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/servo_2_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="silver"/>
  </visual>
  <collision>
    <origin xyz="-0.027112 0.0112 -0.111573" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/servo_2_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="servo_1_1">
  <inertial>
    <origin xyz="0.005559059884334861 -1.4876988529977098e-15 0.012439018566839363" rpy="0 0 0"/>
    <mass value="0.048166128445804444"/>
    <inertia ixx="3e-06" iyy="4e-06" izz="3e-06" ixy="-0.0" iyz="-0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="-1.2e-05 0.0 -0.073923" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/servo_1_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="light_blue"/>
  </visual>
  <collision>
    <origin xyz="-1.2e-05 0.0 -0.073923" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/servo_1_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="camera_1">
  <inertial>
    <origin xyz="0.0054251818860430664 -1.398078701420058e-15 0.0006839016107979407" rpy="0 0 0"/>
    <mass value="0.007223141621539521"/>
    <inertia ixx="1e-06" iyy="1e-06" izz="1e-06" ixy="-0.0" iyz="-0.0" ixz="0.0"/>
  </inertial>
  <visual>
    <origin xyz="-0.035312 -0.0007 -0.122273" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/camera_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="green"/>
  </visual>
  <collision>
    <origin xyz="-0.035312 -0.0007 -0.122273" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/camera_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="ball_1">
  <inertial>
    <origin xyz="4.163336342344337e-17 0.0 -0.001000409009021104" rpy="0 0 0"/>
    <mass value="0.005036225223550487"/>
    <inertia ixx="0.0" iyy="0.0" izz="0.0" ixy="0.0" iyz="-0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="0.04 0.0 -0.007547" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/ball_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="silver"/>
  </visual>
  <collision>
    <origin xyz="0.04 0.0 -0.007547" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/ball_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="housing_1">
  <inertial>
    <origin xyz="-0.03999999999999995 -1.7763568394002505e-17 -0.016681638158599674" rpy="0 0 0"/>
    <mass value="0.003819569070267199"/>
    <inertia ixx="0.0" iyy="0.0" izz="0.0" ixy="0.0" iyz="0.0" ixz="0.0"/>
  </inertial>
  <visual>
    <origin xyz="-0.0 -0.0 -0.024095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/housing_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="white"/>
  </visual>
  <collision>
    <origin xyz="-0.0 -0.0 -0.024095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/housing_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="ball_2">
  <inertial>
    <origin xyz="0.08000000000000003 -1.7763568394002505e-17 -0.0010004090090210953" rpy="0 0 0"/>
    <mass value="0.005036225223550487"/>
    <inertia ixx="0.0" iyy="0.0" izz="0.0" ixy="0.0" iyz="-0.0" ixz="0.0"/>
  </inertial>
  <visual>
    <origin xyz="0.04 0.0 -0.007547" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/ball_2.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="silver"/>
  </visual>
  <collision>
    <origin xyz="0.04 0.0 -0.007547" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/ball_2.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="housing_2">
  <inertial>
    <origin xyz="0.040000000000000015 -3.552713678800501e-17 -0.016681638158599674" rpy="0 0 0"/>
    <mass value="0.003819569070267199"/>
    <inertia ixx="0.0" iyy="0.0" izz="0.0" ixy="0.0" iyz="0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="-0.0 -0.0 -0.024095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/housing_2.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="white"/>
  </visual>
  <collision>
    <origin xyz="-0.0 -0.0 -0.024095" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/housing_2.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="left_wheel_1">
  <inertial>
    <origin xyz="3.608732648937964e-06 0.07958937458754446 -2.519122826071668e-06" rpy="0 0 0"/>
    <mass value="0.1"/>
    <inertia ixx="1.8e-05" iyy="3.1e-05" izz="1.8e-05" ixy="-0.0" iyz="0.0" ixz="-0.0"/>
  </inertial>
  <visual>
    <origin xyz="0.0 0.037 -0.022048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/left_wheel_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="black"/>
  </visual>
  <collision>
    <origin xyz="0.0 0.037 -0.022048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/left_wheel_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<link name="right_wheel_1">
  <inertial>
    <origin xyz="-3.6087326488468997e-06 -0.005589374587544396 -2.5191228260612597e-06" rpy="0 0 0"/>
    <mass value="0.1"/>
    <inertia ixx="1.8e-05" iyy="3.1e-05" izz="1.8e-05" ixy="-0.0" iyz="-0.0" ixz="0.0"/>
  </inertial>
  <visual>
    <origin xyz="0.0 0.037 -0.022048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/right_wheel_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
    <material name="black"/>
  </visual>
  <collision>
    <origin xyz="0.0 0.037 -0.022048" rpy="0 0 0"/>
    <geometry>
      <mesh filename="package://alphabot_description/meshes/right_wheel_1.stl" scale="0.001 0.001 0.001"/>
    </geometry>
  </collision>
</link>

<joint name="Rigid 6" type="fixed">
  <origin xyz="0.028948 0.04191 0.017048" rpy="0 0 0"/>
  <parent link="base_link"/>
  <child link="spacer_1_1"/>
</joint>

<joint name="Rigid 7" type="fixed">
  <origin xyz="0.028948 -0.04191 0.017048" rpy="0 0 0"/>
  <parent link="base_link"/>
  <child link="spacer_1_2"/>
</joint>

<joint name="Rigid 8" type="fixed">
  <origin xyz="-0.028948 -0.04191 0.017048" rpy="0 0 0"/>
  <parent link="base_link"/>
  <child link="spacer_1_3"/>
</joint>

<joint name="Rigid 9" type="fixed">
  <origin xyz="-0.028948 0.04191 0.017048" rpy="0 0 0"/>
  <parent link="base_link"/>
  <child link="spacer_1_4"/>
</joint>

<joint name="Rigid 10" type="fixed">
  <origin xyz="0.0 0.0 0.029095" rpy="0 0 0"/>
  <parent link="base_link"/>
  <child link="ultasonic_1"/>
</joint>

<joint name="Rigid 13" type="fixed">
  <origin xyz="-0.02225 0.026 -0.003047" rpy="0 0 0"/>
  <parent link="battery_case_1"/>
  <child link="AA_1"/>
</joint>

<joint name="Rigid 14" type="fixed">
  <origin xyz="-0.03775 -0.026 -0.003047" rpy="0 0 0"/>
  <parent link="battery_case_1"/>
  <child link="AA_2"/>
</joint>

<joint name="Rigid 15" type="fixed">
  <origin xyz="0.0 0.0 0.029095" rpy="0 0 0"/>
  <parent link="base_link"/>
  <child link="battery_case_1"/>
</joint>

<joint name="Rigid 16" type="fixed">
  <origin xyz="0.0 0.0 0.029095" rpy="0 0 0"/>
  <parent link="base_link"/>
  <child link="motor_1"/>
</joint>

<joint name="Rigid 17" type="fixed">
  <origin xyz="0.0 0.0 0.029095" rpy="0 0 0"/>
  <parent link="base_link"/>
  <child link="motor_2"/>
</joint>

<joint name="Rigid 20" type="fixed">
  <origin xyz="0.0 0.0 0.040375" rpy="0 0 0"/>
  <parent link="spacer_1_3"/>
  <child link="top_link_1"/>
</joint>

<joint name="Rigid 21" type="fixed">
  <origin xyz="0.02896 0.04191 0.005" rpy="0 0 0"/>
  <parent link="top_link_1"/>
  <child link="pantilt_1_1"/>
</joint>

<joint name="Rigid 22" type="fixed">
  <origin xyz="0.0 0.0 0.002" rpy="0 0 0"/>
  <parent link="pantilt_1_1"/>
  <child link="servo_emax_1_1"/>
</joint>

<joint name="Rigid 24" type="fixed">
  <origin xyz="0.011738 -0.081723 0.0178" rpy="0 0 0"/>
  <parent link="servo_1_1"/>
  <child link="pantilt_2_1"/>
</joint>

<joint name="Rigid 27" type="fixed">
  <origin xyz="0.106503 0.107112 0.088822" rpy="0 0 0"/>
  <parent link="pantilt_2_1"/>
  <child link="servo_emax_2_1"/>
</joint>

<joint name="Rigid 29" type="fixed">
  <origin xyz="-0.125373 0.026 -0.009512" rpy="0 0 0"/>
  <parent link="servo_2_1"/>
  <child link="pantilt_3_1"/>
</joint>

<joint name="Revolute 30" type="continuous">
  <origin xyz="-0.091141 -0.036589 -0.068972" rpy="0 0 0"/>
  <parent link="servo_emax_2_1"/>
  <child link="servo_2_1"/>
  <axis xyz="0.0 1.0 0.0"/>
  <dynamics damping="0.1" friction="100"/>
  <limit effort="130" lower="-1.57" upper="1.57" velocity="6.98"/>
</joint>

<joint name="Revolute 31" type="continuous">
  <origin xyz="0.0 0.0 0.0095" rpy="0 0 0"/>
  <parent link="servo_emax_1_1"/>
  <child link="servo_1_1"/>
  <axis xyz="-0.0 -0.0 1.0"/>
  <dynamics damping="0.01" friction="1"/>
  <limit effort="130" lower="-1.57" upper="1.57" velocity="6.98"/>
</joint>

<joint name="Rigid 32" type="fixed">
  <origin xyz="0.133573 -0.0141 0.020212" rpy="0 0 0"/>
  <parent link="pantilt_3_1"/>
  <child link="camera_1"/>
</joint>

<joint name="Rigid 43" type="fixed">
  <origin xyz="-0.04 -0.0 -0.016548" rpy="0 0 0"/>
  <parent link="housing_1"/>
  <child link="ball_1"/>
</joint>

<joint name="Rigid 44" type="fixed">
  <origin xyz="0.0 0.0 0.024095" rpy="0 0 0"/>
  <parent link="base_link"/>
  <child link="housing_1"/>
</joint>

<joint name="Rigid 45" type="fixed">
  <origin xyz="-0.04 -0.0 -0.016548" rpy="0 0 0"/>
  <parent link="housing_2"/>
  <child link="ball_2"/>
</joint>

<joint name="Rigid 46" type="fixed">
  <origin xyz="0.0 0.0 0.024095" rpy="0 0 0"/>
  <parent link="base_link"/>
  <child link="housing_2"/>
</joint>

<joint name="Revolute 18" type="continuous">
  <origin xyz="-0.0 -0.037 -0.007047" rpy="0 0 0"/>
  <parent link="motor_2"/>
  <child link="left_wheel_1"/>
  <axis xyz="0.0 1.0 -0.0"/>
  <dynamics damping="2" friction="2"/>
</joint>

<joint name="Revolute 19" type="continuous">
  <origin xyz="-0.0 -0.037 -0.007047" rpy="0 0 0"/>
  <parent link="motor_1"/>
  <child link="right_wheel_1"/>
  <axis xyz="0.0 1.0 -0.0"/>
  <dynamics damping="2" friction="2"/>
</joint>

</robot>

gazebo file

<?xml version="1.0" ?>
<robot name="alphabot" xmlns:xacro="http://www.ros.org/wiki/xacro" >

<xacro:property name="blue" value="Gazebo/Blue" />
<xacro:property name="silver" value="Gazebo/Silver" />
<xacro:property name="black" value="Gazebo/Black" />
<xacro:property name="green" value="Gazebo/Green" />
<xacro:property name="gold" value="Gazebo/Gold" />
<xacro:property name="blue_2" value="Gazebo/SkyBlue" />

<gazebo>
  <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
    <robotNamespace>/alphabot</robotNamespace>
  </plugin>
  <plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so">

    <!-- Plugin update rate in Hz -->
    <updateRate>5</updateRate>

    <!-- Name of left joint, defaults to `left_joint` -->
    <leftJoint>Revolute 18</leftJoint>

    <!-- Name of right joint, defaults to `right_joint` -->
    <rightJoint>Revolute 19</rightJoint>

    <!-- The distance from the center of one wheel to the other, in meters, defaults to 0.34 m -->
    <wheelSeparation>0.08</wheelSeparation>

    <!-- Diameter of the wheels, in meters, defaults to 0.15 m -->
    <wheelDiameter>0.043</wheelDiameter>

    <!-- Wheel acceleration, in rad/s^2, defaults to 0.0 rad/s^2 -->
    <wheelAcceleration>1.0</wheelAcceleration>

    <!-- Maximum torque which the wheels can produce, in Nm, defaults to 5 Nm -->
    <wheelTorque>100</wheelTorque>

    <!-- Topic to receive geometry_msgs/Twist message commands, defaults to `cmd_vel` -->
    <commandTopic>cmd_vel</commandTopic>

    <!-- Topic to publish nav_msgs/Odometry messages, defaults to `odom` -->
    <odometryTopic>odom</odometryTopic>

    <!-- Odometry frame, defaults to `odom` -->
    <odometryFrame>odom</odometryFrame>

    <!-- Robot frame to calculate odometry from, defaults to `base_footprint` -->
    <robotBaseFrame>base_footprint</robotBaseFrame>

    <!-- Odometry source, 0 for ENCODER, 1 for WORLD, defaults to WORLD -->
    <odometrySource>1</odometrySource>

    <!-- Set to true to publish transforms for the wheel links, defaults to false -->
    <publishWheelTF>true</publishWheelTF>

    <!-- Set to true to publish transforms for the odometry, defaults to true -->
    <publishOdom>true</publishOdom>

    <!-- Set to true to publish sensor_msgs/JointState on /joint_states for the wheel joints, defaults to false -->
    <publishWheelJointState>true</publishWheelJointState>

    <!-- Set to true to swap right and left wheels, defaults to true -->
    <legacyMode>false</legacyMode>
  </plugin>
</gazebo>
<gazebo reference="base_link">
  <material>${blue}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
  <gravity>true</gravity>
</gazebo>

<gazebo reference="spacer_1_1">
  <material>${gold}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="spacer_1_2">
  <material>${gold}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="spacer_1_3">
  <material>${gold}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="spacer_1_4">
  <material>${gold}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="ultasonic_1">
  <sensor type="ray" name="TeraRanger">
    <pose>0 0 0 0 0 0</pose>
    <visualize>true</visualize>
    <update_rate>50</update_rate>
    <ray>
        <scan>
          <horizontal>
              <samples>10</samples>
              <resolution>1</resolution> 
              <min_angle>-0.14835</min_angle>
              <max_angle>0.14835</max_angle>
          </horizontal>
          <vertical>
              <samples>10</samples>
              <resolution>1</resolution> 
              <min_angle>-0.14835</min_angle>
              <max_angle>0.14835</max_angle> 
          </vertical>
        </scan>
        <range>
          <min>0.01</min>
          <max>0.2</max>
          <resolution>0.02</resolution>
        </range>
    </ray>
    <plugin filename="libgazebo_ros_range.so" name="gazebo_ros_range">
        <gaussianNoise>0.005</gaussianNoise>
        <alwaysOn>true</alwaysOn>
        <updateRate>50</updateRate>
        <topicName>sensor/ir_front</topicName>
        <frameName>base_ir_front</frameName>
        <radiation>INFRARED</radiation>
        <fov>0.2967</fov>
    </plugin>
  </sensor>  
  <material>${blue_2}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="AA_1">
  <material>${silver}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="AA_2">
  <material>${silver}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="battery_case_1">
  <material>${black}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="motor_1">
  <material>${silver}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="motor_2">
  <material>${silver}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="left_wheel_1">
  <material>${black}</material>
  <mu1>1000</mu1>
  <mu2>1000</mu2>
  <selfCollide>true</selfCollide>
  <kp value="1000.0" />
  <kd value="1.0" />
</gazebo>

<gazebo reference="right_wheel_1">
  <material>${black}</material>
  <mu1>1000</mu1>
  <mu2>1000</mu2>
  <selfCollide>true</selfCollide>
  <kp value="1000.0" />
  <kd value="1.0" />
</gazebo>

<gazebo reference="top_link_1">
  <material>${blue}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="pantilt_1_1">
  <material>${black}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="servo_emax_1_1">
  <material>${silver}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="pantilt_2_1">
  <material>${black}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="servo_emax_2_1">
  <material>${silver}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="pantilt_3_1">
  <material>${black}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="servo_2_1">
  <material>${blue}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="servo_1_1">
  <material>${blue}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="camera_1">
  <sensor type="camera" name="camera1">
    <update_rate>30.0</update_rate>
    <camera name="head">
      <horizontal_fov>1.3962634</horizontal_fov>
      <image>
        <width>800</width>
        <height>800</height>
        <format>R8G8B8</format>
      </image>
      <clip>
        <near>0.02</near>
        <far>300</far>
      </clip>
      <noise>
        <type>gaussian</type>
        <!-- Noise is sampled independently per pixel on each frame.
              That pixel's noise value is added to each of its color
              channels, which at that point lie in the range [0,1]. -->
        <mean>0.0</mean>
        <stddev>0.007</stddev>
      </noise>
    </camera>
    <plugin name="camera_controller" filename="libgazebo_ros_camera.so">
      <alwaysOn>true</alwaysOn>
      <updateRate>0.0</updateRate>
      <cameraName>alphabot/camera1</cameraName>
      <imageTopicName>image_raw</imageTopicName>
      <cameraInfoTopicName>camera_info</cameraInfoTopicName>
      <frameName>camera_link</frameName>
      <hackBaseline>0.07</hackBaseline>
      <distortionK1>0.0</distortionK1>
      <distortionK2>0.0</distortionK2>
      <distortionK3>0.0</distortionK3>
      <distortionT1>0.0</distortionT1>
      <distortionT2>0.0</distortionT2>
    </plugin>
  </sensor>
  <material>${green}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="ball_1">
  <material>${silver}</material>
  <mu1>0.0001</mu1>
  <mu2>0.0001</mu2>
  <kp>0.1</kp>
  <kd>0.1</kd>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="housing_1">
  <material>${silver}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="ball_2">
  <material>${silver}</material>
  <mu1>0.0001</mu1>
  <mu2>0.0001</mu2>
  <kp>0.1</kp>
  <kd>0.1</kd>
  <selfCollide>true</selfCollide>
</gazebo>

<gazebo reference="housing_2">
  <material>${silver}</material>
  <mu1>0.2</mu1>
  <mu2>0.2</mu2>
  <selfCollide>true</selfCollide>
</gazebo>

</robot>