<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from src/pioneer_description/urdf/pioneer3dx.urdf.xacro | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="pioneer3dx" 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">
  <!--<include filename="$(find amr_robots_description)/urdf/materials.xacro"/>-->
  <!-- Chassis -->
  <link name="base_link">
    <inertial>
      <mass value="3.5"/>
      <!--<origin xyz="-0.025 0 -0.223"/>-->
      <origin xyz="0 0 0"/>
      <inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="-0.045 0 0.148"/>
      <geometry name="pioneer_geom">
        <mesh filename="/home/jdelicat/lab_repos/ros2aria/install/pioneer_description/share/pioneer_description/meshes/chassis.stl"/>
      </geometry>
      <material name="ChassisRed">
        <color rgba="0.851 0.0 0.0 1.0"/>
      </material>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="0.01 0.01 0.01"/>
      </geometry>
    </collision>
  </link>
  <link name="top_plate">
    <inertial>
      <mass value="0.01"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry name="pioneer_geom">
        <mesh filename="/home/jdelicat/lab_repos/ros2aria/install/pioneer_description/share/pioneer_description/meshes/top.stl"/>
      </geometry>
      <material name="TopBlack">
        <color rgba="0.038 0.038 0.038 1.0"/>
      </material>
    </visual>
  </link>
  <gazebo reference="top_plate">
    <!-- material value="Gazebo/Black"/ -->
    <material>Gazebo/Black</material>
  </gazebo>
  <joint name="base_top_joint" type="fixed">
    <origin rpy="0 0 0" xyz="-0.045 0 0.234"/>
    <axis xzy="0 0 1"/>
    <parent link="base_link"/>
    <child link="top_plate"/>
  </joint>
  <link name="front_sonar">
    <inertial>
      <mass value="0.0001"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry name="pioneer_geom">
        <mesh filename="/home/jdelicat/lab_repos/ros2aria/install/pioneer_description/share/pioneer_description/meshes/front_sonar.stl"/>
      </geometry>
      <material name="SonarYellow">
        <color rgba="0.715 0.583 0.210 1.0"/>
      </material>
    </visual>
  </link>
  <gazebo reference="front_sonar">
    <material value="Gazebo/Yellow"/>
  </gazebo>
  <joint name="base_front_joint" type="fixed">
    <origin rpy="0 0 0" xyz="-0.198 0 0.208"/>
    <parent link="base_link"/>
    <child link="front_sonar"/>
  </joint>
  <joint name="base_back_joint" type="fixed">
    <origin rpy="0 0 0" xyz="0.109 0 0.209"/>
    <parent link="base_link"/>
    <child link="back_sonar"/>
  </joint>
  <link name="back_sonar">
    <inertial>
      <mass value="0"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry name="pioneer_geom">
        <mesh filename="/home/jdelicat/lab_repos/ros2aria/install/pioneer_description/share/pioneer_description/meshes/back_sonar.stl"/>
      </geometry>
      <material name="SonarYellow">
        <color rgba="0.715 0.583 0.210 1.0"/>
      </material>
    </visual>
  </link>
  <!-- Caster -->
  <joint name="base_caster_swivel_joint" type="continuous">
    <origin rpy="0 0 0" xyz="-0.185 0 0.055"/>
    <anchor xyz="0 0 0"/>
    <limit effort="100" k_velocity="0" velocity="100"/>
    <joint_properties damping="0.0" friction="0.0"/>
    <parent link="base_link"/>
    <child link="caster_swivel"/>
  </joint>
  <link name="caster_swivel">
    <inertial>
      <mass value="0.1"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry name="pioneer_geom">
        <mesh filename="/home/jdelicat/lab_repos/ros2aria/install/pioneer_description/share/pioneer_description/meshes/caster_swivel.stl"/>
      </geometry>
      <material name="caster_swivel">
        <color rgba="0.5 0.5 0.5 1"/>
      </material>
    </visual>
  </link>
  <gazebo reference="caster_swivel">
    <material value="Gazebo/Grey"/>
  </gazebo>
  <!-- Center Wheel + Hubcap -->
  <link name="caster_hubcap">
    <inertial>
      <mass value="0.01"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="0.012411765597" ixy="-0.000711733678" ixz="0.00050272983" iyy="0.015218160428" iyz="-0.000004273467" izz="0.011763977943"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry name="pioneer_geom">
        <mesh filename="/home/jdelicat/lab_repos/ros2aria/install/pioneer_description/share/pioneer_description/meshes/caster_hubcap.stl"/>
      </geometry>
      <material name="caster_swivel">
        <color rgba="0.5 0.5 0.5 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="0.05 0.05 0.05"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="caster_hubcap">
    <material value="Gazebo/Grey"/>
  </gazebo>
  <joint name="caster_swivel_hubcap_joint" type="continuous">
    <origin rpy="0 0 0" xyz="-0.026 0 -0.016"/>
    <axis xyz="0 1 0"/>
    <anchor xyz="0 0 0"/>
    <limit effort="100" k_velocity="0" velocity="100"/>
    <joint_properties damping="0.0" friction="0.0"/>
    <parent link="caster_swivel"/>
    <child link="caster_wheel"/>
  </joint>
  <link name="caster_wheel">
    <inertial>
      <mass value="0.1"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="0.012411765597" ixy="-0.000711733678" ixz="0.00050272983" iyy="0.015218160428" iyz="-0.000004273467" izz="0.011763977943"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry name="pioneer_geom">
        <mesh filename="/home/jdelicat/lab_repos/ros2aria/install/pioneer_description/share/pioneer_description/meshes/caster_wheel.stl"/>
      </geometry>
      <material name="WheelBlack">
        <color rgba="0.117 0.117 0.117 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="-1.57079635 0 0" xyz="0 0 0"/>
      <geometry>
        <!--<mesh filename="$(find pioneer_description)/meshes/caster_wheel.stl"/>-->
        <cylinder length="0.01" radius="0.0375"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="left_hub">
    <material value="Gazebo/Yellow"/>
  </gazebo>
  <joint name="caster_wheel_joint" type="fixed">
    <origin rpy="0 0 0" xyz="-0.0035 0 -0.001"/>
    <parent link="caster_wheel"/>
    <child link="caster_hubcap"/>
  </joint>
  <link name="left_hub">
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="/home/jdelicat/lab_repos/ros2aria/install/pioneer_description/share/pioneer_description/meshes/left_hubcap.stl"/>
      </geometry>
      <material name="HubcapYellow">
        <color rgba="1.0 0.811 0.151 1.0"/>
      </material>
    </visual>
    <collision>
      <origin rpy="-1.57079635 0 0" xyz="0 0 0"/>
      <geometry>
        <!--<mesh filename="$(find pioneer_description)/meshes/caster_wheel.stl"/>-->
        <cylinder length="0.01" radius="0.09"/>
      </geometry>
    </collision>
  </link>
  <joint name="left_hub_joint" type="fixed">
    <origin rpy="0 0 0" xyz="0 0.15 0.08"/>
    <parent link="base_link"/>
    <child link="left_hub"/>
    <axis xyz="0 1 0"/>
  </joint>
  <link name="left_wheel">
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="/home/jdelicat/lab_repos/ros2aria/install/pioneer_description/share/pioneer_description/meshes/left_wheel.stl"/>
      </geometry>
      <material name="WheelBlack">
        <color rgba="0.117 0.117 0.117 1"/>
      </material>
    </visual>
  </link>
  <joint name="left_wheel_joint" type="continuous">
    <!-- type="continuous" -->
    <origin rpy="0 0 0" xyz="0 0 0"/>
    <parent link="left_hub"/>
    <child link="left_wheel"/>
  </joint>
  <gazebo reference="left_wheel_joint">
    <material value="Gazebo/Black"/>
  </gazebo>
  <link name="right_hub">
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="/home/jdelicat/lab_repos/ros2aria/install/pioneer_description/share/pioneer_description/meshes/right_hubcap.stl"/>
      </geometry>
      <material name="HubcapYellow">
        <color rgba="1.0 0.811 0.151 1.0"/>
      </material>
    </visual>
    <collision>
      <origin rpy="-1.57079635 0 0" xyz="0 0 0"/>
      <geometry>
        <!--<mesh filename="$(find pioneer_description)/meshes/caster_wheel.stl"/>-->
        <cylinder length="0.01" radius="0.09"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="right_hub">
    <material value="Gazebo/Yellow"/>
  </gazebo>
  <joint name="right_hub_joint" type="fixed">
    <origin rpy="0 0 0" xyz="0 -0.15 0.08"/>
    <parent link="base_link"/>
    <child link="right_hub"/>
    <axis xyz="0 1 0"/>
  </joint>
  <link name="right_wheel">
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="/home/jdelicat/lab_repos/ros2aria/install/pioneer_description/share/pioneer_description/meshes/right_wheel.stl"/>
      </geometry>
      <material name="WheelBlack">
        <color rgba="0.117 0.117 0.117 1"/>
      </material>
    </visual>
  </link>
  <joint name="right_wheel_joint" type="continuous">
    <!-- type="continuous" -->
    <origin rpy="0 0 0" xyz="0 0 0"/>
    <parent link="right_hub"/>
    <child link="right_wheel"/>
  </joint>
  <gazebo reference="right_wheel_joint">
    <material value="Gazebo/Black"/>
  </gazebo>
  <link name="laser">
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="0.1 0.1 0.1"/>
      </geometry>
    </collision>
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://amr_robots_description/meshes/p3dx_meshes/hokuyo_convex.stl"/>
      </geometry>
      <material name="Hokuyo">
        <color rgba="0 0 0 1"/>
      </material>
    </visual>
    <inertial>
      <mass value="1e-5"/>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <inertia ixx="1e-6" ixy="0" ixz="0" iyy="1e-6" iyz="0" izz="1e-6"/>
    </inertial>
  </link>
  <joint name="hokuyo_joint" type="fixed">
    <axis xyz="0 0 0"/>
    <origin rpy="0 0 0" xyz="0.040 0 0.0625"/>
    <parent link="front_sonar"/>
    <child link="laser"/>
  </joint>
  <link name="camera_frame">
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <box size="0.095 0.03 0.03"/>
      </geometry>
    </collision>
  </link>
  <joint name="camera_joint" type="fixed">
    <axis xyz="0 0 0"/>
    <origin rpy="0 0 0" xyz="0.040 0 0.1125"/>
    <parent link="front_sonar"/>
    <child link="camera_frame"/>
  </joint>
  <create>
    <back_sonar parent="base_link"/>
    <top_plate parent="base_link"/>
  </create>
  <gazebo>
    <plugin filename="libgazebo_ros_diff_drive.so" name="differential_drive_controller">
      <alwaysOn>true</alwaysOn>
      <updateRate>100</updateRate>
      <leftJoint>left_wheel_joint</leftJoint>
      <rightJoint>right_wheel_joint</rightJoint>
      <wheelSeparation>0.158</wheelSeparation>
      <wheelDiameter>0.12</wheelDiameter>
      <torque>5</torque>
      <!-- interface:position name="position_iface_0"/ -->
      <commandTopic>cmd_vel</commandTopic>
      <robotBaseFrame>base_link</robotBaseFrame>
      <odometryTopic>odom</odometryTopic>
      <odometryFrame>odom</odometryFrame>
    </plugin>
    <!-- TODO include P3D (ground truth) plugin -->
    <!-- XXX old urdf included a gazebo_ros_controller_manager plugin with a 1 second update rate -->
  </gazebo>
</robot>
