ROS--roslaunch 介绍

roslaunch
launch,中文含义是启动,launch文件顾名思义就是启动文件

roslaunch是一个用于自动启动ros节点的命令行工具,从命令的字面上看还跟rosrun有些相似:

roslaunch PACKAGE_NAME LAUNCH_FILE_NAME

只不过roslaunch的操作对象并非节点,而是launch文件。launch文件是描述一组节点及其话题重映射和参数的XML文件。根据规范,这些文件的后缀都是.launch 
一个最简单的launch文件可以像下面这样:


    
    

1.launch标签小结
1.0
launch标签就像一个有容乃大的括号,规定了一片区域,所有的launch文件都由开头,由结尾,所有的描述标签都要写在之间


……
……
……

1.1
node标签可以说是launch文件里最常见的标签了,每个node标签里包括了ROS图中节点的名称属性name、该节点所在的包名pkg以及节点的类型type(其实就是可执行文件的名称,如果是用Python编写的就填写xxx.py,如果是cpp就写编译生成的可执行文件名),在上面的例子中还出现了output这个东西,这个属性在调试阶段很有用,output=“screen”表示了将终端输出转储在当前的控制台上,而不是在日志文件中。

ROS--roslaunch 介绍_第1张图片
1.2
该标签可以导入另一个roslaunch XML文件到当前文件。
file ="$(find pkg-name)/path/filename.xml"    指明我们想要包含进来的文件
ns="NAME_SPACE"    相对NAME_SPACE命名空间导入文件
使用起来就像下面这样

1.3
remap标签顾名思义重映射,ROS支持topic的重映射,remap标签里包含一个original-name和一个new-name,及原名称和新名称。 
比如现在你拿到一个节点,这个节点订阅了"/chatter"topic,然而你自己写的节点只能发布到"/demo/chatter"topic,由于这两个topic的消息类型是一致的,你想让这两个节点进行通讯,那么可以在launch文件中这样写:

这样就可以直接把/chattertopic重映射到/demo/chatter,这样子不用修改任何代码,就可以让两个节点进行通讯。 
如果这个 remap标签写在与 node 元素的同一级,而且在launch 元素内的最顶层。 那么这个重映射将会作用于launch文件中所有的节点。

1.4
param标签的作用相当于命令行中的rosparam set 
比如现在在参数服务器中添加一个名为demo_param,值为666的参数

1.5
rosparam标签允许从YAML文件中一次性导入大量参数。 
使用起来就像这样:

1.6
arg标签用来在launch文件中定义参数,arg和param在ROS里有根本性的区别,就像局部变量和全局变量的区别一样。arg不储存在参数服务器中,不能提供给节点使用,只能在launch文件中使用。param则是储存在参数服务器中,可以被节点使用。



像上面这样,就简单地声明了一个参数,名叫demo,但是声明不等于定义,我们需要给他赋值,在赋值之后参数才能够发挥作用。



以上是两种简单的赋值方法,两者的区别是使用后者赋值的参数可以在命令行中像下面这样被修改,前者则不行。

roslaunch demo demo.launch demo:=6666

arg还有更加高级,也更加灵活的用法: 
$(arg arg_name) 
当$(arg arg_name)出现在launch文件任意位置时,将会自动替代为所给参数的值。

1.7
group标签可以将若干个节点同时划分进某个工作空间。


    
    


    
    



 

你可能感兴趣的:(ROS)