You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04+ROS Melodic环境下summit_xl_steel机器人仿真启动RLException参数未使用错误修复问询

修复ROS Melodic中Summit XL Steel仿真启动的RLException错误

我在Ubuntu 18.04 + ROS Melodic环境下尝试仿真Summit XL Steel机器人,catkin_make能成功编译所有相关功能包,但执行启动命令时遇到了错误:

roslaunch summit_xl_sim_bringup summit_xl_complete.launch

终端输出的关键错误信息如下:

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

我已经尝试了提示的xacro标签修复命令,也多次重建功能包并重新加载环境变量,但问题依然存在。以下是summit_xl_control.launch的内容:

<?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>

问题分析

核心错误是RLException: unused args [arm_model, arm_manufacturer],这说明调用summit_xl_control.launch的上级launch文件(比如summit_xl_complete.launch)传递了arm_model和arm_manufacturer两个参数,但你的summit_xl_control.launch里并没有定义这两个参数,ROS会因为接收到未声明的参数而抛出异常。

解决方案

只需要在summit_xl_control.launch的参数声明部分添加这两个缺失的参数即可,即使暂时用不到,也可以设置空默认值避免错误:

  1. 打开summit_xl_control.launch,在现有的<arg>列表末尾(比如<arg name="is7dof" default="true"/>之后)添加以下两行:

    <arg name="arm_model" default=""/>
    <arg name="arm_manufacturer" default=""/>
    

    如果你知道这两个参数的合理默认值(比如对应Kinova臂的型号),也可以设置具体值,比如default="j2s7s300"或者default="kinova"。

  2. 关于xacro的警告,虽然不影响仿真启动,但建议手动检查相关xacro文件,将未加前缀的标签(比如<sensor_axis_gazebo>)修改为<xacro:sensor_axis_gazebo>,确保兼容后续ROS版本。

验证步骤

修改完成后,重新编译并加载环境变量:

catkin_make
source devel/setup.bash

再次执行启动命令:

roslaunch summit_xl_sim_bringup summit_xl_complete.launch

此时RLException错误应该会消失,机器人可以正常在Gazebo中启动。

内容的提问来源于stack exchange,提问作者Jam-CPU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 18:59:08