【ROS基础】.launch文件语法记录
系列文章目录
【ROS基础】Linux 命令行
【ROS基础】.launch 文件语法记录
【ROS基础】CMakeLists.txt 文件语法记录
【ROS基础】Package.xml 文件语法记录
【ROS基础】ROS_c++ 语法记录
文章目录
- 系列文章目录
- 前言
- 1、.launch 文件是什么?
- 2、<launch> 标签 根标签
- 3、<node> 标签 启动节点
- 4、<param> 标签 设置参数1/3
- 5、<rosparam> 标签 设置参数2/3
- 6、<arg> 标签 设置参数3/3
- 7、<remap> 标签 重映射
- 8、<include> 标签 嵌套
- 9、案例 一 turtlesim_parameter_config.launch
- 9.1 学习这个 .launch 文件
- 10、案例 二 turtlesim_remap.launch
- Markdown语法总结
前言
最全面的教程还是得看这个:http://wiki.ros.org/roslaunch/XML
1、.launch 文件是什么?
通过 xml 标签语言实现 ROS 多节点的配置和启动,可自动启动 ROS Master 节点。最简单的文件举例 :simple.launch
<launch><node pkg="learning_communication" type="person_subscriber_node" name="talker" /><node pkg="learning_communication" type="person_publisher_node" name="listener" />
</launch>
2、<launch> 标签 根标签
.launch 文件的根元素标签,其他所有的标签都必须包含在根标签的范围内。</launch > 表示标签作用域的结尾。
3、<node> 标签 启动节点
用于启动节点。标签内各参数的含义:
- pkg 节点所在功能包名。
- type 节点的可执行文件名。
- name 节点运行时的名称,可与cpp文件中节点初始化时的节点名不同。 (rosnode list 打印出的就是这个名字,不过加了前缀斜杠 / )
- output (optional)
="screen" or ="log"
,默认不输出。 - respawn (optional)
="true"
,Restart the node automatically if it quits. 默认="false"
。 - required (optional)
="true"
,If node dies, kill entire roslaunch. - ns (optional)
="foo"
,Start the node in the ‘foo’ namespace. - args (optional)
="arg1 arg2"
,Pass arguments to node.
4、<param> 标签 设置参数1/3
设置ROS系统运行中的参数,存储在参数服务器中,相当于全局变量。(可嵌入 <node> 标签中成为其作用域下的变量)。标签内各参数的含义:
<param name="output_frame" value="odom" />
- name 参数名。
- value (optional) 参数值。
- type (optional)
="str | int | double | bool | yaml"
。
5、<rosparam> 标签 设置参数2/3
加载 .yaml 文件中的多个参数,存储在参数服务器中,相当于全局变量。(可嵌入到 <node> 标签中成为 <node> 标签作用域中的变量)。标签内各参数的含义:
<rosparam file="params.yaml" command="load" ns="params" />
- file () 。
- command () 。
- ns () 。
6、<arg> 标签 设置参数3/3
.launch 文件内部的局部变量,仅限于 .launch 文件使用。标签内各参数的含义:
<arg name="arg-name" default="arg-value" />
- name 参数名。
- default (optional) 参数值。 可在之后 override。(变量)
- value (optional) 参数值。不可覆盖。 (常量)
调用 <arg> 标签定义的参数:
<param name="foo" value="$(arg arg-name)" />
<node name="node" pkg="package" type="type" args="$(arg arg-name)" />
7、<remap> 标签 重映射
重映射 ROS 计算图资源的命名,这是一种覆盖操作,一旦重映射之后,原来的名字就没有了。标签内各参数的含义:
<remap from="/turtlebot/cmd_vel" to="/cmd_vel" />
- from ( ) 原名。
- to ( ) 映射之后的命名。
8、<include> 标签 嵌套
包含其他 .launch 文件,类似 C 语言的头文件包含。标签内各参数的含义:
<include file="$(dirname)/other.launch" />
- file ( ) 包含的其他launch文件的路径。
9、案例 一 turtlesim_parameter_config.launch
此 .launch 文件定义如下:
<launch><param name="/turtle_number" value="2" /><arg name="TurtleName1" defualt="Tom"/><arg name="TurtleName2" defualt="Danney"/><node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node" ><param name="turtle_name1" value="$(arg TurtleName1)"/><param name="turtle_name2" value="$(arg TurtleName2)"/><rosparam file="(find learning_launch)/config/param.ymal" commond="load" /></node><node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key" output="screen" /></launch>
- 文件建立过程: 在已经存在的且没出过问题的工作空间下的 src 目录下新建了一个 learning_launch 的功能包。功能包创建时无脑包含了 roscpp rospy std_msgs std_srvs 四个依赖。
在 learning_launch 功能包路径下创建了 launch 路径来存放上述 turtlesim_parameter_config.launch 文件。
在 learning_launch 功能包路径下创建了 config 路径来存放 param.yaml 文件。 param.yaml 文件如下:
A : 123
B : "hello"group :C : 456D : "world"
- 编译工作空间: 编译 100% 通过。
- 运行 .launch 文件:
roslaunch learning_launch turtlesim_parameter_config.launch
- 运行 .launch 文件报错:
RLException: [/home/jyc/slam_ws/src/learning_launch/launch/turtlesim_parameter_config.launch] requires the ‘TurtleName1’ arg to be set
The traceback for the exception was written to the log file - 分析1: 看上面的报错信息是 ‘TurtleName1’ 找不到,应该是能够定位到 .launch 文件 的第8行,然并卵,定位到了也不知该怎么解决。虽然不明白是哪里出了问题,但是感觉上来说,应该是 CMakeLists.txt 没配置好。
– 解决方法1: 对着 hcx 教程中的 CMakeLists.txt 文件找不同。
hcx 的 CMakeLists.txt 文件根本没动过,我也跟着去掉了上面的四个无脑依赖。(无果)
hcx 的 package.xml 文件也根本没动过,我也跟着去掉了上面的四个无脑依赖。(无果)
hcx 功能包下没有创建功能包时自动生成的 include 和 src 文件夹,因此我也将这两个文件夹删了。(无果) - 分析2: 上面的方法均无果,开始怀疑是不是自己的 .launch 文件代码敲错了。
– 解决方法2: 对着 hcx 教程中的 .launch 文件开始对照。
看了没两眼,还真被我找到了,居然在第7行少写了一个代表标签结尾的斜杠 。(我总是忘写这个斜杠,以后要注意检查这方面的错误)。欣喜若狂之际,修改了代码,编译、运行,又报错了:RLException: Invalid roslaunch XML syntax: mismatched tag: line 12, column 6
The traceback for the exception was written to the log file11行还真有错误 (由此可见终端数对源文件的行数是从 0 开始数的),
find
左边的左括号前少了个$
,yaml
拼写错误,command
拼写错误。并且还发现上面的“欣喜若狂”: 居然在第7行少写了一个代表标签结尾的斜杠 这是在把对的代码改成错的【ROS基础】.launch文件语法记录相关推荐
- 【ROS基础】ROS_c++ 语法记录
系列文章目录 [ROS基础]Linux 命令行 [ROS基础].launch 文件语法记录 [ROS基础]CMakeLists.txt 文件语法记录 [ROS基础]Package.xml 文件语法记录 ...
- linux开机启动roscore,树莓派ubuntuMate系统中开机自启动ROS的launch文件
0x00 为何需要开机自启动launch文件 在ROS开发后期阶段由于功能已经趋于稳定,因此就需要系统在一上电启动后就自动把ROS下的各节点程序加载运行,这样就省去了我们还得手动输入roslaunch ...
- ROS中launch文件的编写
ROS中launch文件的编写 launch文件介绍 ROS系统里的组成单位是节点(node),在启动ROS时需要启动所有的node,如果手动一一启动会是一项十分繁琐的事情,因此ROS通过launch ...
- ROS:launch文件的语法规范
在ROS应用中,一般涉及多个节点,而每个节点又有很多参数需要设置.为了方便.高效地操作多个节点,可以编写 .launch 文件,然后用roslaunch命令运行. 注意:存储启动文件的目录不一定必须命 ...
- ROS中launch文件使用笔记
1. 常用标签 <launch> <!--根标签--> <node> <!--需要启动的node及其参数--> <include> < ...
- Ros学习——launch文件解析
launch文件的重点是:节点(node)元素的集合. roslaunch 则是让所有的节点共享同一个终端. 1.标签(元素)说明 1. group标签 2. node标签 <group ns= ...
- ros中launch文件使用与虚拟机中使用Livox avia
在home目录创建工作空间,并创建src,将要安装的代码解压放在src中,编译ros项目 ROS入门(四)编译ROS程序包_小鱼儿飞呀飞的博客-CSDN博客_ros包编译 使用launch前要 `so ...
- ROS运行launch文件报错
报错内容 RLException: Invalid roslaunch XML syntax: no element found: line 1, column 0. 解决方法 将launch文件关闭 ...
- 【ROS基础】Linux命令行
系列文章目录 [ROS基础]Linux 命令行 [ROS基础].launch 文件语法记录 [ROS基础]CMakeLists.txt 文件语法记录 [ROS基础]Package.xml 文件语法记录 ...
- ROS基础(十)——launch启动文件的使用方法
申明:ROS学习参考了古月居老师的Blibli视频,强烈推荐大家看视频学习,本博客仅记录自己的学习经历和心得,欢迎大家一起讨论! 1 launch文件介绍 Launch文件:通过XML文件实现多节点的 ...
最新文章
- 在用户控件中操作父页面上的控件
- 如何使用jQuery获取焦点元素?
- python框架-Django安装使用
- Qt / 窗体设置 Qt::WA_TranslucentBackground 为全黑的原因
- python面对对象汉诺塔_如何使用python实现的汉诺塔的小程序
- vbs如何写进度条_VBS 调用 HTA 实现进度条加载
- TP5:异常处理封装——3
- 一篇文章带你快速理解微服务架构,由浅入深带你走进微服务架构的核心
- 递归算法及其时间复杂度分析
- android 获取当前时间_js如何获取当前时间并显示
- 面试官系统精讲Java源码及大厂真题 - 08 HashMap 源码解析
- CVX学习笔记(转载
- ES6新特性_ES6_Symbol的介绍与创建---JavaScript_ECMAScript_ES6-ES11新特性工作笔记015
- 计算机英语期末论文格式,计算机英文论文大纲格式 计算机英文论文大纲如何写...
- 【生物信息】影像组学入门实践成长营(14天)
- flyway的快速入门教程
- 网友自曝取公积金血泪史 给你点希望又让你绝望
- [Slides notes] Other notes using Excel
- 20051114: 未麻的小屋
- 痘痘长在不同位置代表什么?
热门文章
- 【ROS基础】ROS_c++ 语法记录