ROS:launch文件的语法规范

在ROS应用中,一般涉及多个节点,而每个节点又有很多参数需要设置。为了方便、高效地操作多个节点,可以编写 .launch 文件,然后用roslaunch命令运行。

注意:存储启动文件的目录不一定必须命名为launch。实际上,您甚至不需要将它们存储在目录中。roslaunch命令自动查看传递的包并检测可用的启动文件。但是,这被认为是一种很好的做法。

launch文件的格式是:

	

	...

	

launch文件一般包括以下几部分:

1)
是要启动的ROS节点,它包括以下几个参数:

  pkg=“mypackage” :节点的功能包
  type="nodetype" : 节点的类型
  name="nodename" :节点的名字,它将覆盖任何通过调用ros::init来赋予节点的名称
  args="arg1 arg2 arg3" (可选):传递给节点的参数
  respawn="true" (可选) :如果节点停止,自动重启节点
  ns="foo" (可选):在"foo"命名空间启动节点
  output="log | screen"  (可选) :如果选择screen,节点的stdout(标准输出)和
  								 stderr(标准错误)信息将显示在终端窗口上;
  								 如果选择log,stdout和stderr将发送一个log文件,
  								 stderr也会显示在终端窗口上

下面是一个启动节点的例子:


该命令的作用是:启动gazebo功能包中的gazebo节点,该节点的参数是 r2_grap.world 文件中的内容,节点的stdout和stderr将显示在终端窗口上。如果gazebo节点停止,则不能自动重新启动。

2)
可以使用 .yaml文件load/dump/delete参数。delete和dump命令运行在load命令之前,load命令可以覆盖以前设置的参数。也可以添加到<node>中使用。包括以下几个参数:

  command="load|dump|delete"(默认时load)
  file="$(find pkg-name)/path/foo.yaml"(load或者dump命令):yaml文件的名字
  param="param-name":参数的名字

下面是一个例子:

该命令的作用是:将r2_impedance_
controller.yaml文件加载到Parameter Server(参数服务器)中,设置控制参数。

3)
用来定义一个设置在Parameter Server(参数服务器)的参数,它可以添加到中。包括以下几个参数:

  name="namespace/name":参数的名字
  value="value"(可选):定义参数的值,如果省略这个参数,则应该指定一个文件(binfile/texfile)或命令
  type="str|int|double|boot"(可选):指定参数的类型
  texfile="$(find pkg-name)/path/file" (可选)
  binfile="$(find pkg-name)/path/file" (可选)
  commadn="(find pkg-name)/exe '$(find pkg-name)/arg.txt'" (可选):exe是可执行文件( .py或 .cpp),arg.txt是参数文件

下面是使用的例子:




4)
可以在当前launch文件中调用另一个launch文件,这样有利于代码的复用,减少开发工作量。下面是使用的例子:


5)
可以用来设置节点的环境变量,可以在等。的参数如下:

  name="enviroment-variable-name" :设置的环境变量的名字
  value="environment-variable-value" :环境变量的值

6)
可以将一个参数名映射为另一个名字,它的参数如下:

  from="original-name"
  to="new-name"

下面是应用的例子:
如果有一个节点需要接收主题"chatter",但是此时仅有一个发布"hello"主题的节点。"chatter"和"hello"主题的数据类型是一样的,因此可以采用将主题重新映射,命令如下:


7)
用来定义一个局部参数,该参数只能在一个launch文件中使用。有三种使用方法:

 :声明一个参数foo,后面需要给它赋值
 :声明一个参数foo,它有一个默认值,该值可以被修改。
 :声明一个常量foo,它的值不能被修改。

下面是一个使用的例子:


  
  	
  
  

你可能感兴趣的:(My,growth)