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

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

launch文件的格式是:

 <launch>...</launch>

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

1)<node>
<node>是要启动的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也会显示在终端窗口上

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

<node name="gazebo" pkg="gazebo"  type="gazebo"   args="$(find r2_
gazebo)/gazebo /r2_grap.world"    output="screen" respawn="false"/>

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

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

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

下面是一个例子:

<rosparam file=$(find r2_gazebo)/config/controllers/r2_impedance_
controller.yaml"  command="load"/>该命令的作用是:将r2_impedance_
controller.yaml文件加载到Parameter Server(参数服务器)中,设置控制参数。

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

  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是参数文件

下面是使用的例子:

<param name="robot_description" command="$(find xacro)/xacro.py
'$(find r2_gazebo) /robots/r2.sim.urdf.xacro'"/>
<param name="/use_sim_time" value="true"/>
<param name="/gravity/x" value="0"/>

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

<include file ="$(find pr2_controller_manager)/controller_manager.launch"/>

5)<env>
<env>可以用来设置节点的环境变量,可以在<launch>、<include>、<node>等。<env>的参数如下:

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

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

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

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

<remap from="chatter" to="hello"/>

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

<arg name="foo"/> :声明一个参数foo,后面需要给它赋值
<arg name="foo" default="1"/> :声明一个参数foo,它有一个默认值,该值可以被修改。
<arg name="foo" value="bar"/> :声明一个常量foo,它的值不能被修改。

下面是一个使用<arg>的例子:

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

ROS:launch文件的语法规范相关推荐

  1. ROS学习(七):ROS launch 文件

    ROS launch 文件: 为了方便.高效地操作多个节点,可以编写 .launch 文件,然后用 roslaunch 命令运行. launch文件的格式是: <launch> ... & ...

  2. ROS launch文件

    ROS launch文件 1.arg标签 2.group标签 3.param标签 4.ns标签 <!--指明了一个 xml 的版本><?xml version="1.0&q ...

  3. ROS - launch文件

    launch文件是个XML格式的文件,而XML格式文件是由各种标签标识组成的. <launch><node pkg="prometheus_demo" type= ...

  4. ros launch文件编写和节点启动顺序控制

    ROS可以通过launch文件进行节点的管理.初始参数的设置,但是launch文件不能指定节点的启动顺序,因此本文简单介绍下通过launch进行节点启动管理,通过shell来控制节点启动顺序. 1,我 ...

  5. ROS | launch启动文件的使用

    ROS | launch启动文件的使用 1. launch文件功能 2. launch文件语法 2.1 <launch>标签 2.2 <node>标签 2.3 <para ...

  6. 古月居ROS入门21讲-launch文件

    视频链接:bilibili 搜 古月居 源代码:关注古月居公众号,回复ROS入门21讲 文章目录 1 launch文件语法 2 launch 示例 launch文集:通过XML文件实现多个节点的配置和 ...

  7. ROS launch启动文件

    ROS启动文件 launch启动文件 launch 文件语法 launch文件使用 例程代码 launch启动文件 launch启动文件可以同事启动多个节点: 通过XML文件实现多节点的配置和启动(可 ...

  8. ROS中launch文件使用笔记

    1. 常用标签 <launch> <!--根标签--> <node> <!--需要启动的node及其参数--> <include> < ...

  9. Android.mk文件语法规范及使用模板 (转载)

    2019独角兽企业重金招聘Python工程师标准>>> http://blogold.chinaunix.net/u3/99423/showart_2206760.html Andr ...

最新文章

  1. Vue.js之组件及其易错点
  2. 微软Azure storage account的path值代表什么含义
  3. 甘肃民族师范学院计算机科学系,甘肃民族师范学院计算机科学与技术专业2016年在甘肃理科高考录取最低分数线...
  4. 【数字逻辑设计】Logisim构建三种多路选择器
  5. 更正日期(洛谷P5690题题解,Java语言描述)
  6. nagios数据 mysql_读取NAGIOS数据库至MYSQL
  7. 为Hyper-V上的Redhat Linux 打上集成服务
  8. 个人博客网站建设_利用Github+Jeklly搭建个人博客网站
  9. 【7001】n阶法雷序列
  10. [Offer收割]编程练习赛48
  11. WAP网站源代码--WAP新闻(文章)系统调试实战
  12. 配置 Maven 阿里云镜像
  13. html 仿微信语音输入,AudioRecord仿微信录制语音
  14. 狮子座与摩羯座 ---转载
  15. WF 与 WCF 集成
  16. 金融系列-会计基础知识
  17. codeigniter linux url 大写,CodeIgniter中使用Smarty3基本配置
  18. 深圳真实收入是多少?
  19. H无穷滤波(H∞ filtering )
  20. 【C++】算法集锦(1):八大排序算法 :GIF + 亲测代码 +专项练习平台

热门文章

  1. android webview内存泄漏,Android由webview引起的内存泄漏
  2. 系统学习深度学习(十九)--GoogLeNetV1,V2,V3
  3. mysql隔离性与隔离级别
  4. Spark sample入门到精通
  5. Dstream的action算子与RDD的action算子
  6. Java Web学习总结(15)——JSP指令
  7. 用ado.net取数据库中table、column的信息
  8. 彻底了解HASH算法及应用(一)
  9. Eclipse导入包的快捷键
  10. 微型linux系统裁剪