【ROS学习】launch文件的使用

我们都知道在使用ROS时,启动一个节点我们可以使用rosrun启动一个节点!但是如果要启动多个节点呢?是不是得一个个都得启动!是不是感觉特别麻烦和累赘!don't worry!ROS已经帮我们考虑好了!那就是launch 文件,我们可以在launch文件编写多个node节点,然后只需启动launch文件,就可以实现一键启动!

目录

一、launch文件快速使用

二、launch文件一些配置

1、launch根标签设置

2、launch的node标签

3、launch文件的include标签(常用)

4、launch文件的remap标签(实用)

5、launch文件的param标签

6、launch文件的rosparam

①导入参数

②导出参数

③删除参数(用的少)

7、launch文件的group标签

8、launch文件的arg标签 


一、launch文件快速使用

我们以turtlesim为例进行编写launch文件!

我们如果要启动一个turtle节点,如下:

rosrun turtlesim turtlesim_node 

启动键盘节点,如下:

rosrun turtlesim turtle_teleop_key

需要两步!而launch文件如下:


    
    
    
    

node pkg:功能包名

type:节点名

name:自定义名称

output:输出到屏幕

运行只需:

roslaunch launch_learning start_turtle.launch 

launch_learning:功能包名     

start_turtle.launch:launch文件名           

【ROS学习】launch文件的使用_第1张图片

 注:启动launch文件就不需要启动roscore了!

二、launch文件一些配置

1、launch根标签设置

当我们的launch文件已经弃用或者过时,可以添加备注,让其他使用者知道弃用情况!


    
    
    
    

在launch根标签加入 deprecated="该launch文件已经过时,建议不使用"

【ROS学习】launch文件的使用_第2张图片

 2、launch的node标签

①属性

  • pkg:功能包名(常用)
  • type:node节点名(常用)
  • name:自定义节点名(常用)
  • args:参数(将参数传递给节点)
  • respawn:如果节点退出,是否自动重启(true/false)<这个在后续的激光雷达启动时十分有用,若异常断开,可以自动重连>(实用)
  • respawn_delay="N"(若respawn为true,那么延迟N秒后启动节点)

  •  required:(true/false)若为true,如果该节点退出,将结束整个roslaunch

【ROS学习】launch文件的使用_第3张图片

  •  ns="xxx" 添加命名空间namespace(目的是防止重名)

 

3、launch文件的include标签(常用)

我们都知道,不可能把所以launch代码都放在一块,显得十分臃肿,因此可以采用include标签进行代码复用!

  • file="$(find 功能包名)/xxx/xxx.launch"

       

4、launch文件的remap标签(实用)

我们可以看到下图,启动turtle节点和turtle的键盘控制节点,然后启动键盘控制节点,我们发现新启动的键盘控制节点并不能控制小乌龟,原因在于话题名称不对应,一个是/cmd_vel 另一个是/turtle1/cmd_vel ,如果想要新启动的键盘控制节点控制小乌龟移动,那就可以采用remap进行话题重命名!

【ROS学习】launch文件的使用_第4张图片


    
    
        
    
    
    

【ROS学习】launch文件的使用_第5张图片

 5、launch文件的param标签


    
    
    
        
    
    
    

param放置的外置的区别是后者添加了命名空间

【ROS学习】launch文件的使用_第6张图片 

【ROS学习】launch文件的使用_第7张图片

 6、launch文件的rosparam

标签可以从yaml文件中导入参数,或者将参数导出到yaml文件

①导入参数

有点像param标签,但是区别在于rosparam可以导入yaml文件一次性导入参数!


    
    
    
        
    
    
    

【ROS学习】launch文件的使用_第8张图片 

【ROS学习】launch文件的使用_第9张图片

②导出参数

 ③删除参数(用的少)

7、launch文件的group标签

我们都知道如果启动两个相同的节点,后一个节点会把前一个节点干掉!但如何两个都启动呢!那就需要使用group这个标签了!


    
         
        
        
         
    

    
         
        
        
         
    

我们可以发现启动了两个小乌龟界面,话题也更新了两个不一样的命名空间的话题!这样就可以两个相同的节点同时启动了!

【ROS学习】launch文件的使用_第10张图片

 8、launch文件的arg标签 


    
    
    

    
    
    

如果在启动launch文件没有设置参数的话,就默认使用default的参数值

【ROS学习】launch文件的使用_第11张图片

 也可以在启动launch文件时设置参数,如下:

roslaunch launch_learning arg.launch car_length:=0.9 car_width:=0.1 car_height:=0.99

 【ROS学习】launch文件的使用_第12张图片

你可能感兴趣的:(移动机器人项目,自动驾驶,人工智能)