在ROS(Robot Operating System)中,
-
arg :arg 用于定义启动文件的输入参数。它们类似于函数的参数,可以在.launch 文件中多处使用。- 这些参数可以在启动文件中被设置默认值,也可以在运行时从外部传递给
.launch 文件。 arg 提供了一种方式来自定义启动过程,使得同一个.launch 文件可以在不同的情况下重复使用,每次使用不同的参数。
举个例子:
假设我们有一个机器人应用,需要在不同的模式下启动:模拟模式和实际硬件模式。我们可以使用
<launch> <!-- 定义一个参数 'mode',默认值为 'simulation' --> <arg name="mode" default="simulation"/> <!-- 使用条件语句根据 'mode' 参数的值决定执行哪些操作 --> <group if="$(eval arg('mode') == 'simulation')"> <!-- 如果模式是 'simulation',启动模拟器相关节点 --> <include file="$(find my_robot_package)/launch/simulator.launch"/> </group> <group unless="$(eval arg('mode') == 'simulation')"> <!-- 如果模式不是 'simulation',启动实际硬件相关节点 --> <include file="$(find my_robot_package)/launch/hardware.launch"/> </group> <!-- 其他通用的节点或设置 --> </launch>
-
param :param 用于设置 ROS 参数服务器上的参数值。一旦设置,这些参数可以被 ROS 网络中的任何节点访问和使用。param 常用于为特定的节点提供配置信息,如机器人的特性或算法的调整参数。
举个例子:
假设我们有一个名为
<launch> <!-- 设置 'robot_driver' 节点的参数 --> <node name="robot_driver" pkg="my_robot_package" type="robot_driver"> <!-- 设置最大速度参数 --> <param name="max_velocity" value="1.5" /> <!-- 设置最大加速度参数 --> <param name="max_acceleration" value="0.8" /> <!-- 也可以加载参数文件中的参数 --> <rosparam file="$(find my_robot_package)/config/robot_params.yaml" command="load"/> </node> </launch>
-
rosparam :rosparam 用于从 YAML 文件加载参数到 ROS 参数服务器,或者将参数服务器上的参数保存到 YAML 文件中。- 它提供了一种便捷的方法来批量设置或保存大量参数,特别是对于复杂的配置。
rosparam 可以加载整个字典结构的参数,从而可以一次性设置多个参数。
-
<rosparam file="$(find my_package)/config/parameters.yaml" command="load"/>
总结来说,