launch文件概述---1
摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/
资源链接:http://wenku.baidu.com/link?url=PhyN3C6ghqovJ0qtg8dnTEPEku6WFDnB2dOeMqfErVLx8hB4MksBUULiNLlvjwWtsgDRTcizA2jCFhCjdgu0rRTfsq2mUtiRr5GKUtfYtMi
pdf转world:http://www.convertpdftoword.net/
1.计算次序
roslaunch与XML文件单一传递。include是按照深度优先遍历的顺序处理。标签tag进行串行处理并且最后的设置有效。因此,若一个参数被多次设置,最后指定的值将被使用。
依靠重写覆盖的行为是不可取的。因为没有谁能保证重写是正确的(如,include文件中参数名改变了)。相反,比较推荐的是使用$(arg)/<arg>设置来进行重写行为。
2.替代参数(substitutionargs:置换符)
Roslaunchtag属性可使用置换符,这要在启动节点之前解决。目前支持的置换参数如下:
$(env NVIRONMENT_VARIABLE)
替代当前的环境变量的值。如果环境变量没有设置,启动将失败。该值不能由<env>标签重写。
).$(optenv ENVIRONMENT_VARIABLE) $(optenv ENVIRONMENT_VARIABLE default_value)
如果设置了,则替代一个环境变量值。如果默认值default_value提供了,环境变量没有设置时将使用默认值。如果没有默认值,将使用空字符串。default_value可以是用空格分开的多个单词。例子:
<paramname="foo"value="$(optenv NUM_CPUS 1)"/>
<paramname="foo"value="$(optenv CONFIG_PATH /home/wsh/ros_workspace)"/>
<paramname="foo"value="$(optenv VARIABLE ros rocks)"/>).$(findpkg)
).$(find pkg)
$(findrospy)/manifest.xml.指定包的相对路径。文件系统到包目录的路径将被内联的替换。由于硬件编码抑制了启动配置的可移植性,我们鼓励使用包相对路径。本地文件系统公约的前后削减问题得到解决
).$(anon name)
$(anonrviz-1)产生基于名称的匿名ID。名字本身是一个独特的标识符:不同的$(anonfoo)用法将创建相同的“匿名”的名字。主要用于“节点名称”属性中以创建匿名节点。ROS要求每个节点都有唯一的名字
例如:
<nodename="$(anonfoo)" pkg="rospy_tutorials" type="talker.py"/>
<nodename="$(anonfoo)" pkg="rospy_tutorials" type="talker.py"/>
如果两个节点有一样的名字将会发生错误。
).$(argfoo)
$(argfoo)计算由<arg>标签指定的值。在声明arg的同一启动文件中必须有对应的<arg>标签。例如:
<paramname="foo" value="$(argmy_foo)"/>
将指定my_foo到foo参数.另一个例子:
<nodename="add_two_ints_server" pkg="beginner_tutorials" type="add_two_ints_server"/>
<nodename="add_two_ints_client" pkg="beginner_tutorials" type="add_two_ints_client" args="$(arga)$(argb)"/>
将会从<add_two_ints>例子中启动server和client,作为参数值a和传递。产生的启动项目能用如下语句调用:
roslaunch beginner_tutorials launch_file.launch a:=1 b:=
置换参数目前在本地机器上已经解决。换句话说,环境变量和ROS包的路径能在当前的环境中设置,甚至远程启动的过程也可以。
3.if和unless属性
所有标签tags都支持if和unless属性(基于计算的值包含或者排除一个tag)。”1”和“true”是值。”0”和“false”假值。其它值是错的。
if=value(optional) 如果value值为true,包括标签和内容。
unless=value(optional) 除非value为真,包含标签和内容.
例子:
<groupif="$(argfoo)">
<!--stuff that will only be evaluated if foo is true--></group>
<paramname="foo"value="bar"unless="$(argfoo)"/>
4.相关标签
<launch>
<node>
<machine>
<include>
<remap>
<env>
<param>
<rosparam>
<group>
<test>
<arg>
5.例子.launchXML配置文件
注:按照惯例,roslaunchXML文件的扩展名为.launch,
如example.launch。
5.1最小例子(MinimalExample)
下面的示例是一个最小的启动配置脚本。它启动了一个节点'talker',位“rospy_tutorials”包中。这个节点在本地机使用当前配置的ROS环境启动(如ros_root)。
<launch>
<nodename="talker"pkg="rospy_tutorials"type="talker"/></launch>
5.2一个稍微复杂的例子
<launch>
<!-- local machine already has a definition by default.This tag overrides the default definition withspecific ROS_ROOT and ROS_PACKAGE_PATH values -->
<machine name="local_alt" address="localhost" default="true" ros-root="/u/user/ros/ros/" ros-package-path="/u/user/ros/ros-pkg" />
<!-- a basic listener node -->
<node name="listener-1" pkg="rospy_tutorials" type="listener" />
<!-- pass args to the listener node -->
<node name="listener-2" pkg="rospy_tutorials" type="listener" args="-fooarg2" />
<!-- a respawn-able listener node -->
<node name="listener-3" pkg="rospy_tutorials" type="listener"respawn="true" />
<!-- start listener node in the 'wg1' namespace -->
<node ns="wg1" name="listener-wg1" pkg="rospy_tutorials" type="listener"respawn="true" />
<!-- start a group of nodes in the 'wg2' namespace -->
<group ns="wg2">
<!-- remap applies to all future statements in this scope. -->
<remap from="chatter" to="hello"/>
<node pkg="rospy_tutorials" type="listener" name="listener" args="--test" respawn="true" />
<node pkg="rospy_tutorials" type="talker" name="talker">
<!-- set a private parameter for the node -->
<param name="talker_1_param" value="a value" />
<!-- nodes can have their own remap args -->
<remap from="chatter" to="hello-1"/>
<!-- you can set environment variables for a node -->
<env name="ENV_EXAMPLE" value="some value" />
</node>
</group>
</launch>
5.3设置参数
也可以在参数服务器上设置参数。在节点启动之前,这些参数被存储在服务器上。如果值是明确的,可以省略 type 类型属性。支持的类型是 str, int, double, bool。也可以不使用 textfile 或 binfile 属性来
指定一个文件目录。
例如:
<launch>
<param name="somestring1" value="bar" />
<!-- force to string instead of integer -->
<param name="somestring2" value="" type="str" />
<param name="someinteger1" value="" type="int" />
<param name="someinteger2" value="" />
<param name="somefloat1" value="3.14159" type="double" />
<param name="somefloat2" value="3.0" />
<!-- you can set parameters in child namespaces -->
<param name="wg/childparam" value="a child namespace parameter" />
<!-- upload the contents of a file to the server -->
<param name="configfile" textfile="$(find roslaunch)/example.xml" />
<!-- upload the contents of a file as base64 binary to the server -->
<param name="binaryfile" binfile="$(find roslaunch)/example.xml" />
</launch>
launch文件概述---1的更多相关文章
- .edmx 文件概述(实体框架)
(一) 认识.edmx文件结构 参考资料: .edmx 文件概述(实体框架) Entity Framework 全面教程详解(转) Entity Framework 教程 Entity Framewo ...
- launch文件
launch在ROS应用中,每个节点通常有许多参数需要设置,为了方便高效操作多个节点,可以编写launch文件,然后用roslaunch命令运行roslaunch: roslaunch [option ...
- 第三课3、ROS的launch文件
1.launch 参数说明: pkg为节点的功能包,type为需要运行的那个节点,name为节点的名字,后面的参数可选 举个例子: 在工作空间中新建一个包: 然后再回到工作空间中去编译: 再在包目录下 ...
- ROS启动多launch文件
在ROS工程中经常需要启动好几个launch文件,比较不方便,有下面两种方法可以更高效些: 重写一个大型的launch文件,将所有的节点的启动配置信息都包含进去. 通过bash写一个xxx.sh文件, ...
- ROS的launch文件
ROS中可以把很多的命令以描述的形式写成launch文件,然后用roslaunch命令执行launch文件.它的使用方法如下: roslaunch [package] [filename.launch ...
- launch 文件的写法
1. launch文件的写法 ❀标签 ☺<node> 启动一个节点 ☺ <param> 设置参数服务器的参数 ☺ < ...
- (八) .launch文件 ---编写简单的启动脚本文件
下面我们将介绍,如何编写一个启动脚本程序:(.launch文件) 还记得我们在 创建ROS软件包教程 中创建的第一个程序包(beginner_tutorials)吗,现在我们要使用它. 在 begin ...
- Java编程的逻辑 (56) - 文件概述
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- sid-msg.map文件概述
我这边编写了magic对应的指定文件规则,但是运行的时候发现储存的文件中包含我未指定的数据文件: 在rules下边看的时候,发现有sid-msg.map文件,上网了解下这个文件是干啥的.. 下边文章来 ...
随机推荐
- 数据结构-Hash表
实现: #ifndef SEPARATE_CHAINING_H #define SEPARATE_CHAINING_H #include <vector> #include <lis ...
- Easy UI 遮罩(MASK)
From :http://blog.csdn.net/luminji/article/details/16984839 Easy UI 的各类控件有些带了遮罩功能,如 DataGrid,可以这样使用: ...
- hdu 1033 (bit masking, utilization of switch, '\0' as end of c string) 分类: hdoj 2015-06-15 21:47 37人阅读 评论(0) 收藏
bit masking is very common on the lower level code. #include <cstdio> #include <algorithm&g ...
- 使用SharedPreferences进行数据存储
使用SharedPreferences进行数据存储 很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存,如果是w ...
- setLayoutParams getLayoutParams
继承关系:java.lang.Object ↳ android.view.ViewGroup.LayoutParams ↳ android.view.ViewGroup.MarginLayoutPar ...
- ACM - KMP题目小结 (更新中)
KMP算法题型大致有两类,一类是next数组的应用,一类是匹配问题. next数组大多数是求字符串周期,或者是与前缀后缀有关,也可以应用在DP中.需要对next数组有一定理解才能做得出. next数组 ...
- PAT 10-0 说反话
我写了两种实现方法,其中第二种是参考Yomman园友的(http://www.cnblogs.com/yomman/p/4271949.html).我的方法(方法一)是用一个数组存放输入的字符串,另一 ...
- Stm32_调试出现 Error:Flash Download Failed-"Cortex-M3"
rror:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HW ...
- (转)xcode5.0.2下国际化图文解说
原文:http://blog.csdn.net/dragoncheng/article/details/6703311 xcode5.0.2下国际化图文解说 分类: ...
- Python运算符与表达式
Python运算符包括赋值运算符.算术运算符.关系运算符.逻辑运算符.位运算符.成员运算符和身份运算符. 表达式是将不同类型的数据(常亮.变量.函数)用运算符按照一定得规则连接起来的式子. 算术运算符 ...