ROS中的roslaunch命令和launch文件(ROS入门学习笔记四)

ROS中的基本对象和概念学习笔记(ROS入门学习笔记一)

ROS中创建工作区和包(ROS入门学习笔记二)

ROS功能包中CMakeLists.txt的说明(ROS入门学习笔记三)


1.roslaunch命令

我们知道,rosrun命令用于运行一个ROS节点,这个在简单程序中使用比较方便。但是在规模比较大的程序中,常常有几个或者几十个节点,这些节点之间彼此互有联系,协同达到软件正确执行的目的。这时候再使用rosrun命令的话,就会比较麻烦。此时,roslaunch命令闪亮登场了,它可以运行多个节点。并且roslaunch命令在运行节点时,还可以附加一些ROS命令选项,比如修改参数或节点的名称,设置节点的命名空间,设置ROS_ROOT及ROS_PACKAGE_PATH,以及环境变量修改等选项的ROS命令。

roslaunch命令的使用,需要先创建一个XML格式的xxx.launch文件,将要运行的节点以及系统中相关参数设置信息写在这个launch文件中,然后执行这个launch文件就可以了。【这里可以理解为launch文件就是一个脚本文件,要执行的操作都写在脚本文件中,执行脚本文件就OK了。】

roslaunch命令执行格式:

                                         roslaunch  功能包名称  launch文件 [参数设置]

这里roslaunch命令会在对应的功能包中找到名称匹配的launch文件,并执行这个launch文件。如果设置了参数的话,会将参数传入到launch文件中赋给对应的参数。

例如,执行vins_estimator功能包中的euroc.launch文件,命令如下。

roslaunch vins_estimator euroc.launch 

如果在launch文件所在路径下执行该launch文件的话,就不需要加功能包名称了,因为此时是能直接找到launch文件的。

如果运行launch文件时需要设置参数,如下所示。arg为参数名称,value为给参数的赋值。

roslaunch my_file.launch arg:=value

注意:在执行roslaunch命令时,一定要先执行source命令:source ../devel/setup.bash命令,否则找不到对应的包名称。

2.launch文件

一般情况下,使用launch文件时,要在工程中创建一个launch目录,并在launch目录下创建xxx.launch文件。

先拿一个VINS-Mono中的euroc.launch文件看看launch文件长什么样子。


    
	  
    
    
        
        
    

    
       
       
    

    
        
        
        
        
        
    


其实我们已经知道launch文件是个XML格式的文件,而XML格式文件是由各种标签标识组成的。因此,要理解并且熟练编写launch文件就需要熟悉launch文件中的各个标签所包含的意思以及其书写形式。

以上边的euroc.launch为例,在标签中,描述了使用roslaunch命令运行节点所需的标签。描述了系统运行中所需要的参数。描述了roslaunch运行的节点,选项包括pkg、type和name。

这里的中的name表示参数的名称,default表示参数默认的值。如果需要设置别的值,可以在roslaunch命令中加入节点名。

中pkg、type、name字段含义如下:

pkg        功能包名称。

type       实际运行的节点的名称(节点名)。

name    与上述type对应的节点被运行时,起的名称(运行名)。一般情况下使用与type相同的名称,但可以根据需要,在运行时更改名称。

launch文件中其他

    指roslaunch语句的开始和结束。

       这是对于节点运行的标签。您可以更改功能包、节点名称和执行名称。

     可以设置运行该节点的PC的名称、address、ros-root和ros-package-path。

    您可以加载属于同一个功能包或不同的功能包的另一个launch,并将其作为一个launch文件来运行。

    可以更改节点名称、话题名称等等,在节点中用到的ROS变量的名称。例如:

         设置环境变量,如路径和IP(很少使用)。

      设置参数名称、类型、值等。

    可以像rosparam命令一样,查看和修改load、dump和delete等参数信息。

       用于分组正在运行的节点。

        用于测试节点。类似于,但是有可以用于测试的选项。

        可以在launch文件中定义一个变量,以便在像下面这样运行时更改参数。

参考文档:roslaunch/XML

你可能感兴趣的:(ROS)