ros launch arguments&Parameters 区别与联系

  • Post author:
  • Post category:其他



Launch arguments

为便于launch文件重复利用一些值,roslaunch支持launch arguments,也成为arguments或者args,类似于局部变量。

注意:尽管argument和parameter的中文意思有时可互换,但他们在ROS中的意义完全不同。Parameters是ROS系统使用的数值,存在parameter server上,nodes可通过ros::param::get函数编程得到,用户可通过rosparam获取。与之不同,arguments仅在launch文件内部有意义,nodes不能直接获取它们的值。

(转载者注:很多时候,roslaunch都需要通过param来传递参数,与此形成对比的是,roslaunch中完全不使用arg其实是ok的。arg相当于定义了容器,用于储存一些值,方便后面重复调用。)

(1)声明argument

<arg name=”arg_name”>

(2)指定argument的值

Launch文件中的每个argument都必须有指定值。赋值方法有好几种。

第一种,在命令行赋值

$ roslaunch package_name launch_file_name arg-name:=arg_value

第二种,在声明argument时赋值

<arg name=”arg_name” default=”arg_name”/>

<arg name=”arg_name” value=”arg_name”/>

上面两行的区别在于,命令行参数可以覆盖default,但是不能重写value的值。

(3)获取变量值

一旦声明某个argument并赋值后,我们可以通过arg使用该argument.

$(arg arg-name)

如果该行出现,roslaunch将会用给定arg-name的值替换其左边的值。

(4)将argument值传给included launch文件

<include file=”path-to-file”>

<arg name=”arg_name” value=”arg_value”/>

……

</include>

若在launch文件中,launch文件及其包含的launch文件出现出现相同的arguments,则需在launch文件及included launch文件中同时写:

<arg name=”arg_name” value=”$(arg arg_name)”/>

第一个arg_name表示indluded launch文件中的argument,第二个arg_name表示launch文件中的argument.其结果是指定的argument在launch文件及included launch文件中都有相同的值。