ROS中的roslaunch命令和launch文件(ROS入门学习笔记四)
ROS中的基本对象和概念学习笔记(ROS入门学习笔记一)
ROS中创建工作区和包(ROS入门学习笔记二)
ROS功能包中CMakeLists.txt的说明(ROS入门学习笔记三)
1.roslaunch命令
我们知道,rosrun命令用于运行一个ROS节点,这个在简单程序中使用比较方便。但是在规模比较大的程序中,常常有几个或者几十个节点,这些节点之间彼此互有联系,协同达到软件正确执行的目的。这时候再使用rosrun命令的话,就会比较麻烦。此时,roslaunch命令闪亮登场了,它可以运行多个节点。并且roslaunch命令在运行节点时,还可以附加一些ROS命令选项,比如修改参数或节点的名称,设置节点的命名空间,设置ROS_ROOT及ROS_PACKAGE_PATH,以及环境变量修改等选项的ROS命令。
roslaunch命令的使用,需要先创建一个XML格式的xxx.launch文件,将要运行的节点以及系统中相关参数设置信息写在这个launch文件中,然后执行这个launch文件就可以了。【这里可以理解为launch文件就是一个脚本文件,要执行的操作都写在脚本文件中,执行脚本文件就OK了。】
roslaunch命令执行格式:
roslaunch 功能包名称 launch文件 [参数设置]
这里roslaunch命令会在对应的功能包中找到名称匹配的launch文件,并执行这个launch文件。如果设置了参数的话,会将参数传入到launch文件中赋给对应的参数。
例如,执行vins_estimator功能包中的euroc.launch文件,命令如下。
roslaunch vins_estimator euroc.launch
如果在launch文件所在路径下执行该launch文件的话,就不需要加功能包名称了,因为此时是能直接找到launch文件的。
如果运行launch文件时需要设置参数,如下所示。arg为参数名称,value为给参数的赋值。
roslaunch my_file.launch arg:=value
注意:在执行roslaunch命令时,一定要先执行source命令:source ../devel/setup.bash命令,否则找不到对应的包名称。
2.launch文件
一般情况下,使用launch文件时,要在工程中创建一个launch目录,并在launch目录下创建xxx.launch文件。
先拿一个VINS-Mono中的euroc.launch文件看看launch文件长什么样子。
<launch><arg name="config_path" default = "$(find feature_tracker)/../config/euroc/euroc_config.yaml" /><arg name="vins_path" default = "$(find feature_tracker)/../config/../" /><node name="feature_tracker" pkg="feature_tracker" type="feature_tracker" output="log"><param name="config_file" type="string" value="$(arg config_path)" /><param name="vins_folder" type="string" value="$(arg vins_path)" /></node><node name="vins_estimator" pkg="vins_estimator" type="vins_estimator" output="screen"><param name="config_file" type="string" value="$(arg config_path)" /><param name="vins_folder" type="string" value="$(arg vins_path)" /></node><node name="pose_graph" pkg="pose_graph" type="pose_graph" output="screen"><param name="config_file" type="string" value="$(arg config_path)" /><param name="visualization_shift_x" type="int" value="0" /><param name="visualization_shift_y" type="int" value="0" /><param name="skip_cnt" type="int" value="0" /><param name="skip_dis" type="double" value="0" /></node></launch>
其实我们已经知道launch文件是个XML格式的文件,而XML格式文件是由各种标签标识组成的。因此,要理解并且熟练编写launch文件就需要熟悉launch文件中的各个标签所包含的意思以及其书写形式。
以上边的euroc.launch为例,在<launch>标签中,描述了使用roslaunch命令运行节点所需的标签。<arg>描述了系统运行中所需要的参数。<node>描述了roslaunch运行的节点,选项包括pkg、type和name。
这里的<arg>中的name表示参数的名称,default表示参数默认的值。如果需要设置别的值,可以在roslaunch命令中加入节点名。
<node>中pkg、type、name字段含义如下:
pkg 功能包名称。
type 实际运行的节点的名称(节点名)。
name 与上述type对应的节点被运行时,起的名称(运行名)。一般情况下使用与type相同的名称,但可以根据需要,在运行时更改名称。
launch文件中其他
<launch> 指roslaunch语句的开始和结束。
<node> 这是对于节点运行的标签。您可以更改功能包、节点名称和执行名称。
<machine> 可以设置运行该节点的PC的名称、address、ros-root和ros-package-path。
<include> 您可以加载属于同一个功能包或不同的功能包的另一个launch,并将其作为一个launch文件来运行。
<remap> 可以更改节点名称、话题名称等等,在节点中用到的ROS变量的名称。例如:<remap from="chatter" to="hello"/>
<env> 设置环境变量,如路径和IP(很少使用)。
<param> 设置参数名称、类型、值等。
<rosparam> 可以像rosparam命令一样,查看和修改load、dump和delete等参数信息。
<group> 用于分组正在运行的节点。
<test> 用于测试节点。类似于<node>,但是有可以用于测试的选项。
<arg> 可以在launch文件中定义一个变量,以便在像下面这样运行时更改参数。
参考文档:roslaunch/XML
ROS中的roslaunch命令和launch文件(ROS入门学习笔记四)相关推荐
- python中shift函数rolling_Pandas Shift函数的基础入门学习笔记
pandas shift函数基础 在使用pandas的过程中,有时会遇到shift函数,今天就一起来彻底学习下.先来看看帮助文档是怎么说的: >>> import pandas &g ...
- ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令
ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令 ROS是什么 ROS文件系统 文件系统工具:rospack.roscd.rosls 创建ROS 软件包 catkin是什么 创建和构建一 ...
- ROS中自定义带有header的消息文件
ROS中自定义带有header的消息文件 为什么需要header? 在发布端发布的数据或者在订阅端订阅数据时,数据通常是连续发布或者被订阅的,这些信息没有特定的标识,搞得我们发和收了很多消息,都不知道 ...
- “不能初始化PHOTOSHOP,因为该文件已锁定.在WINDOWS资源管理器中使用属性命令来解锁文件”的解决办法
最近photoshopCS3启动的时候弹出"不能初始化PHOTOSHOP,因为该文件已锁定.在WINDOWS资源管理器中使用属性命令来解锁文件"而被逼关闭,重装无效,很不爽啊. 然 ...
- Linux使用命令移动文件夹,linux虚拟机中如何用命令来移动文件夹
对于新手来说,经常会碰到如何移动linux系统中的文件夹之类的问题,这些命令都很简单,关键在于熟能生巧,接下来跟着小编一起学习一下如何在装有linux的虚拟机中进行文件夹的移动. linux虚拟机中如 ...
- ROS学习笔记四:理解ROS节点
ROS学习笔记四:理解ROS节点 本节主要介绍ROS图形概念,讨论ROS命令行工具roscore.rosnode和rosrun. 要求 要求已经在Linux系统中安装一个学习用的ros软件包例子: s ...
- webpack入门学习笔记10 —— 在项目中使用图片资源
1. 写在前面 在前端项目中,图片是必不可少的一种资源.在使用图片的时候,我们可以有以下几种方式: 在 .html 文件中,通过 <img src="" alt=" ...
- nc65命令执行漏洞上传webshell学习笔记
nc65命令执行漏洞上传webshell学习笔记 免责声明: 此文为本人学习笔记,不承担任何法律责任. 访问者在从事与本站相关的所有⾏为(包括但不限于访问浏览.利⽤.转载.宣传介绍)时,必须以善意且谨 ...
- Altium Designer入门学习笔记4:PCB设计中各层的含义
Altium Designer入门学习笔记4:PCB设计中各层的含义 阻焊层:solder mask,是指板子上要上绿油的部分:因为它是负片输出,所以实际上有solder mask的部分实际效果并不上 ...
最新文章
- UIView Animation
- PAT(甲级)2019年春季考试 7-4 Structure of a Binary Tree
- Grafana 7.0 发布:改进的界面、新的插件平台和可视化等
- SAP HUM 如何将HU里的物料号换成另外一个物料号?
- Alternative PHP Cache ( APC )
- JDK 6中新增的Java Console类功能概览
- python eval函数格式_Python函数中eval函数知识点
- Java项目模拟QQ群聊和私聊(网络编程+多线程)
- 七种武器——.NET工程师求职面试必杀技(转)
- Python笔记9-----不等长列表转化成DataFrame
- 常喝酒的人,为什么会出现手抖的现象?
- 罗永浩回应做主播赚钱还债;360 否认裁员;Kubernetes 1.18 版本发布| 极客头条
- 菜单的无限极分类实现
- 篮球30秒可控计时器
- HTTP 和 HTTPS 有什么区别?
- 配电管理地理信息系统解决方案
- Model of an Electric Arc for Circuit Analysis(翻译)
- 文字识别软件测试初学者,【只要10分钟 快速掌握文字识别】
- Aspose.Slides for java 22.9最新版 官网最新
- 基于混沌系统的文本加密算法研究(二)——经典混沌映射
热门文章
- 利用计算机模拟函数图像,计算机模拟实验在教学中的应用论文(2)
- 中国芯片的突破带来压力,美国芯片龙头将再度裁员,或已后悔不迭
- linux常用命令整理-02-服务器-系统-内存-磁盘-优化
- 【企业微信急速救心丸】(一)第三方应用开发 - Java整合企业微信回调
- 用华为ENSP做一个关于防火墙的小实验-华为eNSP怎样调出右侧接口列表
- 基于微信小程序的‘香草屋’饮料奶茶点单小程序
- STEAM游戏高主频i9-12900k 搭建CS:GO服务器
- 在linux服务器上用headless firefox打开中文网页,字体乱码问题
- 在UBUNTU LINUX下搭建 ANDROID开发
- [回溯法] 和尚挑水问题-华为笔试