<?xml version="1.0"?>
<robot name="ackermann_front_steer_rear_drive">
  <material name="body_blue">
    <color rgba="0.10 0.26 0.82 1.0"/>
  </material>
  <material name="body_white">
    <color rgba="0.86 0.88 0.84 1.0"/>
  </material>
  <material name="tire_black">
    <color rgba="0.02 0.02 0.02 1.0"/>
  </material>
  <material name="hub_gray">
    <color rgba="0.55 0.58 0.60 1.0"/>
  </material>
  <material name="sensor_green">
    <color rgba="0.10 0.80 0.42 1.0"/>
  </material>

  <link name="base_link">
    <inertial>
      <origin xyz="0.40 0 0.16" rpy="0 0 0"/>
      <mass value="12.0"/>
      <inertia ixx="0.18" ixy="0.0" ixz="0.0" iyy="0.75" iyz="0.0" izz="0.82"/>
    </inertial>
    <visual name="chassis">
      <origin xyz="0.40 0 0.17" rpy="0 0 0"/>
      <geometry>
        <box size="1.05 0.46 0.18"/>
      </geometry>
      <material name="body_blue"/>
    </visual>
    <visual name="upper_body">
      <origin xyz="0.32 0 0.34" rpy="0 0 0"/>
      <geometry>
        <box size="0.58 0.38 0.22"/>
      </geometry>
      <material name="body_white"/>
    </visual>
    <visual name="front_bumper">
      <origin xyz="0.96 0 0.15" rpy="0 0 0"/>
      <geometry>
        <box size="0.06 0.52 0.10"/>
      </geometry>
      <material name="hub_gray"/>
    </visual>
    <visual name="rear_drive_axle">
      <origin xyz="0.00 0 0.10" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.018" length="0.64"/>
      </geometry>
      <material name="hub_gray"/>
    </visual>
    <collision name="body_collision">
      <origin xyz="0 0 0.17" rpy="0 0 0"/>
      <geometry>
        <box size="1.05 0.46 0.18"/>
      </geometry>
    </collision>
  </link>

  <link name="front_left_steer_link">
    <inertial>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <mass value="0.45"/>
      <inertia ixx="0.002" ixy="0" ixz="0" iyy="0.002" iyz="0" izz="0.002"/>
    </inertial>
    <visual>
      <origin xyz="0 0 0.02" rpy="0 0 0"/>
      <geometry>
        <box size="0.08 0.05 0.12"/>
      </geometry>
      <material name="hub_gray"/>
    </visual>
    <collision>
      <origin xyz="0 0 0.02" rpy="0 0 0"/>
      <geometry>
        <box size="0.08 0.05 0.12"/>
      </geometry>
    </collision>
  </link>

  <link name="front_right_steer_link">
    <inertial>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <mass value="0.45"/>
      <inertia ixx="0.002" ixy="0" ixz="0" iyy="0.002" iyz="0" izz="0.002"/>
    </inertial>
    <visual>
      <origin xyz="0 0 0.02" rpy="0 0 0"/>
      <geometry>
        <box size="0.08 0.05 0.12"/>
      </geometry>
      <material name="hub_gray"/>
    </visual>
    <collision>
      <origin xyz="0 0 0.02" rpy="0 0 0"/>
      <geometry>
        <box size="0.08 0.05 0.12"/>
      </geometry>
    </collision>
  </link>

  <joint name="front_left_steer_joint" type="revolute">
    <origin xyz="0.80 0.26 0.10" rpy="0 0 0"/>
    <parent link="base_link"/>
    <child link="front_left_steer_link"/>
    <axis xyz="0 0 1"/>
    <limit lower="-0.56" upper="0.56" effort="35.0" velocity="3.2"/>
    <dynamics damping="0.35" friction="0.02"/>
  </joint>

  <joint name="front_right_steer_joint" type="revolute">
    <origin xyz="0.80 -0.26 0.10" rpy="0 0 0"/>
    <parent link="base_link"/>
    <child link="front_right_steer_link"/>
    <axis xyz="0 0 1"/>
    <limit lower="-0.56" upper="0.56" effort="35.0" velocity="3.2"/>
    <dynamics damping="0.35" friction="0.02"/>
  </joint>

  <link name="front_left_wheel_link">
    <inertial>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <mass value="0.9"/>
      <inertia ixx="0.004" ixy="0" ixz="0" iyy="0.007" iyz="0" izz="0.004"/>
    </inertial>
    <visual name="tire">
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.10" length="0.07"/>
      </geometry>
      <material name="tire_black"/>
    </visual>
    <visual name="hub">
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.055" length="0.078"/>
      </geometry>
      <material name="hub_gray"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.10" length="0.07"/>
      </geometry>
    </collision>
  </link>

  <link name="front_right_wheel_link">
    <inertial>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <mass value="0.9"/>
      <inertia ixx="0.004" ixy="0" ixz="0" iyy="0.007" iyz="0" izz="0.004"/>
    </inertial>
    <visual name="tire">
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.10" length="0.07"/>
      </geometry>
      <material name="tire_black"/>
    </visual>
    <visual name="hub">
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.055" length="0.078"/>
      </geometry>
      <material name="hub_gray"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.10" length="0.07"/>
      </geometry>
    </collision>
  </link>

  <joint name="front_left_wheel_joint" type="continuous">
    <origin xyz="0 0 0" rpy="0 0 0"/>
    <parent link="front_left_steer_link"/>
    <child link="front_left_wheel_link"/>
    <axis xyz="0 1 0"/>
    <limit effort="18.0" velocity="30.0"/>
    <dynamics damping="0.05" friction="0.02"/>
  </joint>

  <joint name="front_right_wheel_joint" type="continuous">
    <origin xyz="0 0 0" rpy="0 0 0"/>
    <parent link="front_right_steer_link"/>
    <child link="front_right_wheel_link"/>
    <axis xyz="0 1 0"/>
    <limit effort="18.0" velocity="30.0"/>
    <dynamics damping="0.05" friction="0.02"/>
  </joint>

  <link name="rear_left_wheel_link">
    <inertial>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <mass value="1.1"/>
      <inertia ixx="0.005" ixy="0" ixz="0" iyy="0.009" iyz="0" izz="0.005"/>
    </inertial>
    <visual name="tire">
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.10" length="0.07"/>
      </geometry>
      <material name="tire_black"/>
    </visual>
    <visual name="hub">
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.055" length="0.078"/>
      </geometry>
      <material name="hub_gray"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.10" length="0.07"/>
      </geometry>
    </collision>
  </link>

  <link name="rear_right_wheel_link">
    <inertial>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <mass value="1.1"/>
      <inertia ixx="0.005" ixy="0" ixz="0" iyy="0.009" iyz="0" izz="0.005"/>
    </inertial>
    <visual name="tire">
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.10" length="0.07"/>
      </geometry>
      <material name="tire_black"/>
    </visual>
    <visual name="hub">
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.055" length="0.078"/>
      </geometry>
      <material name="hub_gray"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="1.57079632679 0 0"/>
      <geometry>
        <cylinder radius="0.10" length="0.07"/>
      </geometry>
    </collision>
  </link>

  <joint name="rear_left_wheel_joint" type="continuous">
    <origin xyz="0.00 0.26 0.10" rpy="0 0 0"/>
    <parent link="base_link"/>
    <child link="rear_left_wheel_link"/>
    <axis xyz="0 1 0"/>
    <limit effort="35.0" velocity="30.0"/>
    <dynamics damping="0.04" friction="0.02"/>
  </joint>

  <joint name="rear_right_wheel_joint" type="continuous">
    <origin xyz="0.00 -0.26 0.10" rpy="0 0 0"/>
    <parent link="base_link"/>
    <child link="rear_right_wheel_link"/>
    <axis xyz="0 1 0"/>
    <limit effort="35.0" velocity="30.0"/>
    <dynamics damping="0.04" friction="0.02"/>
  </joint>

  <link name="front_camera_link">
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
        <box size="0.055 0.10 0.045"/>
      </geometry>
      <material name="sensor_green"/>
    </visual>
  </link>

  <joint name="front_camera_joint" type="fixed">
    <origin xyz="0.82 0 0.32" rpy="0 0 0"/>
    <parent link="base_link"/>
    <child link="front_camera_link"/>
  </joint>

  <link name="down_camera_link">
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
        <box size="0.060 0.080 0.040"/>
      </geometry>
      <material name="sensor_green"/>
    </visual>
  </link>

  <joint name="down_camera_joint" type="fixed">
    <origin xyz="0.40 0 0.30" rpy="0 0 0"/>
    <parent link="base_link"/>
    <child link="down_camera_link"/>
  </joint>

  <link name="lidar_3d_link">
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
        <cylinder radius="0.055" length="0.055"/>
      </geometry>
      <material name="sensor_green"/>
    </visual>
  </link>

  <joint name="lidar_3d_joint" type="fixed">
    <origin xyz="0.55 0 0.46" rpy="0 0 0"/>
    <parent link="base_link"/>
    <child link="lidar_3d_link"/>
  </joint>

  <link name="lidar_2d_link">
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
        <cylinder radius="0.040" length="0.040"/>
      </geometry>
      <material name="sensor_green"/>
    </visual>
  </link>

  <joint name="lidar_2d_joint" type="fixed">
    <origin xyz="0.70 0 0.24" rpy="0 0 0"/>
    <parent link="base_link"/>
    <child link="lidar_2d_link"/>
  </joint>

  <link name="imu_link">
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
        <box size="0.055 0.055 0.030"/>
      </geometry>
      <material name="sensor_green"/>
    </visual>
  </link>

  <joint name="imu_joint" type="fixed">
    <origin xyz="0.40 0 0.26" rpy="0 0 0"/>
    <parent link="base_link"/>
    <child link="imu_link"/>
  </joint>
</robot>
