1.<node>
node 是启动文件的标签,负责启动ROS节点
<node pkg="map_server" name="map_server" type="map_server" args="$(arg map_file)"/>
如上代码
pkg:表示功能包的名称
name:节点运行起来的时候,显示的节点的名称
type:定义可执行文件的名称,即为编译生成的可执行文件的名称
args:节点需要的输入参数,此处为需要的一个地图文件
除了上述代码的几个属性,还有其他的属性,如下:
output="screen":输出到屏幕
respawn="ture":复位属性,该节点停止时,会自动重启。
required=“ture”:必要节点,该节点终止的时候,launch文件中的其他文件也会被终止
ns="namespace":命名空间,为节点内的相对名称添加命名空间前缀
2.<param>
<param>和<args>都是参数设置标签,但是他们的工作原理是完全不一样的,一个代表parameter,另一个代表argument。中文都是参数的意思,但是他们的意思完全不同,
<param>存储在参数服务器中,参数服务器就是一个可以让每一个ros程序都可以读取参数一个节点信息,通过ros::param::get()接口来获取parameter的值,用户也可以在终端中通过rosparam命令获得parameter的值。
<param>的使用方法
<param name="output_frame" value="odom"/>
这句就是把output_frame的parameter的值设置为了odom,并且加载到了服务器上面。
3.<arg>
argument是另一个概念,只可以在launch文件的内部使用,不能放在其他的地方,相当于内部的语法,但是有一点,launch文件里面的语法,外部不可用什么意思,,外部的ros节点不能对其进行调用吗,此处疑惑::
launch文件需要用到argument 的时候用如下方式调用{疑惑}
<param name="foo" value="$(arg arg-name)"/>
<node name="node" pkg="package" type="type" args="$(arg arg-name)"/>