这几天看了一些.roslaunch文件,发现都忘得差不多了,索性做一个总结。
最最基本的格式
<launch> //头
...
<\launch>//尾
文件包含的部分:
<node>
要启动节点,包含以下参数
节点元素 – 每个node的头和尾
<node
pkg=”turtlesim” //功能包名
type=”turtlesim_node” //节点名
name=”turtle1” //节点重命名/>
以上是必须属性
可选属性
respawn=”true” //自动重启
required=”true” //必要节点,这个出问题了,整个launch结束
output=”screen” //输出打印信息
launch-prefix=”xterm -e” //单独维护一个窗口 比如要输入或者单独查看日志信息
ns=”name-space” //定义命名空间,同一命名空间下节点的话题才能通信
【区别于上面的name name只是重命名了节点,话题没变;而ns重定义了空间,话题变了】<remap from="original-name" to "new-name">
//话题重映射
1.写一个新节点 订阅original,修改,重新发布new
2.然后把原来订阅这个话题的节点的程序重映射一下组元素 若干节点放在同一组内
<group ns="name-space">
……</group>
group可以设置一些规则
<group if="$arg arg-name">
//可以通过这个参数的值,决定执行这个组,还是不执行这个组 【1执行 0忽略】<group unless="$arg arg-name">
//可以通过这个参数的值,决定执行这个组,还是不执行这个组 【0执行 1忽略】
其他元素
<arg name="art-name" /> //参数声明
<arg name="fcu_url" default="/dev/ttyACM0:57600" /> //参数赋值 (也可以在 启动launch时赋值, arg-name:="arg-value")
<include file="$(find mavros)/launch/node.launch"> //在这个launch文件中启动其他的launch文件,(包括节点和参数)
传递参数到节点. 个人理解,arg参数只在launch文件中合法(相当于局部变量),不直接传给节点,所以需 要通过node中的args属性进行传递.
<param>:
用来定义一个设置在“参数服务器”的参数,可以添加到 中。 包含以下参数:
name="namespace/name" value="value" type="str|int|double|boot" textfile="$(find pkg-name)/path/file" binflie="$(find pkg-name)/path/file" command="(find pkg-name)/exe' $(find pkg-name)/arg.txt"