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

ROS启动文件报错:include节点存在未使用参数问题求助

问题原因与解决方法

核心报错原因

你在包含/root/CS4501-Labs/lab6_ws/src/flightcontroller/launch/fly.launch时传递的pxy、iz、dxy等参数,fly.launch本身并没有通过<arg>标签声明这些参数。ROS启动机制要求:当一个launch文件包含另一个launch文件时,传递的参数必须是被包含文件明确声明接收的,否则会判定为“未使用的参数”并报错。

分步解决

1. 修正fly.launch,添加参数声明

打开fly.launch,在文件开头添加所有需要接收的参数声明(可设置默认值,也可留空强制外部传入):

<?xml version="1.0"?>
<launch>
  <!-- 声明需要接收的参数,与传递的参数一一对应 -->
  <arg name="ship_velocity" default="0.1"/>
  <arg name="ship_waypoints" default="[[0, 0]]"/>
  <arg name="rate" default="10"/>
  <arg name="pxy" default="0.01"/>
  <arg name="pz" default="0.5"/>
  <arg name="dxy" default="1"/>
  <arg name="dz" default="30"/>
  <arg name="iz" default=".05"/>
  <arg name="ixy" default="0.05"/>
  <arg name="logging" default="log"/>

  <!-- 保留fly.launch原有的节点、include等内容 -->
</launch>

2. 修正主launch文件的两个错误

错误1:<arg>标签不能嵌套在<node>内部

<arg>是launch文件级别的配置,必须放在<launch>根节点下,不能放在<node>标签里。将主launch文件中ship_following_controller_node内的<arg>移到全局位置:

<?xml version="1.0"?>
<launch>
  <!-- 原有全局参数 -->
  <arg name="logging" default="screen" />
  <arg name="ship_velocity" default="0.1" />
  <arg name="ship_waypoints" default="[[2,6],[2,-4],[-2,-2],[4,-2],[-5,5],[4,4],[-6,-6]]" />
  <arg name="followed_epsilon" default="2.0"/>

  <!-- 新增需要传递给节点的参数,移到全局 -->
  <arg name="rate" default="10"/>
  <arg name="iz" default=".05"/>
  <arg name="dz" default="30"/>
  <arg name="pz" default="0.5"/>
  <arg name="ixy" default="0.05"/>
  <arg name="dxy" default="1"/>
  <arg name="pxy" default="0.01"/>

  <!-- 原有include部分 -->
  <include file="$(find flightgoggles)/launch/core.launch">
  </include>
  ...

  <!-- 修正后的节点配置,移除内部的<arg> -->
  <node pkg="simple_control" type="ship_following_controller.py" name="ship_following_controller_node" output="screen">
    <param name="rate" type="int" value="$(arg rate)" />
    <param name="pxy" type="double" value="$(arg pxy)" />
    <param name="pz" type="double" value="$(arg pz)" />
    <param name="dxy" type="double" value="$(arg dxy)" />
    <param name="dz" type="double" value="$(arg dz)" />
    <param name="iz" type="double" value="$(arg iz)" />
    <param name="ixy" type="double" value="$(arg ixy)" />
  </node>
</launch>

错误2:param值引用错误

你主launch文件中所有param的value都错误引用了$(arg rate),比如<param name="pxy" type="double" value="$(arg rate)" />,需要改成对应参数的引用(如$(arg pxy)),否则参数传递完全失效。

验证

修改完成后,重新启动launch文件,"unused args"的报错会消失,同时节点参数也能正确传递。

内容的提问来源于stack exchange,提问作者user810251

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:31:01