ROS学习笔记11:launch启动文件(ROS常用组件)

2023-05-16

一、launch启动文件介绍:

        上节的海龟跟随实验,输入的指令比较繁杂,很容易输错命令。对于这种多节点任务,可以使用启动文件。

        启动文件是ROS中一种可以通过xml文件,同时启动多个节点并可以实现每个节点的各种配置的途径,它还可以自动启动ROS Master节点管理器,为多个节点的操作提供很大的便利。

二、launch启动文件语法:

        首先,给出一个简单的launch文件:

<launch>
    <node pkg="learning_topic" type="person_subscriber" name="talker" output="screen"/>
    <node pkg="learning_topic" type="person_publisher" name="listener" output="screen"/>
</launch>

1.基本元素:

(1)<launch>:

        XML文件必须包含一个根元素,launch文件中的根元素采用<launch>标签定义,文件
中的其他内容都必须包含在这个标签中。

<launch>
…
…
</launch>

(2)<node>:

        启动文件的核心是启动ROS节点,采用<node>标签定义,语法如下。

<node pkg="package-name" type="executable-name" name="node-name" />

         launch文件中启动一个节点需要三个属性:

1)pkg:节点所在的功能包名称

2)type:节点的可执行文件名称

3)name:节点运行时的名称(取代掉程序中初始化时的节点名)

        还可能用到其他属性:

1)output=“screen”:将节点的标准输出打印到终端屏幕,默认输出为日志文档

2)args=“arguments”:节点需要的输入参数

3)ns=“namespace”:命名空间,为节点内的相对名称添加命名空间前缀

4)respawn=“ture”:复位属性,该节点停止时,会自动重启,默认为false

5)required=“ture”:必要节点,当该节点终止时,launch文件中的其他节点也被终止

2.参数设置:

        为了方便设置和修改,launch文件支持参数设置的功能,类似于编程语言中的变量声明。关于参数设置的标签元素有两个:<param>和<arg>,两者的含义完全不同。

(1)<param>:

        parameter表示在ROS参数服务器里面的参数。在launch文件中通过<param>元素加载parameter,launch文件执行后,parameter就加载到ROS的参数服务器上了。使用方法如下,运行后,output_frame这个parameter的值就设置为odom。

<param name=“output_frame” value=“odom”/>

        rosparam使得我们能够存储并操作ROS 参数服务器上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。

1)列出当前的参数:rosparam list

2)显示某个参数值:rosparam get param_key

3)设置某个参数值:rosparam set param_key param_value

4)保存参数到文件:rosparam dump file_name

5)从文件读取参数:rosparam load file_name

6)删除参数:rosparam delete param_key

        当参数的数量很多时,通过launch文件设置参数就变得繁琐,可以通过<rosparam> 将一个
YAML文件中参数全部加载到ROS参数服务器中,需要设置command属性为”load”。

<rosparam file="$(find learning_launch)/config/param.yaml" command="load"/>

(2)<arg>:

         argument类似于launch文件内部的局部变量,仅限于launch文件使用,便于launch文件的重构,与ROS节点内部的实现没有关系,语法如下:

<arg name=“arg-name” default=“arg-value”/>

        launch文件中需要使用到argument时,可以使用如下方法调用:

<param name=“foo” value=“$(arg arg-name)”/>
<node name=“node” pkg=“package” type=“type” args=“(arg arg-name)”/>

3.重映射机制:

        launch文件中的<remap>标签可以实现重映射功能:

<remap from="/turtle1/cmd_vel" to="/cmd_vel"/>

4.嵌套复用:

        在复杂的系统中,launch文件往往有很多,这些launch文件之间也会存在依赖关系,如果要直接复用一个已有launch文件中的内容,可以使用<include>标签包含其他launch文件,这与C语言中的include是一致的:

<include file="$(find learning_launch)/launch/simple.launch" />

三、launch文件示例:

1.创建功能包:

2.功能包下创建config和launch文件夹:

 

3.launch文件夹下创建start_tf_demo_c++.launch文件:

 

<launch>

    <!--Turtlesim Node-->
    <node pkg="turtlesim" type="turtlesim_node" name="sim"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/>
    
    <node pkg="learning_tf" type="turtle_tf_broadcaster" args="/turtle1" name="turtle1_tf_broadcaster"/>
    <node pkg="learning_tf" type="turtle_tf_broadcaster" args="/turtle2" name="turtle2_tf_broadcaster"/>
    
    <node pkg="learning_tf" type="learning_tf_listener" name="listener"/>
    
</launch>

4.编译运行:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS学习笔记11:launch启动文件(ROS常用组件) 的相关文章

  • nodejs中http内置模块使用

    一 http模块 服务器获取数据原理 xff1a 前置知识点 xff1a IP地址 端口 http请求大致过程 先做粗略了解 xff0c 后面细讲 1 1 http核心模块的使用 四个步骤 xff1a 1 导入http模块 2 定义服务器程
  • nodeJS中npm简介与使用方法

    一 npm简介 npm 全称为 Node Package Manager xff0c 是一个基于 Node js 的包管理器 xff0c 也是整个 Node js 社区最流行 支持的第三方模块最多的包管理器 npm的初衷 xff1a Jav
  • nodeJS中利用第三方内置模块实现数字转大写功能

    一 案例制作 实现一个 xff0c 数字转大写的功能 如 xff1a 123 转 壹佰贰拾叁 在 nzh npm npmjs com 上查询npm文档引入第三方模块 找对应可能用上的包 xff0c 参考文档 xff0c 进行安装 xff0c
  • nodeJS编译环境下使用yarn工具的安装与使用方法

    一 yarn安装与使用 Yarn 是于 2016 年 10 月 由 Facebook Google Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 xff0c 旨在取代 npm 这种包管理工具 官网 xff1a Do
  • nodejs不支持ES6模块化规范的解决方案

    一 nodejs不支持ES6模块化规范的解决方案 在项目目录下新建src文件夹 xff0c src文件夹下新建m1 js模块和app js模块 xff1a m1 js模块中到处数据 xff1a export let name 61 34 n
  • yarn /nmp全局安装后,命令不生效

    yarn 全局安装后 xff0c 命令不生效 解决方法如下文章 nmp全局安装后 xff0c 命令不生效 xff08 通过链接查询解决办法 16条消息 安装Babel提示babel 不是内部或外部命令 xff0c 也不是可运行的程序 或批处
  • nodeJS中使用promise实现文件读取、写入的案例

    31 使用promise实现之前文件读取的案例 在引用util模块采用 xff1a 遵循常见的错误优先的回调风格的函数 xff08 也就是将 err value 61 gt 回调作为最后一个参数 xff09 xff0c 并返回一个返回 pr
  • nodeJS中对Promise模块介绍

    1 Promise 简介 Promise 是异步编程的一种解决方案 xff0c 比传统的解决方案 回调函数和事件 更合理和更强大 它由社区最早提出和实现 xff0c ES6 将其写进了语言标准 xff0c 统一了用法 xff0c 原生提供了
  • nodeJS中promise对象对结果简便输出办法(建议使用异步终极方案 async+await)

    一 promise对象利用all 方法实现简洁输出 const fs 61 require 34 fs 34 const path 61 require 34 path 34 const util 61 require 34 util 34
  • Http协议简介(底层原理讲解)

    一 Http协议简介 HTTP协议就是超文本传输协议 HyperText Transfer Protocol 通俗理解是浏览器和web服务器传输数据格式的协议 HTTP协议是一个应用层协议 HTTP协议是基于TCP协议的 xff0c 发送数
  • ThinkPHP代码生成器快速开发框架:ThinkPHP+VUE+APIdoc+Restful+Oauth2.0+代码生成器+系统基础功能(用户管理、菜单管理、角色管理、权限管理、字典管理、部门管理)

    Wedo快速开发框架 https github com weidong100 Wedo 根据数据表 xff0c 快速生成控制器 模型 VUE界面 接口文档 xff01 系统组成 xff1a PHP框架使用ThinkPHP5 xff0c 官网
  • Echarts3 主题设置

    前言 现在此感谢百度Echarts团队提供的这款优秀的开源产品 Echarts是一款原生js写的图表类库 xff0c Echarts能为我们打造一款数据可视化平台提供了良好的图表支持 在如今的前端开发中 xff0c 站点样式主题css 是要
  • 谷歌浏览器开发者工具的使用(掌握!)

    谷歌浏览器开发者工具的使用 xff08 掌握 xff01 xff09 元素 Elements 用于查看或修改HTML元素的属性 CSS属性 监听事件 断点等 控制台 Console 控制台一般用于执行一次性代码 查看JavaScript对象
  • nodeJS中ajax技术

    一 AJAX技术简介 AJAX 即 Asynchronous JavaScript and XML xff08 异步的 JavaScript 与 XML 技术 xff09 xff0c 指的是一套综合了多项技术的浏览器端网页开发技术 AJAX
  • 【无标题】

    一 使用ajax发送post请求 xff1a lt script gt let obtn 61 document getElementById 34 obtn 34 let odiv 61 document getElementById 3
  • jQuery 中 ajax 方法使用(测试get和post请求方式)

    一 jQuery 中 ajax 方法使用 async xff1a 默认设置下 xff0c 所有请求均为异步请求 contentType xff1a 发送信息至服务器时内容编码类型 xff0c 默认为 34 application x www
  • nodeJS中JWT身份认证使用方法与意义

    1 jwt认证机制的工作原理 xff1a 客户端登入提交账号密码 xff0c 服务器端验证通过将用户信息对象经过加密之后生成token字符串 xff0c 服务器进行第一次响应 xff0c 将生成的token字符串相应给客户端保存在local
  • 尚硅谷react课程-day01

    1 初识react 注意 1 引入库的顺序要先引入react核心库在引入react dom库 xff0c 最后引入babel库 2 script标签嵌套的JS代码的开始标签中要添加type 61 34 text babel 34 确保配置j
  • 尚硅谷react课程-day02

    目录 1 函数式组件 2 原型链 3 原型链查找机制 4 类式组件 5 利用react类定义虚拟dom方法对模块中HTML标签内容的修改 实现点击文字部分内容发生改变 5 类方法中的this指向问题 6 bind 方法 7 对于react三
  • 尚硅谷react课程-day03

    目录 1 对类组件中方法总结 xff1a 2 组件实例第二大属性prop方法 2 1 react中prop方法解构赋值 3 对porps传递的数据进行限制 4 类式组件中构造器与props关系 1 对类组件中方法总结 xff1a 1 cla

随机推荐

  • 配置树莓派4B+Ubuntu-22.04.2+Intel Realsense T265

    准备 xff1a 树莓派4b Ubuntu 22 04 2 T265 开始玩树莓派和T265时配置环境配置了半天 xff0c 各种报错 xff0c 在不熟悉这些的情况下想要配置一个稳定不报错的系统就只有不断的尝试 xff0c 再重装了10次
  • 节点基础~节点操作

    一 创建和添加节点 1 创建节点 document createElement 方法创建由tagName指定的 HTM元素 因为这些元素原先不存在 xff0c 是根据我们的需求动态生成的 xff0c 所以我们也称为动态创建元素节点 2 添加
  • workerman-chat启动后,前台无法访问

    去阿里云的安全组 xff0c 添加规则 xff1a 55151和7272 启动GatewayWorker的命令 xff0c 注意 xff1a 这个需要在linux服务器 xff0c 到api文件夹下运行 xff08 就是有think文件 x
  • 基于FreeRTOS实现温湿度识别

    实验说明 xff1a 本实验主要利用freeRTOS创建多任务实现温湿度检测与点亮LED xff0c 并在串口上输出相应温湿度和LED亮灭情况 xff1b 一 实验用材 1 DHT11温湿度传感器模块 2 stm32f103c8t6最小系统
  • 操作系统学习笔记

    文章目录 一 概述1 什么是操作系统2 操作系统的作用3 操作系统的发展史4 操作系统的分类5 现代操作系统的主要特点 二 进程控制1 进程的基本概念2 进程控制的基本概念3 同步和互斥4 进程通信5 线程和管程的基础概念6 死锁 三 处理
  • django注册功能密码加密存储

    1 编写模型类 class User models Model username 61 models CharField max length 61 16 verbose name 61 39 账号 39 password 61 model
  • Node.js【未完成】

    Node js node介绍和环境安装 Node js 简介 1 什么是 Node js Node js is a JavaScript runtime built on Chrome s V8 JavaScript engine Node
  • Pygame简介

    第一课Pygame简介 Pygame 是一个游戏库 xff0c 通常用于在 Python 中创建 2 D 游戏 它具有许多重要功能 xff0c 例如碰撞检测 声音和音乐 图形 事件系统等等 Pygame安装 在我们向您介绍任何 Pygame
  • Vue2---生命周期钩子

    生命周期钩子 所有生命周期钩子的 this 上下文将自动绑定至实例中 xff0c 因此你可以访问 data computed 和 methods 这意味着你不应该使用箭头函数来定义一个生命周期方法 会使this指向window 1 befo
  • MySQL--复合查询--内外链接--0422

    注 xff1a 为了方便查看 mysql语句会有突然的换行 xff0c 书写时请勿模仿 目录 1 单表查询回顾 显示工资最高的员工的名字和工作岗位 显示工资高于平均工资的员工信息 2 多表查询 比如需要查询雇员名字和所在部门编号及部门名字
  • 以符合人类阅读的方式打印php数组

    在程序开发过程中 xff1b 打印数据进行查看调试是非常频繁的 xff1b 如果没有一种易于阅读的样式那是相当痛苦的 xff1b 先定义一个数组 xff1b array 61 array 39 t0 39 61 gt 39 test0 39
  • 12.【openCV常用函数模板】

    opency常用关键字 1 头文件的引用2 命名空间的引用3 读入文件的引用4 处理图像的数据结构5 定义窗口的引用6 自定义窗口长宽度的引用7 展示窗口的引用8 窗口展示时间的引用9 清除窗口的引用10 举列子10 1代码展示 10 2效
  • 利用novnc登录绕过WFA

    0x00 简介 前端时间看了一个新闻说是一个安全人员研究使用webVNC来钓鱼绕过MFA多因子验证 xff0c 因为现在很多环境钓鱼抓到的账号密码 xff0c 在登录时候可能会要求输入安全码或者PIN马之类的东西 xff0c 学名叫做MFA
  • 图像分割损失函数OhemCELoss

    OhemCELoss函数简介 OhemCELoss函数 xff08 Online hard example mining cross entropy loss 的缩写 xff09 分割任务中的OhemCELoss函数 xff1a 其实就是分
  • 02_FreeRTOS内核实现---任务的定义与任务切换

    一 什么是任务 在多任务系统中 xff0c 我们根据功能的不同 xff0c 把整个系统分割成多个独立且无法返回的函数 xff0c 这种函数称之为任务 二 创建任务 1 定义任务栈 在多任务系统中 xff0c 每个任务都是独立的 xff0c
  • ROS学习笔记1:Ubuntu20.04系统安装图文讲解(双系统,机械硬盘)

    系列前言 xff1a 本人BIT机械专业大三学生 xff0c 可以说是计算机小白 近年来学校以咱们 智能制造与智能车辆班 为试验班对机械专业进行探索性课改 xff0c 加入了大量控制类课程 xff08 数据结构 xff0c ROS xff0
  • ROS学习笔记3:ROS架构(了解)

    笔记3不涉及实际操作 xff0c 主要是用自己的语言和思路简略整理了 ROS机器人开发实践 一书第2章内容 第一次看这一章的内容会有不知道在讲什么的感觉 xff0c 但这一章的内容确实对后续实践操作章节的理解有非常大的帮助 一 ROS架构
  • SLAM学习笔记2:SLAM的数学表述

    1 SLAM问题 xff1a 在了解了SLAM中各个模块的组成和主要功能后 xff0c 我们将上升到理性层次 xff0c 用数学语言来描述SLAM过程 现在假设由无人车搭载传感器 对于传感器来说 xff0c 虽然它的运动是时间连续的 xff
  • ROS学习笔记10:TF坐标变换(ROS常用组件)

    前言 xff1a 机器人本体和机器人的工作环境中往往存在大量的组件元素 xff0c 在机器人设计和应用中会涉及不同组件的位置和姿态 xff0c 这就需要引入坐标系和坐标变换的概念 一 机器人中空间描述和变换 xff1a 1 位置描述 xff
  • ROS学习笔记11:launch启动文件(ROS常用组件)

    一 launch启动文件介绍 xff1a 上节的海龟跟随实验 xff0c 输入的指令比较繁杂 xff0c 很容易输错命令 对于这种多节点任务 xff0c 可以使用启动文件 启动文件是ROS中一种可以通过xml文件 xff0c 同时启动多个节