在ros package中launch文件夹下的.launch文件,可以同时启动多个节点,使用roslaunch命令可以运行launch文件。
(1)launch文件的结构
<launch>
<node name="talker"pkg="rospy_tutorials" type="talker" >
</node>
</launch>
其中,.launch文件开头是以<launch>为tag,以</launch>为结尾。中间是要启动的节点,是以<node> 开始,</node>结束。pkg="rospy_tutorials",是要启动节点的package名称;type="talker"是启动节点的类型;name="talker"是启动节点的名称。
(2)roslaunch /XML/remap
<node> 启动一个节点
<param> 设置参数服务器上的参数
<arg> 声明参数
<include> 包含roslaunch 文件
<remap> 声明一个名称映射,允许你通过名称映射参数到ROS 节点,使一个节点模仿另一个节点做出的响应。适用于在其范围内随后的所有声
明(<launch>, <node> or<group>)
<group> 共享一个命名空间或映射的封闭的元素组
<machine> 声明启动要使用的机器
<rosparam> 使用rosparam 文件设置启动要用的ROS 参数
<env> 制定启动节点的环境变量
<test> 启动一个测试节点rostest
(3)实例分析
在turtlesim/launch文件夹下建一个multi_node.launch的文件:
<launch>
<group ns="turtlesim1">
<nodepkg="turtlesim" name="sim"type="turtlesim_node"/>
</group>
<group ns="turtlesim2">
<nodepkg="turtlesim" name="sim"type="turtlesim_node"/>
</group>
<node pkg="turtlesim" name="turtle_mimic"type="mimic">
<remap from="input"to="turtlesim1/turtle1"/>
<remap from="output"to="turtlesim2/turtle1"/>
</node>
</launch>
打开终端,输入:
$source ~/ros_tutorial/devel/setup.bash
$roslaunch turtlesim multi_node.launch
$rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
$rqt_graph
出现结果:
想再映射一个小乌龟,可在上面的.launch文件中改为如下内容:
<launch>
.........................
<groupns="turtlesim3">
<nodepkg="turtlesim" name="sim"type="turtlesim_node"/>
</group>
............................
<node pkg="turtlesim" name="turtle_mimic1"type="mimic">
<remap from="input" to="turtlesim1/turtle1"/>
<remap from="output"to="turtlesim3/turtle1"/>
</node>
</launch>
运行结果:
更多有关roslaunch /XML/,请看ros官网 :http://wiki.ros.org/roslaunch/XML