Launch文件编写

roslaunch可以用来启动定义在launch文件中的多个节点,且不需要提前roscore。

roslaunch的使用方法为: 
$ roslaunch pkg-name launch-file-name

创建turtlemimic.launch文件

<launch>
 
  <group ns="turtlesim1">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>
 
  <group ns="turtlesim2">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>
 
  <node pkg="turtlesim" name="mimic" type="mimic">
    <remap from="input" to="turtlesim1/turtle1"/>
    <remap from="output" to="turtlesim2/turtle1"/>
  </node>
 
</launch>
  • <launch>:以launch标签开头以表明这是一个launch文件。
  • <group ns="turtlesim1">:标签,就像C++中的namespace一样,这样可以让我们同时启动两个turtlesim模拟器而不会产生命名冲突。
  • <node pkg="turtlesim" name="sim" type="turtlesim_node"/>:节点的三个属性分别是程序包名字,节点名字,可执行文件名字。

Terminal 1:

roslaunch beginner_tutorials turtlemimic.launch

Terminal 2:

$ rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

Launch文件编写

Launch文件编写

小练习

现在我们已经学会了,如何编写一个简单的 launch文件,并且我们也知道了如何使用 roslaunch 命令来启动一个启动脚本文件。
下面我们来做一个小练习: 我们就将下面这一堆命令打包成一个启动文件:

$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

beginner_tutorials 程序包中的launch 路径里新建一个 turlte_key_control.launch 文件:

  • 将下面的代码复制过去:
<launch>
    <node pkg="turtlesim" name="turtle1" type="turtlesim_node"/>
    <node pkg="turtlesim" name="turtle1_key" type="turtle_teleop_key"/>
</launch>
  • OK,现在我们来运行一下这个启动脚本:
$ roslaunch beginner_tutorials turtle_key_control.launch
  • 你可以在这个终端中,通过方向键来控制小海龟了。

Launch文件编写