ROS学习第十八节——launch文件(详细介绍)

news2024/10/7 12:21:18

1.概述

关于 launch 文件的使用已经不陌生了,之前就曾经介绍到:

一个程序中可能需要启动多个节点,比如:ROS 内置的小乌龟案例,如果要控制乌龟运动,要启动多个窗口,分别启动 roscore、乌龟界面节点、键盘控制节点。如果每次都调用 rosrun 逐一启动,显然效率低下,如何优化?

采用的优化策略便是使用roslaunch 命令集合 launch 文件启动管理节点,并且在后续教程中,也多次使用到了 launch 文件。

概念

launch 文件是一个 XML 格式的文件,可以启动本地和远程的多个节点,还可以在参数服务器中设置参数。

作用

简化节点的配置与启动,提高ROS程序的启动效率。

使用

以 turtlesim 为例演示

2.基本操作

ROS学习第四节——launch文件_小明在考研的博客-CSDN博客

3.基础标签

3.1launch文件标签之launch

<launch>标签是所有 launch 文件的根标签,充当其他标签的容器

1.属性

  • deprecated = "弃用声明"

    告知用户当前 launch 文件已经弃用

2.子级标签

所有其它标签都是launch的子级

3.2launch文件标签之node

<node>标签用于指定 ROS 节点,是最常见的标签,需要注意的是: roslaunch 命令不能保证按照 node 的声明顺序来启动节点(节点的启动是多进程的)

1.属性

  • 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

2.子级标签

  • env 环境变量设置

  • remap 重映射节点名称

  • rosparam 参数设置

  • param 参数设置

3.3launch文件标签之include

include标签用于将另一个 xml 格式的 launch 文件导入到当前文件

1.属性

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

    要包含的文件路径

  • ns="xxx" (可选)

    在指定命名空间导入文件

2.子级标签

  • env 环境变量设置

  • arg 将参数传递给被包含的文件

3.4launch文件标签之remap

用于话题重命名

1.属性

  • from="xxx"

    原始话题名称

  • to="yyy"

    目标名称

2.子级标签

列举一个案例解释该标签的使用

运行小乌龟程序以后,使用teleop_twist_keyboard.py功能包并不能控制小乌龟,是因为连个节点的话题是不一样的

 此出就可以使用该标签解决这个问题

<launch >
    <node pkg="turtlesim" type="turtlesim_node" name="t1">
        <remap from = "/turtle1/cmd_vel" to="/cmd_vel" />
    </node>
    <node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
</launch>

3.5 launch文件标签之param

<param>标签主要用于在参数服务器上设置参数,参数源可以在标签中通过 value 指定,也可以通过外部文件加载,在<node>标签中时,相当于私有命名空间。

1.属性

  • name="命名空间/参数名"

    参数名称,可以包含命名空间

  • value="xxx" (可选)

    定义参数值,如果此处省略,必须指定外部文件作为参数源

  • type="str | int | double | bool | yaml" (可选)

    指定参数类型,如果未指定,roslaunch 会尝试确定参数类型,规则如下:

    • 如果包含 '.' 的数字解析未浮点型,否则为整型

    • "true" 和 "false" 是 bool 值(不区分大小写)

    • 其他是字符串

2.子级标签

3.6launch文件标签之rosparam

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

1.属性

  • command="load | dump | delete" (可选,默认 load)

    加载、导出或删除参数

  • file="$(find xxxxx)/xxx/yyy...."

    加载或导出到的 yaml 文件

  • param="参数名称"

  • ns="命名空间" (可选)

2.子级标签

3.7launch文件标签之group

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

1.属性

  • ns="名称空间" (可选)

  • clear_params="true | false" (可选)

    启动前,是否删除组名称空间的所有参数(慎用....此功能危险)

2.子级标签

  • 除了launch 标签外的其他标签

3.8 launch文件标签之arg

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

1.属性

  • name="参数名称"

  • default="默认值" (可选)

  • value="数值" (可选)

    不可以与 default 并存

  • doc="描述"

    参数说明

2.子级标签

3.示例

  • launch文件传参语法实现,hello.lcaunch

    <launch>
        <arg name="xxx" />
        <param name="param" value="$(arg xxx)" />
    </launch>
    

命令行调用launch传参

roslaunch hello.launch xxx:=值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/443274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

月薪10k和40k的程序员差距有多大?

程序员的薪资一直是大家关注的焦点&#xff0c;相较于其他行业&#xff0c;程序员的高薪也是有目共睹的&#xff0c;而不同等级的程序员处理问题的方式与他们的薪资直接挂钩。 接下来就一起看一下月薪10k、20k、30k、40k的程序员面对问题都是怎么处理的吧&#xff01; 场景一 …

软件测试面试10分钟不到被赶出来,问的实在是太变态了...泪流满面

干了两年外包&#xff0c;本来想出来正儿八经找个互联网公司上班&#xff0c;没想到算法死在另一家厂子。 自从加入这家外包公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到11月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资…

产品经理必备数据分析技能

推荐教程:产品经理数据分析精讲&#xff08;一&#xff09; 渠道参数 需求背景&#xff1a;目前我们有很多线上线下的渠道去推广我们的产品&#xff0c;吸引用户了解我们的产品。 线上比较常见的如&#xff1a;百度、支付宝、抖音、小红书等&#xff1b;线下比较常见的如&…

android知识体系汇总

前言 对于一个程序员必须要经历的过程&#xff0c;初入职场你觉得能完成任务就行。 第一阶段可称为搬运工阶段&#xff0c;你不需要了解原理&#xff0c;只要做出来就行。浑浑噩噩可能就5年光景了&#xff0c;你发现你做过很多项目&#xff0c;感觉什么都可以。第二阶段可称为…

docker资源管理

目录 docker资源控制 CPU 资源控制 cgroups四大功能 设置CPU使用率上限 进行CPU压力测试 设置CPU资源占用比 设置容器绑定指定的CPU 对内存使用的限制 对磁盘IO配额控制&#xff08;blkio&#xff09;的限制 面试题 docker数据管理 数据卷 数据卷容器 端口映射 容…

C++变量和数据类型进阶

变量和数据类型进阶 有符号整数和无符号整数 short、int、long、long long 类型的变量&#xff0c;可以表示正数&#xff0c;也可以表示负数&#xff0c;称为有符号的整数类型。 unsigned short&#xff0c; unsigned int, unsigned long,unsigned long long类型的变量&…

linux部署Jenkins

随着软件开发需求及复杂度的不断提高&#xff0c;团队开发成员之间如何更好地协同工作以确保 软件开发的质量已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作&#xff0c;工具集成的效率明显高于人工操作&#xff1b;并且持续…

Vue 自定义指令

文章目录 Vue 自定义指令钩子钩子函数钩子函数参数 Vue 自定义指令 除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。 下面我们注册一个全局指令 v-focus, 该指令的功能是在页面加载时&#xff0c;元素获得焦点&#xff1a; 实例 <div id"…

C++——入门讲解(2)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年4月18日 内容&#xff1a;C入门内容讲解 目录 前言&#xff1a; 1.函数重载&#xff1a; 2.引用&#xff1a; 3.缺省参数&#xff1a; 结尾&#xff1a; 前言&#xff1a; 在上一篇博客中我们正式的踏入了对C板块的学…

jar包内容修改

准备材料及环境&#xff1a; 1.安装jdk&#xff0c;这里安装了1.8版本&#xff0c;可以自由选择&#xff1b; 2.准备demo.jar 3.复制一份demo.jar该扩展名为demo.zip 4.本次使用的是windows系统 修改jar包内容&#xff1a; 1.解压demo.zip到本文件夹&#xff0c;解压后的…

根文件系统类型

Linux启动时&#xff0c;第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统&#xff0c;则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此&#xff0c;一个系统中可以同时存在不同的文件系统。 不同的文件系统类型有不同的特点&#xff…

浅谈图像生成模型 Diffusion Model 原理

重磅推荐专栏&#xff1a; 《Transformers自然语言处理系列教程》 手把手带你深入实践Transformers&#xff0c;轻松构建属于自己的NLP智能应用&#xff01; 可不可以先 点击下方链接&#xff0c;求赞 点击 like ❥(^_-) 一下我的 Model 和 Space&#xff0c;再看后面的正文~~&…

深度学习基础入门篇[七]:常用归一化算法、层次归一化算法、归一化和标准化区别于联系、应用案例场景分析。

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

学习小程序基础内容之页面结构

一个小程序页面由四个文件组成&#xff0c;分别是&#xff1a; 文件类型 必需 作用 js 是 页面逻辑 wxml 是 页面结构 json 否 页面配置 wxss 否 页面样式表wxss 否 页面样式表[TOC] 但是我们创建一个页面&#xff0c;最快的方法是在app.json 里面&#xff0c;命名一个文件&a…

Win10输入法设置,详细方法在这里!

案例&#xff1a;win10输入法怎么设置 【想问问大家知道win10输入法该怎么设置吗&#xff1f;想更改一些默认的设置&#xff0c;不知道该如何操作&#xff0c;感谢&#xff01;】 Win10输入法是在Win10操作系统下使用的一种输入工具&#xff0c;是Win10系统的默认输入法&…

【Vim】 【初始篇】Vim之增删改查(idcf)中的改(c)

前言&#xff1a; 都说上古神器vim&#xff0c;可以提高效率&#xff0c;但是我觉得它更能增加乐趣&#xff0c;还能装B于无形。所以我准备开个新的板块用于记录vim使用中的骚操作。 VS2022 使用Vim 作为一个.net程序员&#xff0c;不可能完全脱离vs而使用专门vim编辑器&#x…

Linux文件系统 文件恢复

inode和block block 用于存储文件数据。 文件是存储在硬盘上的&#xff0c;硬盘的最小存储单位叫做“扇区”&#xff08;sector&#xff09;&#xff0c;每个扇区存储512字节。连续八个扇区组成一个"块"&#xff08;block&#xff09;&#xff0c;一个块是4K大小&…

极豆科技加入飞桨技术伙伴计划,共筑智能网联汽车新生态

近日&#xff0c;极豆科技正式加入百度飞桨技术伙伴计划&#xff0c;双方将共同努力&#xff0c;联合推进人工智能、大数据、云计算等前沿技术在智能网联汽车领域的应用落地&#xff0c;携手推动汽车产业变革&#xff0c;加速车企迈向全面数字化。 上海极豆科技有限公司‍‍‍‍…

Java并发基石_CAS原理实战01_CAS机制入门

快了&#xff0c;快要拿到offer了&#xff01;&#x1f339; 案例引入&#xff1a; 开发一个网站&#xff0c;对访问量进行统计&#xff0c;用户每发送一次请求&#xff0c;访问量就1&#xff0c;模拟有100个人同时访问&#xff0c;并且每个人对网站发起10次请求&#xff0c;所…

Nginx+Tomcat负载均衡、动静分离群集

Tomcat优化 Tomcat是java开发的应用程序&#xff0c;作用&#xff1a;作为web服务器处理html页面&#xff0c;但能力一般&#xff0c;更多的用于jsp、servlet容器处理java开发的jsp动态页面。 组织架构&#xff1a;连接器 、 容器 连接器&#xff1a;暴露端口&#xff0c;接…