继博客《RO发布者S复习笔记之——系统框架及其编程规范》,本博文讲解一下roslaunch的调用
目录
创建launch文件并使用
首先创建一个*.launch文件。用于roslaunch的文件具有*.launch文件名,在对应功能包目录中创建一个launch 目录,并将launch文件放在该目录中。
roscd my_first_ros_pkg
mkdir launch
cd launch
gedit union.launch
launch文件的内容如下所示
<launch>
<node pkg="my_first_ros_pkg" type="topic_publisher" name="topic_publisher1"/>
<node pkg="my_first_ros_pkg" type="topic_subscriber" name="topic_subscriber1"/>
<node pkg="my_first_ros_pkg" type="topic_publisher" name="topic_publisher2"/>
<node pkg="my_first_ros_pkg" type="topic_subscriber" name="topic_subscriber2"/>
</launch>
在<launch>标签中,描述了使用roslaunch命令运行节点所需的标签。<node>描述了roslaunch运行的节点。选项包括pkg、type和name。
如果创建了roslaunch文件,可以如下运行union.launch。请注意,当用roslaunch命令运行多个节点时,运行中的节点的输出(info、error等)不会显示在终端屏幕上,这会使调试变得困难。如果此时添加了--screen选项,终端上运行的所有节点的输出将显示在终端屏幕上。
roslaunch my_first_ros_pkg union.launch --screen
加过如下图
可以看到,topic_publisher节点已被重命名为topic_publisher1和topic_publisher2,而topic_subscriber节点已被重命名为topic_subscriber1和topic_subscriber2。这四个节点均在运行中。
打开rqt如下图所示
两个订阅者都在订阅两个发布者的消息。这是因为我们只是改变了节点的名字,而没有改变要订阅的消息的名字。
修改前面所创建的union.launch
<launch>
<group ns="ns1">
<node pkg="my_first_ros_pkg" type="topic_publisher" name="topic_publisher"/>
<node pkg="my_first_ros_pkg" type="topic_subscriber" name="topic_subscriber"/>
</group>
<group ns="ns2">
<node pkg="my_first_ros_pkg" type="topic_publisher" name="topic_publisher"/>
<node pkg="my_first_ros_pkg" type="topic_subscriber" name="topic_subscriber"/>
</group>
</launch>
< g r o up>是对指定节点进行分组的标签。选项有ns。这是命名空间(name space),是组的名称,属于该组的节点和消息都包含在由ns指定的名称中。
再次打开rqt结果如下图所示
Launch标签介绍
在launch文件中根据XML的编写方式可以实现多种功能。launch中使用的标签如下所示。