<?xml version='1.0' encoding='utf-8'?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="fr3">

  <xacro:include filename="$(find franka_description)/robots/common/franka_robot.xacro"/>

  <!--
    DEPRECATION NOTICE
    argument arm_id is no longer supported and will be removed in the future.
    This argument is ignored.
  -->
  <xacro:arg name="arm_id" default="fr3" />

  <!-- Don't print a prefix for joints, visuals, and links? -->
  <xacro:arg name="no_prefix" default="false"/>

  <!-- Should an end-effector be mounted at the flange?" -->
  <xacro:arg name="hand" default="true" />

  <!-- Which end-effector would be mounted at the flange?" -->
  <xacro:arg name="ee_id" default="franka_hand" />

  <!-- Should self-collision be enabled? -->
  <xacro:arg name="with_sc" default="false" />

  <!-- Is the robot being controlled with ros2_control?" -->
  <xacro:arg name="ros2_control" default="false" />

  <!-- IP address or hostname of the robot" -->
  <xacro:arg name="robot_ip" default="" />

  <!-- Should a fake hardware be used? -->
  <xacro:arg name="use_fake_hardware" default="false" />

  <!-- Should fake sensors be used? -->
  <xacro:arg name="fake_sensor_commands" default="false" />

  <!-- Should the robot be spawned in Gazebo?" -->
  <xacro:arg name="gazebo" default="false" />

  <!-- Should the robot be spawned in Gazebo with effort interfaces?" -->
  <xacro:arg name="gazebo_effort" default="false" />

  <!-- For a multi arm setup, we need a threaded robot running async-->
  <xacro:arg name="multi_arm" default="false" />

  <xacro:franka_robot arm_id="fr3"
                      joint_limits="${xacro.load_yaml('$(find franka_description)/robots/fr3/joint_limits.yaml')}"
                      inertials="${xacro.load_yaml('$(find franka_description)/robots/fr3/inertials.yaml')}"
                      kinematics="${xacro.load_yaml('$(find franka_description)/robots/fr3/kinematics.yaml')}"
                      dynamics="${xacro.load_yaml('$(find franka_description)/robots/fr3/dynamics.yaml')}"
                      gazebo="$(arg gazebo)"
                      hand="$(arg hand)"
                      ee_id="$(arg ee_id)"
                      with_sc="$(arg with_sc)"
                      ros2_control="$(arg ros2_control)"
                      robot_ip="$(arg robot_ip)"
                      use_fake_hardware="$(arg use_fake_hardware)"
                      fake_sensor_commands="$(arg fake_sensor_commands)"
                      gazebo_effort="$(arg gazebo_effort)"
                      no_prefix="$(arg no_prefix)"
                      arm_prefix= ""
                      connected_to= "base">
  </xacro:franka_robot>

</robot>
