摘要: 原创博客:转载请表明出处: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>标签重写。
2).$(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)"/>3).$(findpkg)
3).$(find pkg)
$(findrospy)/manifest.xml.指定包的相对路径。文件系统到包目录的路径将被内联的替换。由于硬件编码抑制了启动配置的可移植性,我们鼓励使用包相对路径。本地文件系统公约的前后削减问题得到解决
4).$(anon name)
$(anonrviz-1)产生基于名称的匿名ID。名字本身是一个独特的标识符:不同的$(anonfoo)用法将创建相同的“匿名”的名字。主要用于“节点名称”属性中以创建匿名节点。ROS要求每个节点都有唯一的名字
例如:
<nodename="$(anonfoo)" pkg="rospy_tutorials" type="talker.py"/><nodename="$(anonfoo)" pkg="rospy_tutorials" type="talker.py"/>
如果两个节点有一样的名字将会发生错误。
5).$(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:=5
置换参数目前在本地机器上已经解决。换句话说,环境变量和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一个稍微复杂的例子