在ROS中,当我们要运行一个节点时,需要使用rosrun命令,但当有十几个节点时,这种方法就会变得非常麻烦.而启动文件(launch file)便是ROS提供的一种可以同时启动多个节点的途径,通过配置,可以为操作多个节点提供极大的便利.

1、基本元素

一个完整的launch文件必须包含launchnode两个标签.

1.1

launch文件的根元素,文件中的所有内容都必须包含在这个标签中:

<launch>
    ...
</launch>

1.2

node用于启动节点.

<node pkg="pkg_name" type="executalbe_name" name="node_name" />

从上面的定义可以看出,node节点必须包含三个属性.这三个属性作用分别为:

  • pkg: 定义节点所在功能包的名称
  • type:节点可执行文件的名称
  • name:定义节点运行的名称,将会覆盖在代码中init()的节点名称

除了这三个必须的属性,还有常用的属性:

  • output="screen":将节点的标准输出打印到终端屏幕
  • args="arguments":节点所需参数

2、参数设置

为了使launch更加灵活,launch文件支持参数的设置.关于参数设置的标签有两个:<param><arg>

2.1

parameter是ROS系统运行中所需的参数,存储在参数服务器中.

<param name="output_frame" value="odom" />

运行launch文件后,output_frame这个parameter参数的值就被设为odom,并且被加载到参数服务器.

但是,在复杂的系统中参数数量一般会很多,这种情况一个一个设置参数会很麻烦,所以ROS提供一种通过加载YAML格式文件参数到参数服务器的方式.

<rosparam file="$(find robot_nav)/config/param_config.yanl" command="load"/>

2.2

argument可以理解为launch文件内的局部变量,而与ROS的节点无关.

<arg name="model" default="$(find robot_description)/urdf/robot.urdf" />

launch文件中需要用到argument时

<param name="robot_description" command="$(arg model)" />

3、重映射

<remap from="/turtlebot/cmd_vel" to "/cmd_vel" />
<remap frot="/vision_and_scan" to "/scan" />

4、嵌套复用

<include file="$(dirname)/other.launch" />
Last modification:September 7th, 2020 at 05:04 pm
如果觉得我的文章对你有用,请随意赞赏