Ros学习——launch文件解析
- launch文件的重点是:节点(node)元素的集合。
- roslaunch 则是让所有的节点共享同一个终端。
1.标签(元素)说明
1. group标签
2. node标签
<group ns="turtlesim1"> //两个节点分组并以’命名空间(namespace)’标签来区分<node pkg="turtlesim" name="sim" type="turtlesim_node"/> //pkg 和 type 它们分别是:程序包名字和可执行文件的名字;ros::init()函数提供的 name 信息将会全面的覆盖命名信息(launch文件中node标签里面的name 属性)</group> <group ns="turtlesim2"><node pkg="turtlesim" name="sim" type="turtlesim_node"/></group>
补充:
ros::init(argc,argv,"my_node_name");或者ros::init(argc,argv,"my_node_name",ros::init_options::AnonymousName);
node标签的拓展属性:
output = “screen” :将标准输出信息显示在终端(console)上 respawn=”true” :监测每一个启动完成的节点,当它终止时,我们可以要求 roslaunch 重新启动它. required=”true” :当一个必需的节点终止时,roslaunch会做出响应,终止其他所有的节点并退出它自己。 (不要同时设置required 属性和 respawn 属性) launch-prefix = “command-prefix” :依赖终端输入的节点,比如 turtle_teleop_key 节点,它可能要优先的保留在独立的终端上:launch-prefix=”xterm -e”(xterm 命令会开一个新的终端窗口。 -e 参数告诉 xterm :执行其命令行剩余部分(rosrun turtlesim turtle_teleop_key))ns = “namespace” :turtlesim 话题名字(turtle1/cmd_vel、turtle1/color_sensor 和 turtle1/pose )被从全局命名空间移动 到 /sim1 和 /sim2 的单独命名空间里。args:传递参数到节点. 个人理解,arg参数只在launch文件中合法(相当于局部变量),不直接传给节点,所以需 要通过node中的args属性进行传递.
3. remap标签
<remap from="original-name" to="new-name" /> //在launch文件中重新命名
如果这个 remap 是 launch 元素的一个child(子类),与 node 元素同一层级, 并在 launch 元素内的最顶层。那么这个 remapping 将会作用于后续所有的节点。
include标签
1. file属性:添加想要包含的文件的完整路径 <include file="$(find package-name)/launch-file-name" /> //常用,如下:<include file = "find learning_tutrols"/launch/start_demo.launch" / > //也可以自己制定路径 <include file = "find learning_tutrols"/start_demo.launch" /> //这样是不对的,必须把路径给到文件所在最终目录2. ns属性:让这个文件里的内容推送到一个命名空间里面: <include file=". . . " ns="namespace" />一般我们都会给 include 元素设置一个 ns 属性。
arg标签:声明一个参数的存在(每一个argument必须给它分配一个 value(赋值))
1. 给arg赋值:
<arg name="arg-name" default="arg-value" /> <arg name="arg-name" value="arg-value" /> 命令行可以覆盖default的值,但是不能覆盖 value 。
在例子launch文件 中,use_sim3 节点的 default 值为 0,所以它可以通过命令行改变值,就像下面这样:
$ roslaunch agitr triplesim.launch use_sim3:=1
2.获取argument的数值
$(arg arg-name) //$() 这个符号出现的任何地方,roslaunch命令都将会把它替换成给定argument 的值(value)。
3.argument的继承 :
argument不能传递给 include 元素里包含的子launch文件 使用。 argument 就像是一个局部变量,它不能被包含的launch文件 所 “继承” 。解决这个问题的方法:在 include 元素中插入 arg 元素作为 include 元素的子类(children)。
在 inchude 标签内的arguments是给包含 (included) 的launch文件提供的arguments,不是为本launch文件提供的。
<include file="$(find freenect_launch)/launch/freenect.launch"><!-- Don't publish the camera frames when using with the Turtlebot --><arg name="publish_tf" value="false" /> <!-- use device registration --><arg name="depth_registration" value="true" /> <arg name="rgb_processing" value="true" /><arg name="ir_processing" value="false" /><arg name="depth_processing" value="false" /><arg name="depth_registered_processing" value="true" /><arg name="disparity_processing" value="false" /><arg name="disparity_registered_processing" value="false" /><arg name="sw_registered_processing" value="false" /><arg name="hw_registered_processing" value="true" />
Parameters(参数)在一个运行的ROS系统中是变量(values),它被存储在parameter服务器中。活动(或者叫:运行)的节点通过ros::param::get()函数访问它,并且用户可以通过 rosparam 命令行工具使用它。
相比之下,arguments只有在launch文件里合法,它们的值不是直接提供给节点。
2.parameter说明
1.group标签中的param标签的作用等同于rosparam set命令.
2.node标签中的param标签设置为该节点的子元素.
3.在launch文件中也支持等同与rosparam load 功能的rosparam标签,用于一次性加载大量的参数
4.在launch文件中设置parameter,使用param标签:
<param name="param-name" value="param-value" />
5.在C++文件中,set或者get处理parameter参数
ros::param::set(” background_r ” , 255 ) ; boolok = ros::param::get (PARAM_NAME, maxVel ) ;
参考:https://blog.csdn.net/qq_33444963/article/details/77893881
转载于:https://www.cnblogs.com/yrm1160029237/p/10108161.html
Ros学习——launch文件解析相关推荐
- linux开机启动roscore,树莓派ubuntuMate系统中开机自启动ROS的launch文件
0x00 为何需要开机自启动launch文件 在ROS开发后期阶段由于功能已经趋于稳定,因此就需要系统在一上电启动后就自动把ROS下的各节点程序加载运行,这样就省去了我们还得手动输入roslaunch ...
- XML - XML学习/XML文件解析器(C++)实现
XML - XML学习/XML文件解析器(C++)实现 XML概述 XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识.它也是元标记语言,用于定义其他与特定领域有关的, ...
- ROS中launch文件的编写
ROS中launch文件的编写 launch文件介绍 ROS系统里的组成单位是节点(node),在启动ROS时需要启动所有的node,如果手动一一启动会是一项十分繁琐的事情,因此ROS通过launch ...
- ROS中launch文件使用笔记
1. 常用标签 <launch> <!--根标签--> <node> <!--需要启动的node及其参数--> <include> < ...
- ROS:launch文件的语法规范
在ROS应用中,一般涉及多个节点,而每个节点又有很多参数需要设置.为了方便.高效地操作多个节点,可以编写 .launch 文件,然后用roslaunch命令运行. 注意:存储启动文件的目录不一定必须命 ...
- ros中launch文件使用与虚拟机中使用Livox avia
在home目录创建工作空间,并创建src,将要安装的代码解压放在src中,编译ros项目 ROS入门(四)编译ROS程序包_小鱼儿飞呀飞的博客-CSDN博客_ros包编译 使用launch前要 `so ...
- 学习笔记文件解析漏洞
一.概念 文件解析漏洞主要由于网站管理员操作不当或者web服务器自身的漏洞,导致一些特殊文件被IIS.apache.nginx或其他web服务器在某种情况下解释成脚本文件执行 比如网站管理员配置不当, ...
- ROS运行launch文件报错
报错内容 RLException: Invalid roslaunch XML syntax: no element found: line 1, column 0. 解决方法 将launch文件关闭 ...
- ROS中yaml文件编写格式
目录 键值对 键值对书写格式 键值对的引用 强制类型转换 字符串 时间与日期 已知偏移时区和当地时间 已知UTC世界时间 数组 普通数组 键值对数组 数组的引用 多维数组 命名空间 命名空间下普通变量 ...
最新文章
- 独家 | 10分钟带你上手TensorFlow实践(附代码)
- 文化致胜的时代 协同OA可以这样助力企业文化建设
- Python报错:The truth value of an array with more than one element is ambiguous
- PC网页实现九宫格切图功能
- AngularJS案例:简单计算
- JVM源码分析之栈溢出完全解读
- bash中符号那点事
- Smack 4.3.4 API
- 帆软日期参数联动方法
- Atitit 完整知识体系表 attilax总结 要读哪些书
- python代码怎么样_python代码怎样清屏
- 线性调频信号的时频域分析
- StuQ IT技能图谱全集
- mcu,单片机选型以及厂家推荐
- 2020中南大学计算机学院考研初试成绩,中南大学2020考研复试分数线已公布
- 2023年,前端开发就业前景好吗?
- PostgreSQL - 学习/实践
- 强大的图文长微博工具 支持图文混排 支持美工字体
- 搜索导航HTML,CSS 带搜索导航栏的示例代码
- Java JSON library哪家强?
热门文章
- 20135302魏静静——linux课程第三周实验及总结
- 白盒测试及其存在的一些问题
- [LeetCode 题解]: Roman to Interger
- 将Windows日志转换为Syslog
- 计算机类中文核心期刊影响因子(2006年)
- ADO.NET 2.0 的并行控制与数据存取冲突侦测
- 华为RH2285H V2设备管理口白屏的解决方法
- Spring MVC中@Controller和@RequestMapping注解详解
- 08-08 性能测试--分布式
- redis 公网 安全_最安全redis公网访问