ROS中的基本对象和概念学习笔记(ROS入门学习笔记一)
ROS中创建工作区和包(ROS入门学习笔记二)
ROS功能包中CMakeLists.txt的说明(ROS入门学习笔记三)
我们知道,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命令,否则找不到对应的包名称。
一般情况下,使用launch文件时,要在工程中创建一个launch目录,并在launch目录下创建xxx.launch文件。
先拿一个VINS-Mono中的euroc.launch文件看看launch文件长什么样子。
其实我们已经知道launch文件是个XML格式的文件,而XML格式文件是由各种标签标识组成的。因此,要理解并且熟练编写launch文件就需要熟悉launch文件中的各个标签所包含的意思以及其书写形式。
以上边的euroc.launch为例,在
这里的
pkg 功能包名称。
type 实际运行的节点的名称(节点名)。
name 与上述type对应的节点被运行时,起的名称(运行名)。一般情况下使用与type相同的名称,但可以根据需要,在运行时更改名称。
launch文件中其他
设置参数名称、类型、值等。
参考文档:roslaunch/XML