ROS 学习应用篇(九)ROS中launch文件的实现

launch文件就好比一个封装好的命令库,我们按照在终端中输入的代码指令,全部按照launch语言格式封装在一个launch文件中,这样以后执行的时候,就可以不用开很多终端,一条一条输入代码指令。

lauch文件的语言风格很想我之前学爬虫的时候网页代码的风格。(rosmaster也不用单开了。)

launch

<launch>根元素用<launch>标签来定义<launch>

node

<node node中封装的时是启动节点/ >

语法:

<node pkg="package-name(功能包的名字)" type="executable-name(执行器名字。其实就是代码中定义的节点名字,之前我们在CMakeList中把cpp文件做成一个可执行文件,就是那个名字,py的程序就是多个.py)" name="(这里是,该节点运行后的节点名字,其实就终端执行时,__name):=新定义的节点的名字"/>

其余可选属性

以下可选属性是和name、pkg、type同级的,均用空格间隔即可。

output:控制打印当前节点信息到当前终端中
respawn:控制当节点出错是,是否重启节点的
required:控制某个节点是否一定要启动的
ns:全称是name space,给节点加命名空间前缀的,避免节点见的冲突。
args:给节点输入参数的。C++用这个,py用的param送入value值

C++                                                                               Python

参数设置

这一段特别的是在向一个节点送入参数的视乎,node最后没有/,在param语句结束后要加一行</node>

param

用于设置ROS系统中运行中的参数,并存在参数服务器中。

<param name="output_frame" value="odom" />

封装在节点内的参数,就在名称前多出来节点名那一段的命名空间,比如说turtle_name1前面有节点命名。

rosparam

用于加载参数文件中的多个参数。

<rosparam file="param.yaml" command="load" ns="params" />

arg

用于launch文件内部的局部变量,仅限于launch文件使用。注意它和全局参数param的区别,其实就是全局变量和局部变量的区别。定义方法如下:

<arg name="arg-name" default="arg-value"/>

哪么如何调用这个arg定义的参数呢。既然说了是launch文件内部的参数,自然也智能在文件内部调用。

<param name="foo" value="$(arg arg-name)" />

<node name="node" pkg="package" type="type" args="$(arg arg-name)" / >

remap

重映射,就是改那些带有/的名字,也就是那些消息,服务的名字,这通常使用在节点输出通讯联络节点变更导致的映射关系发生变化的情况下。from:原名,同:映射之后的命名。

<remap form="turtlebot/cmd_vel" to="/cmd_vel" />

include

像c++ 语言一样引入其他launch文件。

<include file="$(dirname)/other.launch" />

更多标签可见wiki.ros.org/roslaunch/XML

编译

roslaunch learning_launch simple.launch

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

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

相关文章

shell 拒绝恶意连接脚本 centos7.x拒绝恶意连接脚本

1. crontab -l 脚本频率&#xff1a; */2 * * * * /bin/bash /home/shell/deny.sh 2. 脚本&#xff1a; rm -rf /home/shell/ip_list cat /var/log/secure | grep "Failed password for" | awk {print$(NF-3)} | sort | uniq -c > /home/shell/ip_list #cat /va…

用Postman发送xml数据

启动Postman&#xff1a; 点击左上角的“New”&#xff0c;在弹出窗中选择HTTP&#xff1a; 选择POST方法&#xff1a; 点击Body&#xff1a; 选择raw&#xff1a; 在右侧的下拉列表中选择XML&#xff1a; 在下面的输入框中输入或者从其它地方拷贝XML文本&#xff1a;…

websocket学习

写在前面 新公司用到了websocket技术&#xff0c;所以这里学习下。 1&#xff1a;Java原生 1.1&#xff1a;maven <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.5.3</ver…

【高并发内存池】第一篇 项目简介及定长内存池

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

Android 实现三维空间坐标系(WebView与JS交互,支持多条曲线,可设置坐标轴翻转等)

全部代码已经上传&#xff0c;点击上方进行下载 支持多条曲线的绘制&#xff0c;可旋转拖动放大缩小 1.布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/…

plantuml最原始的主题如何设置

在startuml下一行添加 skin rose startuml skin rose:Hello world; :This is defined on several **lines**;enduml 效果如下&#xff1a; plantuml官网地址如下&#xff1a; ​​​​​​使用简单的文字描述画UML图的开源工具。轻松从简单的文字说明创建UML图。也有许多种可…

一键云端,AList 整合多网盘,轻松管理文件多元共享!

hello&#xff0c;我是小索奇&#xff0c;本篇教大家如何使用AList实现网盘挂载 可能还是有小伙伴不懂&#xff0c;所以简单介绍一下哈 AList 是一款强大的文件管理工具&#xff0c;为用户提供了将多种云存储服务和文件共享协议集成在一个平台上的便利性。它的独特之处在于&am…

赤壁

《赤壁》 作者&#xff0f;罗光记 烽火燃尽几多愁&#xff0c; 赤壁一战尽神州。 江山如画英雄梦&#xff0c; 青史长河泪满头。 战鼓擂破黄沙地&#xff0c; 剑气冲云碧空流。 万里长歌断肠夜&#xff0c; 古今多少壮心愁。

Unity中Shader矩阵的转置矩阵

文章目录 前言一、转置的表示二、转置矩阵三、转置矩阵的总结1、(A^T^)^T^ A2、(A B)^T^ A^T^ B^T^3、(kA)^T^ kA^T^ (k为实数)4、(AB)^T^ B^T^A^T^5、如果 A A^T^ 则称A为对称矩阵6、如果 AA^T^ I(单位矩阵)&#xff0c;则称 A 为正交矩阵&#xff0c;同时 A^T^ A^-1…

js制作九宫格抽奖功能

HTML代码&#xff1a; <div id"lottery"><div class"lottery-item">1</div><div class"lottery-item">2</div><div class"lottery-item">3</div><div class"lottery-item"&g…

【Flutter】设计原则(2)深入解析 SOLID 原则的应用

【Flutter】设计原则(2)深入解析 SOLID 原则的应用 文章目录 一、前言二、SOLID原则三、在 Flutter 中应用单一职责原则1. 专注单一功能的 Widget2. 提高代码可维护性四、在 Flutter 中应用开闭原则1. 利用多态和基类实现可扩展的 Widget2. 增强应用的可扩展性和灵活性五、在…

Elasticsearch同义词最佳实践

毫无疑问&#xff0c;使用同义词是搜索工程师工具箱中最重要的技巧之一。尽管新手有时会低估同义词的重要性&#xff0c;但几乎所有搜索系统都离不开它。与此同时&#xff0c;人们有时仍会低估与使用同义词相关的一些复杂情况和微妙情形&#xff0c;甚至高级用户也不例外。 用好…

复杂数据统计与R语言程序设计实验二

1、创建一个对象&#xff0c;并进行数据类型的转换、判别等操作&#xff0c;步骤如下。 ①使用命令清空工作空间&#xff0c;创建一个对象x&#xff0c;内含元素为序列&#xff1a;1&#xff0c;3&#xff0c;5&#xff0c;6&#xff0c;8。 ②判断对象x是否为数值型数据。 ③…

OpenGL 的学习之路-4(变换)

三大变换&#xff1a;平移、缩放、旋转&#xff08;通过这三种变换&#xff0c;可以将图像移动到任意位置&#xff09; 其实&#xff0c;这背后对应的数学在 闫令琪 图形学课程 中有过一些了解&#xff0c;所以&#xff0c;理解起来也不觉得很困难。看程序吧。 1.画三角形&am…

OpenCV入门2——图像视频的加载与展示一些API

文章目录 题目OpenCV创建显示窗口OpenCV加载显示图片题目 OpenCV保存文件利用OpenCV从摄像头采集视频从多媒体文件中读取视频帧将视频数据录制成多媒体文件OpenCV控制鼠标关于[np.uint8](https://stackoverflow.com/questions/68387192/what-is-np-uint8) OpenCV中的TrackBar控…

初试 jmeter做压力测试

一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试&#xff0c;他可以帮助我们发现系统中的瓶颈问题&#xff0c;减少发布到生产环境后出问题的几率&#xff1b;预估系统的承载能力&#xff0c;使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步…

mac无法向移动硬盘拷贝文件怎么解决?不能读取移动硬盘文件怎么解决

有时候我们在使用mac的时候&#xff0c;会遇到一些问题&#xff0c;比如无法向移动硬盘拷贝文件或者不能读取移动硬盘文件。这些问题会给我们的工作和生活带来不便&#xff0c;所以我们需要找到原因和解决办法。本文将为你介绍mac无法向移动硬盘拷贝文件怎么回事&#xff0c;以…

CTFSHOW 文件上传

web151 JS前端绕过 直接上传 png的图片马 然后抓包修改为php asystem("ls /var/www/html"); asystem("cat /var/www/html/flag.php"); web152 和151一样的方法也可以实现上传 asystem("ls /var/www/html"); asystem("cat /var/www/html…

Anaconda的安装使用及pycharm设置conda虚拟环境

1.python和包以及anaconda的概念关系 python “工人” 包 “工具” 环境 “工具箱” anaconda “放很多工具箱的大箱子” python等于工人这个好理解&#xff0c;就是编程需要用python来实现对应功能&#xff0c;即工人完成某项工程。 包等于工具&#xff0c;就是工人…

YOLOv8-Seg改进:轻量级Backbone改进 | VanillaNet极简神经网络模型 | 华为诺亚2023

🚀🚀🚀本文改进:一种极简的神经网络模型 VanillaNet,支持vanillanet_5, vanillanet_6, vanillanet_7, vanillanet_8, vanillanet_9, vanillanet_10, vanillanet_11等版本,相比较yolov8-seg各个版本如下: layersparametersgradientsGFLOPsvanillanet_521230017523