launch启动文件
launch启动文件可以同事启动多个节点;
通过XML文件实现多节点的配置和启动(可自启动ROS Master);
以< launch > 开头,以< /launch >结尾,如:
在文件中,node下设置的参数为了与外面的参数不重复,node内的参数前会添加一个节点名作为区分,避免资源冲突,而在node外的参数没有添加前缀,这就是它们的区别。
launch 文件语法
< node > 启动节点: < node pkg=“package-name” type=“executable-name” name=“node-name” />
pkg:节点所在功能包名称
type:节点的可执行文件名称
name:节点运行时的名称
output、reapawn、required、ns、arg
例如:
<launch>
<node pkg="turtlesim" name="sim1" type="turtlesim_node" />
<node pkg="turtlesim" name="sim1" type="turtlesim_node" />
</launch>
这里打开了两个小海龟节点,一个名为sim1,另一个名为sim2;
< rosparam > / < param > 设置参数,设置ROS系统运行中的参数,存储在参数服务器中。
< param name="output_frame"value=“odom” />
name:参数名
value:参数值
加载参数文件中的多个参数:
< rosparam file=“params.yaml” command=“load” ns=“params” />
< arg > launch文件内部的局部变量,仅限于launch文件使用
< arg name=“arg-name” default=“arg-value” />
name:参数名
value:参数值
调用:
<param name="foo" value="$(arg arg-name"/>
<node name="node" pkg="package"type="type" arg="$(arg arg-name" />
< remap > 重映射:重映射ROS设计图资源的命名
< remap from=“/turtlebot/cmd_vel” to=“/cmd_vel”/>
from:原命名
to:映射之后的命名
< include > 嵌套 包含其他launch文件,
< include file=“$(dirname)/other.launch” />
file : 包含的其他launch文件路径
launch文件使用
在catkin_ws/src创建learning_launch功能包,不需要任何依赖:
yue@yue-HP-288-Pro-G6-Microtower-PC:~/catkin_ws/src$ catkin_create_pkg learning_launch
在功能包launch文件夹下创建launch文件夹用于存放launch文件:
将文末的例程文件中learning_launch/launch 下的 simple.launch 放在创建好的launch文件夹下;
simple.launch文件中内容非常简单,包含两个node标签;
启动方式
回到根目录下进行编译;
使用roslaunch命令启动ROS中的launch文件: roslaunch 功能包名 launch文件名:
yue@yue-HP-288-Pro-G6-Microtower-PC:~$ roslaunch learning_launch simple.launch
就同时启动了一个发布者和一个订阅者节点;