<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from urdf/apple_kraken.xacro        | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="apple_kraken">
  <!-- Used for fixing robot -->
  <!-- <link name="world"/>
  <gazebo reference="world">
    <static>true</static>
  </gazebo> -->
  <!-- ROBOT DEFINITION -->
  <!-- <joint name="${prefix}base_joint" type="fixed">
      <xacro:insert_block name="origin" />
      <parent link="${parent}"/>
      <child link="${prefix}base_link" />
    </joint> -->
  <!-- TODO(YV): Prefix all links and joints -->
  <link name="base_link">
    <inertial>
      <origin rpy="0.000000 -0.000000 -1.570796" xyz="1.003638 0.000000 0.000000"/>
      <!-- TODO: Update mass as volume from Meshlab will overestimate the mass -->
      <mass value="300"/>
      <inertia ixx="50.0" ixy="0.0" ixz="0.0" iyy="240.0" iyz="0.0" izz="250.0"/>
    </inertial>
    <visual>
      <origin rpy="0.000000 -0.000000 -1.570796" xyz="1.003638 0.000000 0.000000"/>
      <geometry>
        <mesh filename="file:///home/michal/ros2_ws/install/apple_kraken_description/share/apple_kraken_description/meshes/Chassis/Chassis.dae" scale="0.6 1 0.6"/>
      </geometry>
    </visual>
    <collision>
      <origin rpy="0.000000 0.000000 0.000000" xyz="1.011914 0.015452 0.839275"/>
      <geometry>
        <box size="2.965304 0.595628 0.153936"/>
      </geometry>
    </collision>
    <collision>
      <origin rpy="0.000000 0.000000 0.000000" xyz="0.968522 0.015452 0.993211"/>
      <geometry>
        <box size="1.253167 0.595628 0.153936"/>
      </geometry>
    </collision>
    <collision>
      <origin rpy="0.000000 0.000000 0.000000" xyz="0.508498 0.015452 0.555585"/>
      <geometry>
        <box size="1.958472 0.595628 0.413444"/>
      </geometry>
    </collision>
    <collision>
      <origin rpy="0.000000 0.000000 0.000000" xyz="1.944041 0.015452 0.555585"/>
      <geometry>
        <box size="1.101050 0.307136 0.413444"/>
      </geometry>
    </collision>
  </link>
  <link name="wheel_rear_right_link">
    <inertial>
      <origin rpy="0 0 0" xyz="0 0.0 0.0"/>
      <mass value="24.5"/>
      <inertia ixx="0.787" ixy="0.0" ixz="0.0" iyy="0.787" iyz="0.0" izz="1.309"/>
    </inertial>
    <visual>
      <origin rpy="0 1.571 0" xyz="0 0 0.132"/>
      <geometry>
        <mesh filename="file:///home/michal/ros2_ws/install/apple_kraken_description/share/apple_kraken_description/meshes/Wheels/WheelRight.dae" scale="0.6 0.6 0.6"/>
      </geometry>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0.066"/>
      <geometry>
        <cylinder length="0.132" radius="0.3"/>
      </geometry>
    </collision>
  </link>
  <link name="wheel_rear_left_link">
    <inertial>
      <origin rpy="0 0 0" xyz="0 0.0 0.132"/>
      <mass value="24.5"/>
      <inertia ixx="0.787" ixy="0.0" ixz="0.0" iyy="0.787" iyz="0.0" izz="1.309"/>
    </inertial>
    <visual>
      <origin rpy="0 -1.571 0 " xyz="0 0 0.0"/>
      <geometry>
        <mesh filename="file:///home/michal/ros2_ws/install/apple_kraken_description/share/apple_kraken_description/meshes/Wheels/WheelLeft.dae" scale="0.6 0.6 0.6"/>
      </geometry>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 -0.066"/>
      <geometry>
        <cylinder length="0.132" radius="0.3"/>
      </geometry>
    </collision>
  </link>
  <link name="wheel_front_right_link">
    <inertial>
      <origin rpy="0 0 0" xyz="0 0.0 -0.066"/>
      <mass value="24.5"/>
      <inertia ixx="0.787" ixy="0.0" ixz="0.0" iyy="0.787" iyz="0.0" izz="1.309"/>
    </inertial>
    <visual>
      <origin rpy="0 1.571 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="file:///home/michal/ros2_ws/install/apple_kraken_description/share/apple_kraken_description/meshes/Wheels/WheelRight.dae" scale="0.6 0.6 0.6"/>
      </geometry>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 -0.066"/>
      <geometry>
        <cylinder length="0.132" radius="0.3"/>
      </geometry>
    </collision>
  </link>
  <link name="wheel_front_left_link">
    <inertial>
      <origin rpy="0 0 0" xyz="0 0.0 0.066"/>
      <mass value="24.5"/>
      <inertia ixx="0.787" ixy="0.0" ixz="0.0" iyy="0.787" iyz="0.0" izz="1.309"/>
    </inertial>
    <visual>
      <origin rpy="0 -1.571 0" xyz="0 0 0.132"/>
      <geometry>
        <mesh filename="file:///home/michal/ros2_ws/install/apple_kraken_description/share/apple_kraken_description/meshes/Wheels/WheelLeft.dae" scale="0.6 0.6 0.6"/>
      </geometry>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0.066"/>
      <geometry>
        <cylinder length="0.132" radius="0.3"/>
      </geometry>
    </collision>
  </link>
  <link name="manipulator_link_0">
    <inertial>
      <origin rpy="0.1745 0 0" xyz="0.0 -0.6 2.0"/>
      <mass value="25.0"/>
      <inertia ixx="0.002" ixy="0.0" ixz="0.0" iyy="0.068" iyz="0.0" izz="0.067"/>
    </inertial>
    <!-- <visual>
        <origin rpy="0 0 -1.571" xyz="0.0 0.0 0.1"/>
        <geometry>
          <mesh filename="file://$(find apple_kraken_description)/meshes/Chassis/Frame.dae" scale="1 1 1"/>
        </geometry>
      </visual> -->
    <visual>
      <origin rpy="-0.174533 0 0" xyz="0.9 -0.65 2.4"/>
      <geometry>
        <box size="0.1 0.1 2.0"/>
      </geometry>
    </visual>
    <visual>
      <origin rpy="-0.174533 0 0" xyz="-0.9 -0.65 2.4"/>
      <geometry>
        <box size="0.1 0.1 2.0"/>
      </geometry>
    </visual>
    <collision>
      <origin rpy="-0.174533 0 0" xyz="0.9 -0.65 2.4"/>
      <geometry>
        <box size="0.1 0.1 2.0"/>
      </geometry>
    </collision>
    <collision>
      <origin rpy="-0.174533 0 0" xyz="-0.9 -0.65 2.4"/>
      <geometry>
        <box size="0.1 0.1 2.0"/>
      </geometry>
    </collision>
  </link>
  <link name="manipulator_link_1">
    <inertial>
      <origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
      <mass value="25.0"/>
      <inertia ixx="0.002" ixy="0.0" ixz="0.0" iyy="0.068" iyz="0.0" izz="0.067"/>
    </inertial>
    <visual>
      <origin rpy="0 0 -1.571" xyz="0.0 0.0 0"/>
      <geometry>
        <mesh filename="file:///home/michal/ros2_ws/install/apple_kraken_description/share/apple_kraken_description/meshes/VacuumNozzle/VacuumMechanismPart01.dae" scale="1 1 1"/>
      </geometry>
    </visual>
    <!-- <collision>
        <origin rpy="0 0 -1.571" xyz="0.0 0.0 0"/>
        <geometry>
          <mesh filename="file://$(find apple_kraken_description)/meshes/VacuumNozzle/VacuumMechanismPart01.dae" scale="1 1 1"/>
        </geometry>
      </collision> -->
  </link>
  <link name="manipulator_link_2">
    <inertial>
      <origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
      <mass value="10.0"/>
      <inertia ixx="0.05" ixy="0.0" ixz="0.0" iyy="0.05" iyz="0.0" izz="0.05"/>
    </inertial>
    <visual>
      <origin rpy="1.571 0 -1.571" xyz="0.0 0.0 0"/>
      <geometry>
        <mesh filename="file:///home/michal/ros2_ws/install/apple_kraken_description/share/apple_kraken_description/meshes/VacuumNozzle/VacuumMechanismPart02.dae" scale="1 1 1"/>
      </geometry>
    </visual>
    <!-- <collision>
        <origin rpy="1.571 0 -1.571" xyz="0.0 0.0 0"/>
        <geometry>
          <mesh filename="file://$(find apple_kraken_description)/meshes/VacuumNozzle/VacuumMechanismPart02.dae" scale="1 1 1"/>
        </geometry>
      </collision> -->
  </link>
  <!-- Nozzle -->
  <link name="manipulator_link_3">
    <inertial>
      <origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
      <mass value="5.0"/>
      <inertia ixx="0.01" ixy="0.0" ixz="0.0" iyy="0.01" iyz="0.0" izz="0.01"/>
    </inertial>
    <visual>
      <origin rpy="0 -1.571 0" xyz="0.0 0.0 0"/>
      <geometry>
        <mesh filename="file:///home/michal/ros2_ws/install/apple_kraken_description/share/apple_kraken_description/meshes/VacuumNozzle/VacuumNozzle.dae" scale="1 1 1"/>
      </geometry>
    </visual>
    <!-- <collision>
        <origin rpy="0 -1.571 0" xyz="0.0 0.0 0"/>
        <geometry>
          <mesh filename="file://$(find apple_kraken_description)/meshes/VacuumNozzle/VacuumNozzle.dae" scale="1 1 1"/>
        </geometry>
      </collision> -->
  </link>
  <!-- Nozzle02 -->
  <link name="manipulator_link_4">
    <inertial>
      <origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
      <mass value="5.0"/>
      <inertia ixx="0.01" ixy="0.0" ixz="0.0" iyy="0.01" iyz="0.0" izz="0.01"/>
    </inertial>
    <visual>
      <origin rpy="0 -1.571 0" xyz="0.0 0.0 0"/>
      <geometry>
        <mesh filename="file:///home/michal/ros2_ws/install/apple_kraken_description/share/apple_kraken_description/meshes/VacuumNozzle/VacuumNozzle02.dae" scale="1 1 1"/>
      </geometry>
    </visual>
    <!-- <collision>
        <origin rpy="0 -1.571 0" xyz="0.0 0.0 0"/>
        <geometry>
          <mesh filename="file://$(find apple_kraken_description)/meshes/VacuumNozzle/VacuumNozzle02.dae" scale="1 1 1"/>
        </geometry>
      </collision> -->
  </link>
  <!-- <link name="steering_rack">
      <inertial>
        <origin rpy="0 0 0" xyz="0.0 0.43 0.0"/>
        <mass value="10.0"/>
        <inertia ixx="0.067" ixy="0.0" ixz="0.0" iyy="0.002" iyz="0.0" izz="0.067"/>
      </inertial>

      <visual>
        <origin rpy="0 0 -1.571" xyz="0.0 0.43 0"/>
        <geometry>
          <mesh filename="file://$(find apple_kraken_description)/meshes/Steering/SteeringRack.dae" scale="1 1 1"/>
        </geometry>
      </visual>
    </link> -->
  <!-- TODO: Add update steering links with right values of interial. -->
  <link name="steering_front_right_link">
    <inertial>
      <origin rpy="0 0 -1.571" xyz="0 0 -0.04"/>
      <mass value="1"/>
      <inertia ixx="0.003514" ixy="0.0" ixz="0.0" iyy="0.001981" iyz="0.0" izz="0.001981"/>
    </inertial>
    <visual>
      <origin rpy="0 0 -1.571" xyz="0 0 -0.04"/>
      <geometry>
        <mesh filename="file:///home/michal/ros2_ws/install/apple_kraken_description/share/apple_kraken_description/meshes/Steering/SteeringArmRight.dae" scale="1 1 1"/>
      </geometry>
    </visual>
  </link>
  <link name="steering_front_left_link">
    <inertial>
      <origin rpy="0 0 -1.571" xyz="0 0 -0.04"/>
      <mass value="1"/>
      <inertia ixx="0.003514" ixy="0.0" ixz="0.0" iyy="0.001981" iyz="0.0" izz="0.001981"/>
    </inertial>
    <visual>
      <origin rpy="0 0 -1.571" xyz="0 0 -0.04"/>
      <geometry>
        <mesh filename="file:///home/michal/ros2_ws/install/apple_kraken_description/share/apple_kraken_description/meshes/Steering/SteeringArmLeft.dae" scale="1 1 1"/>
      </geometry>
    </visual>
  </link>
  <joint name="wheel_rear_right_joint" type="continuous">
    <origin rpy="-1.570796 -0.000000 0.000000" xyz="0.000000 0.35 0.3"/>
    <parent link="base_link"/>
    <child link="wheel_rear_right_link"/>
    <axis xyz="0.0 0.0 1.0"/>
    <limit effort="1000000.0" velocity="1000.0"/>
  </joint>
  <joint name="wheel_rear_left_joint" type="continuous">
    <origin rpy="-1.570796 -0.000000 0.000000" xyz="0.000000 -0.35 0.3"/>
    <parent link="base_link"/>
    <child link="wheel_rear_left_link"/>
    <axis xyz="0.0 0.0 1.0"/>
    <limit effort="1000000.0" velocity="1000.0"/>
  </joint>
  <joint name="wheel_front_right_joint" type="continuous">
    <origin rpy="-1.571 0 0" xyz="0 -0.12499999999999997 0"/>
    <parent link="steering_front_right_link"/>
    <child link="wheel_front_right_link"/>
    <axis xyz="0.0 0.0 1.0"/>
    <limit effort="1000000.0" velocity="1000.0"/>
  </joint>
  <joint name="wheel_front_left_joint" type="continuous">
    <origin rpy="-1.571 0 0" xyz="0 0.12499999999999997 0"/>
    <parent link="steering_front_left_link"/>
    <child link="wheel_front_left_link"/>
    <axis xyz="0.0 0.0 1.0"/>
    <limit effort="1000000.0" velocity="1000.0"/>
  </joint>
  <!-- <joint name="steering_rack_joint_R" type="revolute">
      <origin rpy="0 0 0" xyz="-0.1637 0 0.035"/>
      <parent link="steering_front_right_link"/>
      <child link="steering_rack"/>
      <axis xyz="0.0 0.0 1.0"/>
      <limit effort="1000000.0" lower="-0.5235" upper="0.5235" velocity="100"/>
    </joint>

    <joint name="steering_rack_joint_L" type="revolute">
      <origin rpy="0 0 0" xyz="-0.1637 0 0.035"/>
      <parent link="steering_front_left_link"/>
      <child link="steering_rack"/>
      <axis xyz="0.0 0.0 1.0"/>
      <limit effort="1000000.0" lower="-0.5235" upper="0.5235" velocity="100"/>
    </joint> -->
  <joint name="steering_front_right_joint" type="revolute">
    <origin rpy="0 0 0" xyz="2.0 -0.225 0.3"/>
    <parent link="base_link"/>
    <child link="steering_front_right_link"/>
    <axis xyz="0.0 0.0 1.0"/>
    <dynamics damping="2.0" friction="1.0"/>
    <limit effort="1000000.0" lower="-0.5235" upper="0.5235" velocity="100"/>
  </joint>
  <joint name="steering_front_left_joint" type="revolute">
    <origin rpy="0 0 0" xyz="2.0 0.225 0.3"/>
    <parent link="base_link"/>
    <child link="steering_front_left_link"/>
    <axis xyz="0.0 0.0 1.0"/>
    <dynamics damping="2.0" friction="1.0"/>
    <limit effort="1000000.0" lower="-0.5235" upper="0.5235" velocity="100"/>
  </joint>
  <joint name="manipulator_joint_0" type="fixed">
    <origin rpy="0 0 0" xyz="0.603927 0.2 -1.0"/>
    <parent link="base_link"/>
    <child link="manipulator_link_0"/>
  </joint>
  <!-- Joint that moves manipulator along Z-Axis -->
  <joint name="manipulator_joint_1" type="prismatic">
    <origin rpy="-0.1745 0 0" xyz="0.53087 -0.356346 1.7"/>
    <parent link="base_link"/>
    <child link="manipulator_link_1"/>
    <axis xyz="0.0 0.0 1.0"/>
    <dynamics damping="2.0" friction="1.0"/>
    <limit effort="1000.0" lower="-1.25" upper="0.55" velocity="1.0"/>
  </joint>
  <!-- Joint that moves manipulator along X-Axis -->
  <joint name="manipulator_joint_2" type="prismatic">
    <origin rpy="0 1.571 0" xyz="0 0 0"/>
    <parent link="manipulator_link_1"/>
    <child link="manipulator_link_2"/>
    <axis xyz="0.0 0.0 1.0"/>
    <dynamics damping="2.0" friction="1.0"/>
    <limit effort="1000.0" lower="-0.7" upper="0.7" velocity="1.0"/>
  </joint>
  <!-- Nozzle -->
  <joint name="manipulator_joint_3" type="prismatic">
    <origin rpy="1.571 0 0" xyz="-0.067 -0.35 -0.004"/>
    <parent link="manipulator_link_2"/>
    <child link="manipulator_link_3"/>
    <axis xyz="0.0 0.0 1.0"/>
    <dynamics damping="2.0" friction="1.0"/>
    <limit effort="1000.0" lower="0" upper="0.28" velocity="1.0"/>
  </joint>
  <!-- Nozzle02 -->
  <joint name="manipulator_joint_4" type="prismatic">
    <origin rpy="0 0 0" xyz="0 0 0"/>
    <parent link="manipulator_link_3"/>
    <child link="manipulator_link_4"/>
    <axis xyz="0.0 0.0 1.0"/>
    <dynamics damping="2.0" friction="1.0"/>
    <limit effort="1000.0" lower="0" upper="0.28" velocity="1.0"/>
  </joint>
  <gazebo reference="base_link">
    <mu1>0.2</mu1>
    <mu2>0.2</mu2>
    <selfCollide>false</selfCollide>
    <gravity>true</gravity>
  </gazebo>
  <gazebo reference="wheel_rear_right_link">
    <mu1>3.0</mu1>
    <mu2>3.0</mu2>
    <kp>10000000.0</kp>
    <kd>1.0</kd>
    <selfCollide>false</selfCollide>
  </gazebo>
  <gazebo reference="wheel_rear_left_link">
    <mu1>3.0</mu1>
    <mu2>3.0</mu2>
    <kp>10000000.0</kp>
    <kd>1.0</kd>
    <selfCollide>false</selfCollide>
  </gazebo>
  <gazebo reference="wheel_front_right_link">
    <mu1>3.0</mu1>
    <mu2>3.0</mu2>
    <kp>10000000.0</kp>
    <kd>1.0</kd>
    <selfCollide>false</selfCollide>
  </gazebo>
  <gazebo reference="wheel_front_left_link">
    <mu1>1.1</mu1>
    <mu2>1.1</mu2>
    <kp>10000000.0</kp>
    <kd>1.0</kd>
    <selfCollide>false</selfCollide>
  </gazebo>
  <gazebo reference="steering_front_right_link">
    <mu1>0.2</mu1>
    <mu2>0.2</mu2>
    <selfCollide>false</selfCollide>
  </gazebo>
  <gazebo reference="steering_front_left_link">
    <mu1>0.2</mu1>
    <mu2>0.2</mu2>
    <selfCollide>false</selfCollide>
  </gazebo>
  <gazebo reference="manipulator_link_1">
    <mu1>3.0</mu1>
    <mu2>3.0</mu2>
    <kp>10000000.0</kp>
    <kd>1.0</kd>
    <selfCollide>false</selfCollide>
  </gazebo>
  <gazebo reference="manipulator_link_2">
    <mu1>3.0</mu1>
    <mu2>3.0</mu2>
    <kp>10000000.0</kp>
    <kd>1.0</kd>
    <selfCollide>false</selfCollide>
  </gazebo>
  <gazebo reference="manipulator_link_3">
    <mu1>3.0</mu1>
    <mu2>3.0</mu2>
    <kp>10000000.0</kp>
    <kd>1.0</kd>
    <selfCollide>false</selfCollide>
  </gazebo>
  <gazebo>
    <plugin filename="libgazebo_ros_ackermann_drive.so" name="ackermann_drive">
      <update_rate>20.0</update_rate>
      <!-- wheels -->
      <front_left_joint>wheel_front_left_joint</front_left_joint>
      <front_right_joint>wheel_front_right_joint</front_right_joint>
      <rear_left_joint>wheel_rear_left_joint</rear_left_joint>
      <rear_right_joint>wheel_rear_right_joint</rear_right_joint>
      <left_steering_joint>steering_front_left_joint</left_steering_joint>
      <right_steering_joint>steering_front_right_joint</right_steering_joint>
      <!-- <steering_wheel_joint>steering_wheel_joint</steering_wheel_joint> -->
      <!-- Max absolute steer angle for tyre in radians-->
      <!-- Any cmd_vel angular z greater than this would be capped -->
      <max_steer>0.5235</max_steer>
      <!-- Max absolute steering angle of steering wheel -->
      <max_steering_angle>7.85</max_steering_angle>
      <!-- Max absolute linear speed in m/s -->
      <max_speed>50</max_speed>
      <!-- PID tuning -->
      <left_steering_pid_gain>3000 0 100</left_steering_pid_gain>
      <left_steering_i_range>0 0</left_steering_i_range>
      <right_steering_pid_gain>3000 0 100</right_steering_pid_gain>
      <right_steering_i_range>0 0</right_steering_i_range>
      <linear_velocity_pid_gain>3000 0 100</linear_velocity_pid_gain>
      <linear_velocity_i_range>0 0</linear_velocity_i_range>
      <!-- output -->
      <publish_odom>true</publish_odom>
      <publish_odom_tf>true</publish_odom_tf>
      <publish_wheel_tf>true</publish_wheel_tf>
      <publish_distance>true</publish_distance>
      <odometry_frame>odom</odometry_frame>
      <robot_base_frame>base_link</robot_base_frame>
    </plugin>
  </gazebo>
  <!-- ros_control plugin -->
  <gazebo>
    <plugin filename="libgazebo_ros2_control.so" name="gazebo_ros2_control">
      <robot_param>robot_description</robot_param>
      <robot_param_node>robot_state_publisher</robot_param_node>
      <parameters>/home/michal/ros2_ws/install/apple_kraken_bringup/share/apple_kraken_bringup/config/controllers.yaml</parameters>
    </plugin>
  </gazebo>
  <ros2_control name="AppleKrakenPositionOnlyHardware" type="system">
    <hardware>
      <!-- TODO(YV): Update once SystemInterface is implemented for real robot -->
      <plugin>apple_kraken_hardware_interface/AppleKrakenPositionOnlyHardware</plugin>
    </hardware>
    <joint name="manipulator_joint_1">
      <command_interface name="position">
        <param name="min">-1.25</param>
        <param name="max">0.0</param>
      </command_interface>
      <command_interface name="velocity">
        <param name="min">-1.0</param>
        <param name="max">1.0</param>
      </command_interface>
      <state_interface name="position">
        <param name="initial_value">0.0</param>
      </state_interface>
      <state_interface name="velocity">
        <param name="initial_value">0.0</param>
      </state_interface>
    </joint>
    <joint name="manipulator_joint_2">
      <command_interface name="position">
        <param name="min">-0.32</param>
        <param name="max">0.32</param>
      </command_interface>
      <command_interface name="velocity">
        <param name="min">-1.0</param>
        <param name="max">1.0</param>
      </command_interface>
      <state_interface name="position">
        <param name="initial_value">0.0</param>
      </state_interface>
      <state_interface name="velocity">
        <param name="initial_value">0.0</param>
      </state_interface>
    </joint>
    <joint name="manipulator_joint_3">
      <command_interface name="position">
        <param name="min">0.0</param>
        <param name="max">0.28</param>
      </command_interface>
      <command_interface name="velocity">
        <param name="min">-1.0</param>
        <param name="max">1.0</param>
      </command_interface>
      <state_interface name="position">
        <param name="initial_value">0.0</param>
      </state_interface>
      <state_interface name="velocity">
        <param name="initial_value">0.0</param>
      </state_interface>
    </joint>
    <joint name="manipulator_joint_4">
      <command_interface name="position">
        <param name="min">0.0</param>
        <param name="max">0.28</param>
      </command_interface>
      <command_interface name="velocity">
        <param name="min">-1.0</param>
        <param name="max">1.0</param>
      </command_interface>
      <state_interface name="position">
        <param name="initial_value">0.0</param>
      </state_interface>
      <state_interface name="velocity">
        <param name="initial_value">0.0</param>
      </state_interface>
    </joint>
    <!-- State interfaces only -->
    <joint name="wheel_rear_right_joint">
      <state_interface name="position"/>
    </joint>
    <joint name="wheel_rear_left_joint">
      <state_interface name="position"/>
    </joint>
    <joint name="wheel_front_right_joint">
      <state_interface name="position"/>
    </joint>
    <joint name="wheel_front_left_joint">
      <state_interface name="position"/>
    </joint>
    <joint name="steering_rack_joint_R">
      <state_interface name="position"/>
    </joint>
    <joint name="steering_rack_joint_L">
      <state_interface name="position"/>
    </joint>
    <joint name="steering_front_right_joint">
      <state_interface name="position"/>
    </joint>
    <joint name="steering_front_left_joint">
      <state_interface name="position"/>
    </joint>
  </ros2_control>
</robot>
