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文件,并且我们也知道了如何使用 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
- 你可以在这个终端中,通过方向键来控制小海龟了。