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入门学习笔记四)相关推荐

  1. python中shift函数rolling_Pandas Shift函数的基础入门学习笔记

    pandas shift函数基础 在使用pandas的过程中,有时会遇到shift函数,今天就一起来彻底学习下.先来看看帮助文档是怎么说的: >>> import pandas &g ...

  2. ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令

    ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令 ROS是什么 ROS文件系统 文件系统工具:rospack.roscd.rosls 创建ROS 软件包 catkin是什么 创建和构建一 ...

  3. ROS中自定义带有header的消息文件

    ROS中自定义带有header的消息文件 为什么需要header? 在发布端发布的数据或者在订阅端订阅数据时,数据通常是连续发布或者被订阅的,这些信息没有特定的标识,搞得我们发和收了很多消息,都不知道 ...

  4. “不能初始化PHOTOSHOP,因为该文件已锁定.在WINDOWS资源管理器中使用属性命令来解锁文件”的解决办法

    最近photoshopCS3启动的时候弹出"不能初始化PHOTOSHOP,因为该文件已锁定.在WINDOWS资源管理器中使用属性命令来解锁文件"而被逼关闭,重装无效,很不爽啊. 然 ...

  5. Linux使用命令移动文件夹,linux虚拟机中如何用命令来移动文件夹

    对于新手来说,经常会碰到如何移动linux系统中的文件夹之类的问题,这些命令都很简单,关键在于熟能生巧,接下来跟着小编一起学习一下如何在装有linux的虚拟机中进行文件夹的移动. linux虚拟机中如 ...

  6. ROS学习笔记四:理解ROS节点

    ROS学习笔记四:理解ROS节点 本节主要介绍ROS图形概念,讨论ROS命令行工具roscore.rosnode和rosrun. 要求 要求已经在Linux系统中安装一个学习用的ros软件包例子: s ...

  7. webpack入门学习笔记10 —— 在项目中使用图片资源

    1. 写在前面 在前端项目中,图片是必不可少的一种资源.在使用图片的时候,我们可以有以下几种方式: 在 .html 文件中,通过 <img src="" alt=" ...

  8. nc65命令执行漏洞上传webshell学习笔记

    nc65命令执行漏洞上传webshell学习笔记 免责声明: 此文为本人学习笔记,不承担任何法律责任. 访问者在从事与本站相关的所有⾏为(包括但不限于访问浏览.利⽤.转载.宣传介绍)时,必须以善意且谨 ...

  9. Altium Designer入门学习笔记4:PCB设计中各层的含义

    Altium Designer入门学习笔记4:PCB设计中各层的含义 阻焊层:solder mask,是指板子上要上绿油的部分:因为它是负片输出,所以实际上有solder mask的部分实际效果并不上 ...

最新文章

  1. UIView Animation
  2. PAT(甲级)2019年春季考试 7-4 Structure of a Binary Tree
  3. Grafana 7.0 发布:改进的界面、新的插件平台和可视化等
  4. SAP HUM 如何将HU里的物料号换成另外一个物料号?
  5. Alternative PHP Cache ( APC )
  6. JDK 6中新增的Java Console类功能概览
  7. python eval函数格式_Python函数中eval函数知识点
  8. Java项目模拟QQ群聊和私聊(网络编程+多线程)
  9. 七种武器——.NET工程师求职面试必杀技(转)
  10. Python笔记9-----不等长列表转化成DataFrame
  11. 常喝酒的人,为什么会出现手抖的现象?
  12. 罗永浩回应做主播赚钱还债;360 否认裁员;Kubernetes 1.18 版本发布| 极客头条
  13. 菜单的无限极分类实现
  14. 篮球30秒可控计时器
  15. HTTP 和 HTTPS 有什么区别?
  16. 配电管理地理信息系统解决方案
  17. Model of an Electric Arc for Circuit Analysis(翻译)
  18. 文字识别软件测试初学者,【只要10分钟 快速掌握文字识别】
  19. Aspose.Slides for java 22.9最新版 官网最新
  20. 基于混沌系统的文本加密算法研究(二)——经典混沌映射

热门文章

  1. 利用计算机模拟函数图像,计算机模拟实验在教学中的应用论文(2)
  2. 中国芯片的突破带来压力,美国芯片龙头将再度裁员,或已后悔不迭
  3. linux常用命令整理-02-服务器-系统-内存-磁盘-优化
  4. 【企业微信急速救心丸】(一)第三方应用开发 - Java整合企业微信回调
  5. 用华为ENSP做一个关于防火墙的小实验-华为eNSP怎样调出右侧接口列表
  6. 基于微信小程序的‘香草屋’饮料奶茶点单小程序
  7. STEAM游戏高主频i9-12900k 搭建CS:GO服务器
  8. 在linux服务器上用headless firefox打开中文网页,字体乱码问题
  9. 在UBUNTU LINUX下搭建 ANDROID开发
  10. [回溯法] 和尚挑水问题-华为笔试