当前位置: 首页 > news >正文

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

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:=值

相关文章:

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

1.概述 关于 launch 文件的使用已经不陌生了&#xff0c;之前就曾经介绍到: 一个程序中可能需要启动多个节点&#xff0c;比如:ROS 内置的小乌龟案例&#xff0c;如果要控制乌龟运动&#xff0c;要启动多个窗口&#xff0c;分别启动 roscore、乌龟界面节点、键盘控制节点。如果…...

javaweb在校大学生贷款管理系统ns08a9

1系统主要实现&#xff1a;学生注册、填写详细资料、申请贷款、学校审核、银行审核、贷后管理等功能&#xff0c; (1) 学生注册&#xff1a;学生通过注册用户&#xff0c;提交自己的详细个人资料&#xff0c;考虑现实应用中的安全性&#xff0c;资料提交后不可修改&#xff1b;…...

分布式之搜索解决方案es

一 ES初识 1.1 概述 ElasticSearch&#xff1a;是基于 Lucene 的 Restful 的分布式实时全文搜索引擎&#xff0c;每个字段都被索引并可被搜索&#xff0c;可以快速存储、搜索、分析海量的数据。是ELK的一个组成,是一个产品&#xff0c;而且是非常完善的产品&#xff0c;ELK代表…...

CSDN 编程竞赛四十六期题解

地址&#xff1a;CSDN 编程竞赛四十六期 思路&#xff1a;通过找规律可以知道&#xff0c;在周期第一个位置的数的下标都有一个规律&#xff1a;除以三的余数为 1 。而第二个位置&#xff0c;第三个位置的余数分别为 2 &#xff0c; 0 。 因此可以开一个长度为 3 的总和数组&am…...

Linux——进程

进程介绍及其使用 1、认识冯诺依曼体系2、操作系统如何理解操作系统对硬件做管理&#xff1f; 3、进程如何创建进程进程状态 1、认识冯诺依曼体系 在计算机的硬件结构中&#xff0c;有着图灵和冯诺依曼俩位举足轻重的人物。对于计算机的发展来说有着十分重要的意义。冯诺依曼结…...

计及氢能的综合能源优化调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

基于Bert的知识库智能问答系统

项目完整地址&#xff1a; 可以先看一下Bert的介绍。 Bert简单介绍 一.系统流程介绍。 知识库是指存储大量有组织、有结构的知识和信息的仓库。这些知识和信息被存储为实体和实体关系的形式&#xff0c;通常用于支持智能问答系统。在一个知识库中&#xff0c;每个句子通常来说…...

libapparmor非默认目录构建和安装

在AppArmor零知识学习五、源码构建&#xff08;2&#xff09;中&#xff0c;详细介绍了libapparmor的构建步骤&#xff0c;但那完全使用的是官网给出的默认参数。如果需要将目标文件生成到指定目录而非默认的/usr&#xff0c;则需要进行一些修改&#xff0c;本文就来详述如何进…...

2023-04-14 算法面试中常见的查找表问题

2023-04-14 算法面试中常见的查找表问题 1 Set的使用 LeetCode349号问题&#xff1a;两个数组的交集 给定两个数组&#xff0c;编写一个函数来计算它们的交集。示例 1:输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2] 示例 2:输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出:…...

从TOP25榜单,看半导体之变

据SIA报告显示&#xff0c;2022年全球半导体销售额创历史新高达到5740亿美元。尽管2022年下半年&#xff0c;半导体市场出现了周期性的低迷&#xff0c;但其全年的销售额相较2021年增长了3.3%。 近日&#xff0c;市调机构Gartner发布了全球以及中国大陆TOP25名半导体厂商的排名…...

[异常]java常见异常

Java.io.NullPointerException null 空的&#xff0c;不存在的NullPointer 空指针 空指针异常&#xff0c;该异常出现在我们操作某个对象的属性或方法时&#xff0c;如果该对象是null时引发。 String str null; str.length();//空指针异常 上述代码中引用类型变量str的值为…...

gpt4all保姆级使用教程! 不用联网! 本地就能跑的GPT

原文&#xff1a;gpt4all保姆级使用教程! 不用联网! 本地就能跑的GPT 什么是gpt4all gpt4all是在大量干净数据上训练的一个开源聊天机器人的生态系统。它不用科学上网&#xff01;甚至可以不联网&#xff01;本地就能用&#xff0c;像这样↓&#xff1a; 如何使用&#xff…...

AcWing语法基础班 1.1 变量、输入输出、表达式和顺序语句

预备知识 首先先来了解一下最简单的C代码。 本文的所有代码操作均在AcWing的AC Editor中 #include <iostream>using namespace std;int main(){cout << "Hello World" << endl;return 0; }然后使用编译&#xff08;点击调试&#xff0c;再点击运…...

DC:5靶机通关详解

信息收集 漏洞发现 扫个目录 发现存在footer.php 查看,发现好像没什么用 参考他人wp得知thankyou.php会包含footer.php 可以通过传参来包含别的文件 但是我们不知道参数,这里用fuzz来跑参数 这里用wfuzz的时候报错了 解决方法如下 卸载 sudo apt --purge remove python3-pycu…...

【测试开发篇9】Junit框架

目录 一、认识Junit框架 Junit和Selenium的关系是什么 导入Junit框架common-io包 二、Junit框架的使用 2.1Junit有哪些常用注解 2.1.1Test注解 2.1.2BeforeEach 2.1.3BeforeAll 2.1.4AfterAll 2.1.5AfterEach 2.2Junit的断言 Assertions.assertEquals(期待值&#…...

《Spring MVC》 第五章 实现RESTful

前言 教授大家如何实现RESTful 1、什么是RESTful resource Representational State Transfer 的缩写&#xff0c;就是“表现层资源表述状态转移” 1.1、Resource&#xff08;资源&#xff09; web应用的文件&#xff0c;uri定位 1.2、Representation&#xff08;资源的描…...

Last Week in Milvus

What’s New Core Updates #23353 在 2.3 版本中&#xff0c; milvus 和 knowhere 引擎会移除了 Annoy 索引。Annoy 索引在性能和召回率方面均不如 IVF、HNSW 等索引&#xff0c;维护成本比较高所以经过讨论决定在 2.3 中移出 Annoy 索引的支持&#xff0c;有使用的用户要注意…...

Cursor IDE一个GPT4人工智能自动程序编辑器

让我们来了解一下Cursor IDE是什么。Cursor IDE是一个新型的编程工具&#xff0c;可以通过它生成、编辑以及与人工智能进行交互分析代码。官方网站上的三个单词“Build Software. Fast.”&#xff08;快速构建软件&#xff09;以及“Write, edit, and chat about your code wit…...

PPO算法-理论篇

1. Policy Gradient 【李宏毅深度强化学习笔记】1、策略梯度方法&#xff08;Policy Gradient&#xff09; 李宏毅深度强化学习-B站 2. PPO PPO 算法 PPO算法更新过程如下&#xff1a; 初始化policy参数 θ 0 \theta^0 θ0在每一步迭代中&#xff1a; 使用 θ k \theta^k …...

【现货】AP6317 同步3A锂电充电芯片 带短温度保护

AP6317是一款面向5V交流适配器的3A锂 离子电池充电器。它是采用800KHz固定频率的同 步降压型转换器&#xff0c;因此具有高达92%以上的充电效 率&#xff0c;自身发热量极小。 包括完整的充电终止电路、自动再充 电和一个精确度达1%的4.2V预设充电电压&#xff0c;内 部集成了防…...

从SolidWorks到Geant4仿真:我的第一个粒子探测器CAD模型导入全记录(含CADMesh避坑点)

从SolidWorks到Geant4仿真&#xff1a;我的第一个粒子探测器CAD模型导入全记录&#xff08;含CADMesh避坑点&#xff09; 作为一名刚接触粒子探测器仿真的研究生&#xff0c;我花了整整两周时间才成功将SolidWorks设计的模型导入Geant4进行模拟。这个过程远比想象中复杂&#x…...

Netgear路由器终极救援指南:用nmrpflash免费快速修复变砖设备

Netgear路由器终极救援指南&#xff1a;用nmrpflash免费快速修复变砖设备 【免费下载链接】nmrpflash Netgear Unbrick Utility 项目地址: https://gitcode.com/gh_mirrors/nmr/nmrpflash 当你的Netgear路由器在固件升级过程中意外断电&#xff0c;或者刷入错误固件导致…...

NS-USBLoader终极指南:3步搞定Switch游戏管理与RCM注入的完整教程

NS-USBLoader终极指南&#xff1a;3步搞定Switch游戏管理与RCM注入的完整教程 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址: https://gitcode.c…...

基于Arduino与TSL2561的光照度测量系统:从硬件连接到软件调试

1. 项目概述&#xff1a;从园艺需求到嵌入式光测量方案最近在折腾一个园艺相关的项目&#xff0c;需要量化评估不同覆盖材料&#xff08;比如遮阳网、塑料薄膜&#xff09;对光线透射率的影响。说白了&#xff0c;就是想精确知道&#xff0c;盖上一层材料后&#xff0c;底下还能…...

Windows Cleaner终极指南:三步告别C盘爆红,让电脑运行如飞!

Windows Cleaner终极指南&#xff1a;三步告别C盘爆红&#xff0c;让电脑运行如飞&#xff01; 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为Windows系统…...

从分布式到可分发:大规模软件制品分发架构设计与实践

1. 项目概述&#xff1a;从“分布式”到“可分发”的思维跃迁最近在梳理团队内部的基础设施时&#xff0c;又翻出了distr-sh/distr这个项目。说实话&#xff0c;第一次看到这个仓库名&#xff0c;我下意识地把它归类为又一个“分布式系统”框架。但当我真正点进去&#xff0c;花…...

UVa 366 Cutting Up

题目描述 拼布者经常需要将布料切割成 111 \times 111 的小正方形。他们有一种特殊工具&#xff08;旋转切割刀&#xff09;&#xff0c;可以一次切割多层布料&#xff0c;切割层数的上限由布料类型决定&#xff08;题目输入的第一个参数 KKK&#xff09;。切割时&#xff0c;无…...

dotai:将AI大模型无缝集成到Shell终端的智能助手工具

1. 项目概述&#xff1a;当AI遇上你的终端如果你是一个重度命令行用户&#xff0c;每天在终端里敲击着ls、cd、git commit这些命令&#xff0c;有没有那么一瞬间&#xff0c;希望有个助手能帮你自动补全、解释命令&#xff0c;甚至直接帮你写出复杂的管道操作&#xff1f;dotai…...

基于Claude API构建AI代码生成工具:从API封装到工程化实践

1. 项目概述与核心价值最近在开发者社区里&#xff0c;一个名为ashish200729/claude-code-source-code的项目标题引起了不小的讨论。乍一看&#xff0c;这个标题很容易让人产生误解&#xff0c;以为这是某个知名AI模型的源代码被公开了。但作为一名在软件开发和开源领域摸爬滚打…...

CircuitPython开发进阶:从库文档解读到内存优化与异步编程实战

1. 从“能用”到“精通”&#xff1a;为什么你需要深入理解CircuitPython库文档刚接触CircuitPython时&#xff0c;我们往往是从复制粘贴示例代码开始的。这没什么问题&#xff0c;快速让一个LED闪烁起来&#xff0c;或者让传感器读出数据&#xff0c;那种即时反馈的成就感是驱…...