launch文件的使用

  • 一、launch文件启动小海龟demo
  • 二、launch文件的各个标签的属性
    • 1.launch标签属性
    • 2.node标签属性
    • 3.include标签属性
    • 4.remap标签属性
    • 5.param标签属性
    • 6.rosparam标签属性
      • 6.1 rosparam参数加载
      • 6.2 rosparam参数导出
      • 6.3 rosparam参数删除
    • 7.group标签属性
    • 8.arg标签属性
      • 8.1arg使用参数默认值
      • 8.2arg使用动态传参

一、launch文件启动小海龟demo

launch文件同时启动小海龟节点和键盘控制节点
创建功能包依赖于std_msgs rospy roscpp turtlesim

launch文件编写start_turtle.launch

<launch><!--启动的节点 --><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"/><!--键盘控制节点  --><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>

启动launch文件
roslaunch launch01_basic start_turtle.launch

二、launch文件的各个标签的属性

1.launch标签属性

deprecated属性用以启用文件说明。

<launch deprecated="此文件已经过时,不建议使用!"><!--启动的节点 --><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"/><!--键盘控制节点  --><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>

2.node标签属性


pkg=“包名”
节点所属的包


type=“nodeType”
节点类型(与之相同名称的可执行文件)


name=“nodeName”
节点名称(在 ROS 网络拓扑中节点的名称)


args=“xxx xxx xxx” (可选)
将参数传递给节点


machine=“机器名”
在指定机器上启动节点


respawn=“true | false” (可选)
如果节点退出,是否自动重启


respawn_delay=" N" (可选)
如果 respawn 为 true, 那么延迟 N 秒后启动节点


required=“true | false” (可选)
该节点是否必须,如果为 true,那么如果该节点退出,将杀死整个 roslaunch


ns=“xxx” (可选)
在指定命名空间 xxx 中启动节点


clear_params=“true | false” (可选)
在启动前,删除节点的私有空间的所有参数


output=“log | screen” (可选)
日志发送目标,可以设置为 log 日志文件,或 screen 屏幕,默认是 log


3.include标签属性

包含另一个xml格式的文件,实现功能的复用。
file=“$(find 包名)/launch/xxx.launch”
要包含的文件路径

ns=“xxx” (可选)
在指定命名空间导入文件

案例:
start_turtle_use.launch

<!-- 需要复用startle_turtle.launch -->
<launch><!-- 包含 --><include file="$(find launch01_basic)/launch/start_turtle.launch"/><!-- 后面写其他节点 -->
</launch>

roslaunch launch01_basic start_turtle_use.launch

4.remap标签属性

用于话题重命名
from=“xxx”
原始话题名称
to=“yyy”
目标名称
案例:
首先运行第一步的同时启动小乌龟和键盘的launch文件:
roslaunch launch01_basic start_turtle.launch
rostopic list查看当前的话题名称:

可以发现小乌龟订阅的速度话题时/turtle1/cmd_vel。此时我们开启另一个键盘控制的功能包:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
并重新rostopic list观察当前的话题名称。

可以发现,新的键盘控制功能包发布的话题名称是cmd_vel,并不是/turtle1/cmd_vel,所以小海龟订阅不到。remap的功能就是可以要订阅的话题改名字。如下launch文件:

<launch><!--启动的节点 --><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"><remap from="/turtle1/cmd_vel" to="cmd_vel"/></node><!--键盘控制节点  --><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>

此时小海龟可以订阅teleop_twist_keyboard.py键盘发布的cmd_vel话题。

5.param标签属性

param标签主要用于在参数服务器上设置参数。有两种格式:

格式1:设置在launch中,node外
格式2:设置在node中。


name=“命名空间/参数名”
参数名称,可以包含命名空间


value=“xxx” (可选)
定义参数值,如果此处省略,必须指定外部文件作为参数源


type=“str | int | double | bool | yaml” (可选)
指定参数类型,如果未指定,roslaunch 会尝试确定参数类型,规则如下:


如果包含 ‘.’ 的数字解析未浮点型,否则为整型
“true” 和 “false” 是 bool 值(不区分大小写)
其他是字符串


向参数服务器中设置参数paramA,类型为int,数值为100
向参数服务器中设置参数paramB,类型为double,数值为3.14

<launch deprecated="此文件已经过时,不建议使用!"><param name="paramA" type="int" value="100" /><!--启动的节点 --><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"><remap from="/turtle1/cmd_vel" to="cmd_vel"/><param name="paramB" type="double" value="3.14"/></node><!--键盘控制节点  --><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>


两者的差异刚好就是节点的名称。这个差异又叫私有命名空间。

6.rosparam标签属性

rosparam标签可以从 YAML 文件导入参数,或将参数导出到 YAML 文件,也可以用来删除参数,rosparam标签在node标签中时被视为私有。

格式1:设置在launch中,node外
格式2:设置在node中。


command=“load | dump | delete” (可选,默认 load)
加载、导出或删除参数


file=“$(find xxxxx)/xxx/yyy…”
加载或导出到的 yaml 文件


param=“参数名称”


ns=“命名空间” (可选)


读取yaml文件,将参数送到参数服务器中,yaml文件如下:
params.yaml

bg_R: 100
bg_G: 125
bg_B: 500

6.1 rosparam参数加载

一个在launch中加载,一个在node中加载。

<launch deprecated="此文件已经过时,不建议使用!"><param name="paramA" type="int" value="100" /><!-- rosparam使用:操作参数服务器数据 --><rosparam command="load" file="$(find launch01_basic)/launch/params.yaml"/><!--启动的节点 --><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"><remap from="/turtle1/cmd_vel" to="cmd_vel"/><param name="paramB" type="double" value="3.14"/><rosparam command="load" file="$(find launch01_basic)/launch/params.yaml"/></node><!--键盘控制节点  --><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>

6.2 rosparam参数导出

将参数服务器中的数据都导出到一个yaml文件。

新建一个dump.launch文件,先启动start_turtle.launch,再启动roslaunch launch01_basic dump.launch

<launch ><rosparam command="dump" file="$(find launch01_basic)/launch/params_out.yaml"/>
</launch>

可以发现params_out.yaml文件已经被导出。

background_b: 255
background_g: 86
background_r: 69
bg_B: 500
bg_G: 125
bg_R: 100
my_turtle: {bg_B: 500, bg_G: 125, bg_R: 100, paramB: 3.14}
paramA: 100
rosdistro: 'kinetic'
roslaunch:uris: {host_chen_hp_envy_te01_1xxx__43731: 'http://chen-HP-ENVY-TE01-1xxx:43731/',host_chen_hp_envy_te01_1xxx__45643: 'http://chen-HP-ENVY-TE01-1xxx:45643/'}
rosversion: '1.12.17'
run_id: 0d3fbfae-d9e1-11ec-8b1d-80e82cf982d4

6.3 rosparam参数删除

<launch ><rosparam command="dump" file="$(find launch01_basic)/launch/params_out.yaml"/><!-- 删除参数 --><rosparam command="delete" param="bg_B"/>
</launch>

7.group标签属性

标签可以对节点分组,具有 ns 属性,可以让节点归属某个命名空间


ns=“名称空间” (可选)
clear_params=“true | false” (可选)
启动前,是否删除组名称空间的所有参数(慎用…此功能危险)


turtle.launch

<launch><!-- 启动两对乌龟GUI与键盘控制节点 --><group ns="first"><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"/><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/></group><group ns="second"><node pkg="turtlesim" type="turtlesim_node" name="my_turtle" output="screen"/><node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/></group></launch>

roslaunch launch01_basic turtle.launch

rosnode list

成功对相同的节点进行了分组。

8.arg标签属性

arg标签是用于动态传参,类似于函数的参数,可以增强launch文件的灵活性


name=“参数名称”


default=“默认值” (可选)


value=“数值” (可选)
不可以与 default 并存


doc=“描述”
参数说明


8.1arg使用参数默认值

<launch><!-- 需求:演示arg的使用,需要设置多个参数,这些参数使用的时同一个值,怎么设置?  --><arg name="car_length" default="0.55"/><param name="A" value="$(arg car_length)"/><param name="B" value="$(arg car_length)"/><param name="C" value="$(arg car_length)"/><param name="D" value="$(arg car_length)"/>
</launch>

roslaunch launch01_basic arg.launch

8.2arg使用动态传参

roslaunch launch01_basic arg.launch car_length:=0.6

ROS 学习笔记3. launch文件的使用相关推荐

  1. ROS学习笔记-roslaunch文件的编写用sh脚本控制launch文件启动顺序

    转载自:https://mp.weixin.qq.com/s?__biz=MzUyMTkxODQyOQ==&mid=2247484719&idx=1&sn=27b3a01c29 ...

  2. ROS 学习笔记(三):自定义服务数据srv+server+client 示例运行

    ROS 学习笔记(三):自定义服务数据srv+Server+Client 示例运行 一.自定义服务数据: 1.向功能包添加自定义服务文件(AddTwoInts.srv) cd ~/catkin_ws/ ...

  3. ROS 学习笔记(二):自定义消息msg+Publisher+Subscriber 示例运行

    ROS 学习笔记(二):自定义消息msg+Publisher+Subscriber 示例运行 一.自定义消息: 1.新建msg文件夹,创建定义Person.msg 文件 mkdir -p ~/catk ...

  4. ROS学习笔记(八): ROS通信架构

    ROS学习笔记(八): ROS通信架构 文章目录 01 Node & Master 1.1 Node 1.2 Master 1.3 启动master和node 1.4 rosrun和rosno ...

  5. ROS学习笔记七:使用rqt_console和roslaunch

    ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...

  6. ROS学习笔记二:探索ROS文件系统

    ROS学习笔记二:探索ROS文件系统 ROS针对自己文件的特性,具有一些自己的工具命令,当针对ROS文件进行操作的时候是非常方便的.这些命令和ubuntu系统原有的命令相似但却不同,单独针对ROS文件 ...

  7. ROS学习笔记之小乌龟跟随

    ROS学习笔记之小乌龟跟随 说明:整个案例是跟着赵虚左老师的视频和文档资料学习的,特此感谢赵虚左老师和Autolabor官方 文档地址 视频地址 学习案例之前的预备知识:TF坐标变换 大体实现流程: ...

  8. ros学习笔记12——python实现发布和接收ros topic

    ros学习笔记12--python实现发布和接收ros topic 一.简单demo 1.工作空间是存放工程开发的相关文件的文件夹 2.创作工作空间指令 3 .创建功能包 4. 创建Topic的订阅发 ...

  9. ROS学习笔记之——移动机器人的导航

    之前博客<ROS学习笔记之--激光雷达SLAM建图>已经介绍过如何通过激光雷达SLAM建图了,本博文讲一下ROS机器人的导航相关 目录 导航相关理论介绍 导航的概述 costmap AMC ...

最新文章

  1. iOS 状态栏的图标
  2. 2个网页跳来跳去_怎么写最优化的网页标题标签(Title Tag)?
  3. JavaScript eval() 函数
  4. Zookeeper 客户端源码吐血总结
  5. 【转】基于XML-RPC的BloggerAPI学习
  6. 基于xml技术的操作
  7. eclipse 使用 maven 无法编译 jsp 文件的问题
  8. 跟老板参加饭局,席间老板叫我去加菜,我该怎么做?
  9. DHCP服务、NFS、vsftp服务的简单搭建
  10. Python strip lstrip rstrip使用方法(字符串处理空格)
  11. 网易经典评论(一)创业
  12. 将格林尼治时间转日期格式
  13. dell台式机安装centos7网卡设置
  14. 编一程序,从键盘输入圆的半径,计算并输出圆的正内接六边形的面积和占圆面积百分比
  15. React.SetStateAction<never[]>
  16. 写论文比较有用的网站
  17. Docker 安装和使用日常命令全覆盖
  18. 为什么区分LHS和RHS?
  19. python实践报告总结_关于开发Python项目的心得总结
  20. pr安装无法启动 计算机丢失,为什么pr安装成功却无法启动?

热门文章

  1. 医咖会免费SPSS教程学习笔记—Cohen’s kappa系数
  2. PC按键精灵读取txt文本出现乱码怎么办?按键精灵手机助手读取txt文本中文变问号怎么办?
  3. 无法通过终端(远程桌面)服务启动MATLAB的解决办法
  4. [iOS越狱开发]安装command line tools for Xcodew
  5. [软件更新]SRS Audio Sandbox v1.9.0.4 汉化版
  6. 蒲公英wifi怎么卸载干净_蒲公英WiFi广告怎么彻底删除
  7. discuz X2数据字典
  8. 全球及中国不锈钢市场投资前景与发展走势研究报告2022版
  9. unrecognized or represents more than one time zone
  10. QQ邮箱取消免费扩容;苹果搜索引擎“胎死腹中”,核心成员已回归谷歌麾下;Xcode 14导致应用体积大增|极客头条