当前位置: 首页 > news >正文

launch文件概述---1

摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/

 

资源链接:http://wenku.baidu.com/link?url=PhyN3C6ghqovJ0qtg8dnTEPEku6WFDnB2dOeMqfErVLx8hB4MksBUULiNLlvjwWtsgDRTcizA2jCFhCjdgu0rRTfsq2mUtiRr5GKUtfYtMi

pdf转world:http://www.convertpdftoword.net/

1.计算次序
roslaunch与XML文件单一传递。include是按照深度优先遍历的顺序处理。标签tag进行串行处理并且最后的设置有效。因此,若一个参数被多次设置,最后指定的值将被使用。
依靠重写覆盖的行为是不可取的。因为没有谁能保证重写是正确的(如,include文件中参数名改变了)。相反,比较推荐的是使用$(arg)/<arg>设置来进行重写行为。
2.替代参数(substitutionargs:置换符)
Roslaunchtag属性可使用置换符,这要在启动节点之前解决。目前支持的置换参数如下:

$(env NVIRONMENT_VARIABLE)

替代当前的环境变量的值。如果环境变量没有设置,启动将失败。该值不能由<env>标签重写。

2).$(optenv ENVIRONMENT_VARIABLE) $(optenv ENVIRONMENT_VARIABLE default_value) 

如果设置了,则替代一个环境变量值。如果默认值default_value提供了,环境变量没有设置时将使用默认值。如果没有默认值,将使用空字符串。default_value可以是用空格分开的多个单词。例子:

<paramname="foo"value="$(optenv NUM_CPUS 1)"/>
<paramname="foo"value="$(optenv CONFIG_PATH /home/wsh/ros_workspace)"/>
<paramname="foo"value="$(optenv VARIABLE ros rocks)"/>3).$(findpkg)
3).$(find pkg) 

$(findrospy)/manifest.xml.指定包的相对路径。文件系统到包目录的路径将被内联的替换。由于硬件编码抑制了启动配置的可移植性,我们鼓励使用包相对路径。本地文件系统公约的前后削减问题得到解决

4).$(anon name)

$(anonrviz-1)产生基于名称的匿名ID。名字本身是一个独特的标识符:不同的$(anonfoo)用法将创建相同的“匿名”的名字。主要用于“节点名称”属性中以创建匿名节点。ROS要求每个节点都有唯一的名字

例如:

<nodename="$(anonfoo)" pkg="rospy_tutorials" type="talker.py"/>
<nodename="$(anonfoo)" pkg="rospy_tutorials" type="talker.py"/>

如果两个节点有一样的名字将会发生错误。

5).$(argfoo)

$(argfoo)计算由<arg>标签指定的值。在声明arg的同一启动文件中必须有对应的<arg>标签。例如:

<paramname="foo" value="$(argmy_foo)"/>

将指定my_foo到foo参数.另一个例子:

<nodename="add_two_ints_server" pkg="beginner_tutorials" type="add_two_ints_server"/>
<nodename="add_two_ints_client" pkg="beginner_tutorials" type="add_two_ints_client" args="$(arga)$(argb)"/>

将会从<add_two_ints>例子中启动server和client,作为参数值a和传递。产生的启动项目能用如下语句调用:

roslaunch beginner_tutorials launch_file.launch a:=1 b:=5 

置换参数目前在本地机器上已经解决。换句话说,环境变量和ROS包的路径能在当前的环境中设置,甚至远程启动的过程也可以。

3.if和unless属性
所有标签tags都支持if和unless属性(基于计算的值包含或者排除一个tag)。”1”和“true”是值。”0”和“false”假值。其它值是错的。

if=value(optional) 如果value值为true,包括标签和内容。
unless=value(optional) 除非value为真,包含标签和内容.

例子:

<groupif="$(argfoo)">
<!--stuff that will only be evaluated if foo is true--></group>
<paramname="foo"value="bar"unless="$(argfoo)"/>

4.相关标签

<launch>
<node> <machine>
<include> <remap> <env> <param> <rosparam> <group>
<test> <arg>

 5.例子.launchXML配置文件
注:按照惯例,roslaunchXML文件的扩展名为.launch,
如example.launch。
5.1最小例子(MinimalExample)
下面的示例是一个最小的启动配置脚本。它启动了一个节点'talker',位“rospy_tutorials”包中。这个节点在本地机使用当前配置的ROS环境启动(如ros_root)。

<launch>
<nodename="talker"pkg="rospy_tutorials"type="talker"/></launch>

5.2一个稍微复杂的例子

<launch>
<!-- local machine already has a definition by default.This tag overrides the default definition withspecific ROS_ROOT and ROS_PACKAGE_PATH values -->
<machine name="local_alt" address="localhost" default="true" ros-root="/u/user/ros/ros/" ros-package-path="/u/user/ros/ros-pkg" />
<!-- a basic listener node -->
<node name="listener-1" pkg="rospy_tutorials" type="listener" />
<!-- pass args to the listener node -->
<node name="listener-2" pkg="rospy_tutorials" type="listener" args="-fooarg2" />
<!-- a respawn-able listener node -->
<node name="listener-3" pkg="rospy_tutorials" type="listener"respawn="true" />
<!-- start listener node in the 'wg1' namespace -->
<node ns="wg1" name="listener-wg1" pkg="rospy_tutorials" type="listener"respawn="true" />
<!-- start a group of nodes in the 'wg2' namespace -->
<group ns="wg2">
<!-- remap applies to all future statements in this scope. -->
<remap from="chatter" to="hello"/>
<node pkg="rospy_tutorials" type="listener" name="listener" args="--test" respawn="true" />
<node pkg="rospy_tutorials" type="talker" name="talker">
<!-- set a private parameter for the node -->
<param name="talker_1_param" value="a value" />
<!-- nodes can have their own remap args -->
<remap from="chatter" to="hello-1"/>
<!-- you can set environment variables for a node -->
<env name="ENV_EXAMPLE" value="some value" />
</node>
</group>
</launch>

5.3设置参数

也可以在参数服务器上设置参数。在节点启动之前,这些参数被存储在服务器上。如果值是明确的,以省略 type 类型属性。支持的类型是 str, int, double, bool。也可以不使用 textfile  binfile 属性来

指定一个文件目录

例如:

<launch>
<param name="somestring1" value="bar" />
<!-- force to string instead of integer -->
<param name="somestring2" value="10" type="str" />
<param name="someinteger1" value="1" type="int" />
<param name="someinteger2" value="2" />
<param name="somefloat1" value="3.14159" type="double" />
<param name="somefloat2" value="3.0" />
<!-- you can set parameters in child namespaces -->
<param name="wg/childparam" value="a child namespace parameter" />
<!-- upload the contents of a file to the server -->
<param name="configfile" textfile="$(find roslaunch)/example.xml" />
<!-- upload the contents of a file as base64 binary to the server -->
<param name="binaryfile" binfile="$(find roslaunch)/example.xml" />
</launch>

相关文章:

  • Python 修行摘要二
  • 安卓学习UI组件-Menu-选项菜单-上下文菜单-弹出式菜单
  • PHP学习笔记(3)-Zend Studio安装和汉化
  • mode(思维,注意内存)
  • 给新手的新浪微博 SDK 集成教程【一】
  • GDC2016【全境封锁(Tom Clancy's The Division)】对为何对应Eye Tracked System,以及各种优点的演讲报告...
  • [na]wac无线控制器集中转发部署的几种情况
  • C语言中内存分配问题
  • Nyoj 吝啬的国度(图论双DFS)
  • vim的一些很少用的方法
  • Js 字符串中提取数字
  • 【Linux学习】Linux的文件权限(一)
  • 软件工程学生的编程能力与编程语言是中文或英文有关系吗?
  • WPF下载远程文件,并显示进度条和百分比
  • iptables练习题
  • 【刷算法】从上往下打印二叉树
  • Apache的基本使用
  • HTTP中的ETag在移动客户端的应用
  • IDEA 插件开发入门教程
  • Making An Indicator With Pure CSS
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Protobuf3语言指南
  • React-Native - 收藏集 - 掘金
  • SSH 免密登录
  • vue的全局变量和全局拦截请求器
  • 阿里云应用高可用服务公测发布
  • 当SetTimeout遇到了字符串
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 基于Android乐音识别(2)
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 京东美团研发面经
  • 前端代码风格自动化系列(二)之Commitlint
  • 实现菜单下拉伸展折叠效果demo
  • 一起参Ember.js讨论、问答社区。
  • 智能合约开发环境搭建及Hello World合约
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #### go map 底层结构 ####
  • #QT项目实战(天气预报)
  • #传输# #传输数据判断#
  • (26)4.7 字符函数和字符串函数
  • (39)STM32——FLASH闪存
  • (pojstep1.1.2)2654(直叙式模拟)
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)斐波那契Fabonacci函数
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Core WebAPI中封装Swagger配置
  • .net mvc 获取url中controller和action
  • .NET 发展历程
  • @Autowired @Resource @Qualifier的区别
  • @Bean有哪些属性
  • @EventListener注解使用说明
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题