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标签
. 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" /> //这样是不对的,必须把路径给到文件所在最终目录 . 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 ” , ) ;
boolok = ros::param::get (PARAM_NAME, maxVel ) ;
参考:https://blog.csdn.net/qq_33444963/article/details/77893881
Ros学习——launch文件解析的更多相关文章
- ROS的launch文件
ROS中可以把很多的命令以描述的形式写成launch文件,然后用roslaunch命令执行launch文件.它的使用方法如下: roslaunch [package] [filename.launch ...
- python ros 使用launch文件启动脚本
目录结构 在包里面新建scripts文件夹,里面放运行的脚本文件,记得设置执行权限 然后新建launch文件夹,新建launch文件按照如下格式写: <node pkg="initia ...
- launch 文件解析
roslaunch工具是ros中python实现的程序启动工具,通过读取launch文件中的参数配置.属性配置等来启动一系列节点: 很多ROS包或源码包中都有launch文件,一般为该程序包能够运行起 ...
- 第三课3、ROS的launch文件
1.launch 参数说明: pkg为节点的功能包,type为需要运行的那个节点,name为节点的名字,后面的参数可选 举个例子: 在工作空间中新建一个包: 然后再回到工作空间中去编译: 再在包目录下 ...
- ROS * 通过launch文件添加多个模型
我添加的是dae模型,urdf文件过两天贴 方法一 : <launch> <!-- these are the arguments you can pass this launch ...
- ros 启动launch文件,附带参数
roslaunch cartographer_ros cartographer_ref.launch resolution:=0.07 #下面是cartographer_ref.launch的内容 & ...
- ROS中.launch文件的remap标签详解
https://www.cnblogs.com/LiuQiang921202/p/7679943.html
- ROS Learning-010 beginner_Tutorials 编写简单的启动脚本文件(.launch 文件)
ROS Indigo beginner_Tutorials-09 编写简单的启动脚本文件 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.0 ...
- Ros学习——roslaunch
roslaunch:启动定义在launch文件中的多个节点 1.launch文件解析 <launch> #以launch标签开头以表明这是一个launch文件 #两个节点分组并以'命名空间 ...
随机推荐
- OSX 10.11.1 预览照片绿屏的问题
最新版本的El Capitan仍然会出现Finder预览多张照片时,会几率性出现绿屏或者部分绿色的照片: 这是新版“预览.app”的bug,解决方法有两个,一个是等待升级补丁,暂时一个一个文件预览,就 ...
- hzau 1202 GCD(矩阵快速幂)
1202: GCD Time Limit: 1 Sec Memory Limit: 1280 MBSubmit: 201 Solved: 31[Submit][Status][Web Board] ...
- [转载]java读写word文档,完美解决方案
做项目的过程中,经常需要把数据里里的数据读出来,经过加工,以word格式输出. 在网上找了很多解决方案都不太理想,偶尔发现了PageOffice,一个国产的Office插件,开发调用非常简单!比网上介 ...
- ubuntu设置开机启动命令行模式
1.命令: sudo gedit /etc/default/grub 找到这一行 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" (ubuntu ...
- CANopenSocket 测试
/************************************************************************* * CANopenSocket 测试 * 说明: ...
- HttpServletRequest获取请求得URL信息
request对象中包含的是请求信息,当我们在浏览器地址栏上输入:http://localhost:8080/Example/AServlet?username=zhangsan,这段地址也会作为请求 ...
- Git学习原版手稿
手稿诞生记 Git学习的时候难免会有遗忘然后往复学习查看的过程,所以就形成了这个学习的手稿,记录了Git使用过程中的大部分命令,今天在清理的时候偶然看到了这些记录,而且最近也在写Git的 ...
- ACM学习历程—Hihocoder 1139 二分·二分答案(bfs)
http://hihocoder.com/problemset/problem/1139 这题提示上写的是二分,但是感觉不二分应该也可以,至少题目是AC的... 二分的思想就是二分答案的值,看能不能在 ...
- 蓝桥杯 算法训练 ALGO-117 友好数
算法训练 友好数 时间限制:1.0s 内存限制:256.0MB 问题描述 有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的.例如: 9的约数和有:1+3=4 ...
- java继承捡漏
总结:老师真是的.讲课的时候,觉得打的比喻特别有趣,结果啊不晓得他是良苦用心.知识就是包含在里面 继承:子类继承父类,子类就可以把父类的东西拿来用 这体现在程序运行时,你会发现,子类对象可以调用父类的 ...