ROS机器人关键组件—launch文件

发布于 2019-04-25  83 次阅读


第一部分 launch文件的应用

首先我们先讲一个人ros文件的应用,然后从这个应用分析来学习launch

例子,用键盘控制小海龟的移动,并监听小海龟的坐标变换

  1. 从Ctrl+ alt+T打开一个终端,启动ros节点。
    roscore
  2. 再Ctrl+alt+T打开终端,启动小海龟
    rosrun turtlesim turtlesim_node
  3. 再Ctrl+alt+T打开终端,启动键盘控制
    rosrun turtlesim turtle_teleop_key

我们只是一个小例子,但是我们要打开分别打开好几个终端,如果这个练习一次到没什么,但是经常重复这个工作,显得特别麻烦。所以launch文件就是解决这个问题的。只需要输入一次命令解决这个问题。
命令格式:roslaunch pkg_name launch文件名

第二部分 如何使用launch文件

  1. 我们首先创建一个功能包(进入你工作空间的src目录下)
    catkin_create_pkg test roscpp turtlesim
  2. 然后cd 进入test
    cd test
  3. 创建一个launch文件,并添加内容
    vi test.launch
    复制以下内容并粘贴。

    
    <launch>
    <node
    pkg = "turtlesim"
    type = "turtle_teleop_key"
    name = "teleop_key"
    launch-prefix = "xterm -e"
    required = "true"
    />

<node
pkg = "turtlesim"
type = "turtlesim_node"
name = "turtlesim"
respawn = "true"
/>

</launch>



保存退出
1. 运行launch文件
<code>roslaunch test test.launch</code>
如果没有报红,并且紧接着会出现一个小海龟和一个键盘控制窗口,说明没有问题。
效果图:
![2019-04-30.png](http://yun.awacky.com/2019-04-30.png)
## 第三部分 内容讲解
首先launch文件位于一个功能包之下,并且文件格式是xml形式的,文件的后缀为.luanch。
可以从我们的例子看到,所有内容必须位于<code><launch></launch></code>标签内部。
<code><node   /></code>标签:也就是我们要写的主要内容,

|   |   |   |
| 属性 | 属性作用 | ------------ |
|  name="NODE_NAME" |  为节点指派名称,这将会覆盖掉ros::init()定义的node_name |   |
|  pkg="PACKAGE_NAME"    |  节点所在的包名 |   |
|  type="FILE_NAME"  |  执行文件的名称如果是用Python编写的就填写xxx.py,如果是cpp就写编译生成的可执行文件名 |   |
| output="screen"  |  终端输出转储在当前的控制台上,而不是在日志文件中 |   |
| respawn="true"  |  当roslaunch启动完所有该启动的节点之后,会监测每一个节点,保证它们正常的运行状态。对于任意节点,当它终止时,roslaunch 会将该节点重启 |   |
|  launch-prefix = "command-prefix" | 我的理解是,相当于在执行启动命令时加上一段命令前缀  |   |
|ns = "NAME_SPACE"   | 这个属性可以让你在自定义的命名空间里运行节点  |   |

在软工的道路上越走越远。。。