launch XML <arg> 官方文档 翻译

<arg> tag

目录

  1. <arg> tag
  2. Introduction
  3. Usecase pattern
  4. Attributes
  5. Examples
    1. Passing an argument to an included file
    2. Passing an argument via the command-line

Introduction

The <arg> tag allows you to create more re-usable and configurable launch files by specifying values that are passed via the command-line, passing in via an <include>, or declared for higher-level files. Args are not global. An arg declaration is specific to a single launch file, much like a local parameter in a method. You must explicitly pass arg values to an included file, much like you would in a method call.

<arg>标记允许您创建更多可重用和可配置的启动文件(通过命令行传递的值,通过<include>传递的值)。或为更高级别的文件声明的值。 Args不是全局的。 arg声明特定于单个启动文件,非常类似于方法中的局部参数。 您必须像在方法调用中一样,将arg值显式传递给包含的文件。

 

Usecase pattern

<arg> can be used in one of three ways:

<arg>可以按三按方式使用

  • <arg name="foo" />

    • Declares the existence of foo. foo must be passed in either as a command-line argument (if top-level) or via <include> passing (if included).

    • 声明foo,foo必须作为命令行参数(如果是顶级)或通过<include>传递(如果包括)来传递。

    <arg name="foo" default="1" />

    • Declares foo with a default value. foo can be overriden by command-line argument (if top-level) or via <include> passing (if included).

    • 使用默认值声明foo。 foo可以通过命令行参数(如果是顶级)或通过<include>传递(如果包括)来覆盖。

    <arg name="foo" value="bar" />

    • Declares foo with constant value. The value for foo cannot be overridden. This usage enables internal parameterization of a launch file without exposing that parameterization at higher levels.

    • 用常量值声明foo。 foo的值不能被覆盖。 这种用法使启动文件可以进行内部参数化,而无需在更高级别上暴露该参数化。

Attributes

  • name="arg_name"

    • Name of argument.
    • 参数名

    default="default value" (optional)

    • Default value of argument. Cannot be combined with value attribute.

    • 参数的默认值。 不能与value属性结合使用。

    value="value" (optional)

    • Argument value. Cannot be combined with default attribute.

    • 参数值。 不能与默认属性结合使用。

    doc="description for this arg" (optional) New in Indigo

    • Description of the argument.
    • 参数声明

 

Examples

Passing an argument to an included file

向包含的文件传递参数

  • my_file.launch:

    <include file="included.launch">
      <!-- all vars that included.launch requires must be set -->
      <arg name="hoge" value="fuga" />
    </include>

    included.launch:

    <launch>
      <!-- declare arg to be passed in -->
      <arg name="hoge" /> 
    
      <!-- read value of arg -->
      <param name="param" value="$(arg hoge)"/>
    </launch>

 

Passing an argument via the command-line

通过命令行传递参数

roslaunch uses the same syntax as ROS remapping arguments to specify arg values.

roslaunch使用与ROS重映射参数相同的语法来指定arg值。

  • $ roslaunch my_file.launch hoge:=my_value      (.launch file is available at the current dir)
    $ roslaunch %YOUR_ROS_PKG% my_file.launch hoge:=my_value
### 创建和使用 Gazebo 的 launch 文件 为了创建并使用 Gazebo 的 `launch` 文件,在 ROS 或者 ROS 2 环境下,通常会涉及到定义机器人模型 (URDF),设置世界环境 (`world` 文件), 并通过 `roslaunch` 或 `ros2 launch` 来启动仿真。 #### 定义机器人的 URDF 和 Mesh 资源 当准备 `.urdf.xacro` 文件时,可以利用 XACRO 提供的功能来简化复杂的 XML 结构。如果打算在 Gazebo 中加载带有视觉或碰撞属性的网格文件,则可以在 `<link>` 标签内指定这些资源的位置: ```xml <link name="base_link"> <visual> <geometry> <mesh filename="package://your_package_name/meshes/robot_base.dae"/> </geometry> </visual> </link> ``` 对于上述代码中的路径部分 `"package://your_package_name/meshes/robot_base.dae"` ,应替换为实际存在的文件位置[^1]。 #### 设置自定义的世界文件 Gazebo 使用特定格式描述仿真的物理场景,即所谓的 "World" 文件。此文件一般存放在 `$GAZEBO_RESOURCE_PATH/worlds` 下面的一个子目录里;要获取该变量的具体指向,可以通过终端执行命令 `echo $GAZEBO_RESOURCE_PATH` 查看当前系统的配置情况。 一旦确定了合适的地方放置自己的 world 文件之后,就可以按照官方文档指导编写相应的 SDF 描述符,并将其命名为类似于 `my_world.world`. #### 编写 Launch 文件传递参数给 Gazebo 为了让 Gazebo 加载之前提到过的 custom world file 及其他必要的选项,需要编辑对应的 launch 配置文件。下面给出一段适用于 ROS Noetic 的例子,其中包含了如何向 Gazebo 发送额外指令的方式: ```xml <launch> <!-- 启动 rviz --> <node pkg="rviz" type="rviz" respawn="false" output="screen"/> <!-- 将 robot_description 参数发布到 parameter server 上 --> <param name="robot_description" command="$(find xacro)/xacro '$(find my_robot_model)/urdf/my_robot.urdf.xacro'" /> <!-- 运行 spawn_urdf.launch 文件以初始化 gazebo_ros 节点并将机器人放入环境中 --> <include file="$(find gazebo_ros)/launch/spawn_urdf.launch"> <arg name="urdf_file" value="$(param robot_description)" /> <arg name="initial_pose_x" default="0.0"/> <arg name="initial_pose_y" default="0.0"/> <arg name="initial_pose_z" default="0.5"/> <!-- 让机器人离开地面一点 --> </include> <!-- 添加额外的 Gazebo 命令行参数 --> <arg name="gz_args" default="-u -z 1.0 --verbose $(env GAZEBO_MODEL_DATABASE_URI)$(find your_package)/worlds/my_world.world"/> <!-- 启动 Gazebo with specified arguments --> <node pkg="gazebo_ros" type="spawn_model" args="$(var gz_args)" name="spawn_gazebo_world"/> </launch> ``` 这段脚本不仅展示了怎样引入外部的 urdf/xacro 模型作为模拟对象的一部分,还说明了通过 `<arg>` 元素设定可选参数的方法[^2]。注意这里的 `-u`, `-z` 是控制相机视角高度的例子,而 `--verbose` 则开启了详细的日志输出模式以便于调试问题所在。 #### 关联话题和服务 除了基本的对象导入外,还可以进一步定制化交互逻辑,比如订阅传感器数据流、调用关节控制器服务等操作均需依赖于正确的话题名称与消息类型匹配。这部分工作往往伴随着具体的硬件抽象层(HAL)实现细节密切相关,因此建议参照所使用的驱动程序手册来进行针对性开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值