http://wiki.ros.org/roslaunch
首先说之前说过的.launch文件的格式:
1.roslaunch是通过单通道来读XML文件的,有覆盖的原则,所以如果有很多个标签,那么有用的是最后一个标签,但是依赖于此是不明智的,所以推荐使用$(arg)/设置来操作重写行为
2.xml文件的标签分为两种,一种是《foo/》,另一种是《foo》《/foo》(《》换成<>)。格式的话最好有缩进。
3.替换参数(substitution args)(还没看懂)
Roslaunch 标签的特性使他能够使用替换参数,目前支持的有
$(env ENVIRONMENT_VARIABLE)
– 替换掉当前环境的一个变量值,如果环境变量没有设置则launch会失败。该值不能 被重写
$(optenv ENVIRONMENT_VARIABLE)
$(optenv ENVIRONMENT_VARIABLE default_value)
–如果环境变量已设置,则替换他。如果提供了default_value,则环境变量没设置也可以替换。如果default_value没有提供,则会使用空字符串。default_value可以有多个词,由空格分开。
例子:
<param name="foo" value="$(optenv NUM_CPUS 1)" />
<param name="foo" value="$(optenv CONFIG_PATH /home/marvin/ros_workspace)" />
<param name="foo" value="$(optenv VARIABLE ros rocks)" />
default_value第一句是1.第二句:/home/marvin/ros_workspace,第三句: ros和rock
$(find pkg)
例子: $(find rospy)/manifest.xml。这是用相对路径来指定名称,以当前文件夹为根目录的路径,即为相对路径。我们更鼓励使用相对路径,因为绝对路径会限制launch设置的可移植性。使用相对路径时指向文件系统路径的目录会自己放到行里
$(anon [name])
anon是anonymous的意思,这个是以[name]为基础生成一个匿名的id。两次及以上使用$(anon foo)会生成相同的id(这里foo是一个名字)。
$(arg foo)
$(arg foo) evaluates to the value specified by an tag. There