"RLException: unused args" Can't run launch file ROS

Viewed 847

I am working in Ubuntu[18.04] using ROS Melodic attempting to simulate the summit_xl_steel robot.

I can successfully build the packages using catkin_make.

Running this command: roslaunch summit_xl_sim_bringup summit_xl_complete.launch

The terminal output is as follows:

... logging to /home/developer/.ros/log/621f806e-30da-11ec-bda4-0242ac120003/roslaunch-b5f2eaf84429-23052.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

xacro: in-order processing became default in ROS Melodic. You can drop the option.
Deprecated: xacro tag 'sensor_axis_gazebo' w/o 'xacro:' xml namespace prefix (will be forbidden in Noetic)
when processing file: /workspace/src/summit_xl_common/summit_xl_description/robots/summit_xl_std.urdf.xacro
Use the following command to fix incorrect tag usage:
find . -iname "*.xacro" | xargs sed -i 's#<\([/]\?\)\(if\|unless\|include\|arg\|property\|macro\|insert_block\)#<\1xacro:\2#g'

RLException: unused args [arm_model, arm_manufacturer] for include of [/workspace/src/summit_xl_common/summit_xl_control/launch/summit_xl_control.launch]
The traceback for the exception was written to the log file

I have used the command suggested for fix incorrect tag usage, however, this does not change anything. I have also rebuilt and re sourced the environment multiple times to ensure that that is not causing the error.

The launch file is:

<?xml version="1.0"?>
<launch>
  <arg name="id_robot" default="$(optenv ROBOT_ID robot)"/>
  <arg name="prefix" default="$(arg id_robot)_"/>

  <!-- kinematics: skid, omni -->
  <arg name="kinematics" default="$(optenv ROBOT_KINEMATICS skid)"/>
  <arg name="wheel_diameter" default="$(optenv ROBOT_WHEEL_DIAMETER 0.22)"/>
  <arg name="track_width" default="$(optenv ROBOT_TRACK_WIDTH 0.439)"/>
  <arg name="wheel_base" default="$(optenv ROBOT_WHEEL_BASE 0.430)"/>
  <arg name="odom_frame" default="$(arg prefix)odom"/>
  <arg name="base_frame" default="$(arg prefix)base_footprint"/>
  <arg name="ros_planar_move_plugin" default="false"/>
  <arg name="sim" default="false"/>
  <arg name="sim_arm_control" default="false"/>
  <arg name="cmd_vel" default="robotnik_base_control/cmd_vel"/>
  <arg name="launch_pantilt_camera_controller" default="false"/>
  <arg name="odom_broadcast_tf" default="true"/>
  <!-- kinova arm -->
  <arg name="kinova_arm" default="j2s7s300"/>
  <arg name="arm_prefix" default="$(arg prefix)$(arg kinova_arm)"/>
  <arg name="is7dof" default="true"/>

  <!-- Robot - Load joint controller configurations from YAML file to parameter server -->
  <group unless="$(arg sim)">
      <rosparam file="$(find summit_xl_control)/config/robot_control.yaml" command="load" subst_value="true"/>

      <!-- load the controllers -->
      <node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="
          robotnik_base_control
          joint_read_state_controller
          ">
      </node>

  </group>
    <!-- Simulation - Load joint controller configurations from YAML file to parameter server -->
  <group if="$(arg sim)">
      <rosparam file="$(find summit_xl_control)/config/simulation/robot_control.yaml" command="load" subst_value="true"/>

    <group if="$(arg sim_arm_control)">
      <!-- Kinova -->
      <include file="$(find summit_xl_control)/launch/kinova_control.launch">
        <arg name="prefix" value="$(arg prefix)"/>
        <arg name="kinova_arm" value="$(arg kinova_arm)"/>
        <arg name="arm_prefix" value="$(arg arm_prefix)"/>
        <arg name="use_trajectory_controller" value="false"/>
        <arg name="is7dof" value="$(arg is7dof)"/>
      </include>
    </group>

    <!-- if it has camera ptz -->
    <group if="$(arg launch_pantilt_camera_controller)">
      <node if="$(arg ros_planar_move_plugin)" name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="
        joint_read_state_controller
        joint_pan_position_controller
        joint_tilt_position_controller
       ">
      </node>

      <!-- load the robotnik_base_control ros controllers -->
      <node unless="$(arg ros_planar_move_plugin)" name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="
        robotnik_base_control
        joint_read_state_controller
        joint_pan_position_controller
        joint_tilt_position_controller
       ">
      </node>
    </group>
    <!-- if does not have camera ptz -->
    <group unless="$(arg launch_pantilt_camera_controller)">
      <node if="$(arg ros_planar_move_plugin)" name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="
        joint_read_state_controller
       ">
      </node>

      <!-- load the robotnik_base_control ros controllers -->
      <node unless="$(arg ros_planar_move_plugin)" name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="
        robotnik_base_control
        joint_read_state_controller
       ">
      </node>
    </group>


  </group>


  <node pkg="twist_mux" type="twist_mux" name="twist_mux">
    <rosparam command="load" file="$(find summit_xl_control)/config/twist_mux.yaml" />
    <remap from="cmd_vel_out" to="$(arg cmd_vel)" />
  </node>
  <node pkg="twist_mux" type="twist_marker" name="twist_marker">
    <remap from="twist"  to="$(arg cmd_vel)"/>
    <remap from="marker" to="twist_marker"/>
  </node>


</launch>

How do I fix the launch file so that I can launch the robot model in gazebo? Any help is appreciated, thank you.

1 Answers

This is a bug in the summit_xl package. You're getting the error because summit_xl_one_robot.launch passes on args for both arm_model and arm_manufacturer. The error you're seeing is because neither of the args are actually used in summit_xl_complete.launch. It's possible the author meant for those to be params, but I'm not sure.

To fix the problem you'll need to remove these two lines in simmut_xl_one_robot.launch shown in the link above:

<arg name="arm_manufacturer" value="$(arg arm_manufacturer)"/>
<arg name="arm_model" value="$(arg arm_model)"/>
Related