launch文件.doc_第1页
launch文件.doc_第2页
launch文件.doc_第3页
launch文件.doc_第4页
launch文件.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1使用launch文件Launch文件是ROS提供的,可以同时运行多个nodes的文件。Launch文件以一种特殊的XML格式编写,在ROSpackages中使用广泛。1.1运行launch文件$roslaunchpackage_namelaunch_file_nameEg:roslaunchturtlesimexample.launch(1)Tip1:rosrun只能运行一个nodes,roslaunch可以同时运行多个nodes.Tip2:launch文件可以不被包含于package中。此时,只需指出该launch文件的绝对路径,即可运行。$roslaunchcompletely_pathEg:$roslaunch/opt/ros/indigo/share/turtlesim/launch/example.launchTip3:为便于执行,每个node最好是相互独立的。(2)详细显示(requestverbosity)$roslaunch-vpackage_namelaunch_file_name(3)结束launch文件ctrl+c2创建launch文件(1)launch文件一般以.launch后缀作为文件名,放在package的launch文件夹下。最简单的launch文件可以仅包含几个nodes。(2)Launch文件是XML文件,每个XML文件必须有一个rootelement。而launch文件的rootelement由一对launch标签定义。.Launch文件中的其他elements必须都在这一对tags之间。(3)launch文件的核心是一系列nodeelements,每个nodeelement启动一个node。Nodeelement看起来如下:Tip1:最后的“/”是必不可少的。Tip2:也可以写成如果该node中有其他tags,则必须使用这种形式。(4)一个nodeelement包含三个必须的属性:pkg,type,name.pkg和type属性指出ROS应该运行哪个pkg中的哪个node,注意:此处的type是可执行文件的名称,而name则是可以任意给出的,它覆盖了原有文件中ros:init指定的nodename。(5)使用匿名(anonymousname)name=”$(anonbase_name)”(6)node日志文件(logfile)运行roslaunch和用rosrun运行单个节点的区别之一是,默认情况下,roslaunch运行的nodes的标准输出会重定向到logfile,不显示在控制台。该日志文件的位置和名称如下:/.ros/log/run_id/node_name-number-stdout.log其中,run_id是master启动后生成的特殊标识符,number是表示nodes数量的整数。如,turtlesim-1-stdout.log;teleop_key-3-stdout.log.(7)输出到控制台用output属性,output=”screen”;这种方法仅显示一个node。若显示所有nodes的输出,用-screen命令行。$roslaunch-screenpackage_namelaunch_file_name如果正在运行的文件没有显示想要对输出,可以查看该node属性集中是否有output=”screen”.(8)要求重生(requestrespawning) 开启所有nodes后,roslaunch会监视每个node,记录那些仍然活动的nodes。对于每个node,当其终止后,我们可以要求roslaunch重启该node,通过使用respawn属性。 respawn=”true”(10)必需的nodesrequired属性与respawn相反,不能同时对同一个node使用。required=”true”当一个requirednode终止后,所有其他的nodes都会终止,并退出。这种命令有时很有用。比如,当一个很重要的node失败后,整个会话都会被扔掉,那些加上了respawn属性的nodes也会停止。(11)在独立的窗口运行各nodes我们在各自的termin运行rosrunnode_name;但是运行roslaunch时,所有的nodes共用一个相同的terminal,这对于那些需要从控制台输入的nodes很不方便。可以使用launch-prefix属性。launch-prefix=”command-prefix”Eg:launch-prefix=”xterm-e”等价于xterm-erosrunturtlesimturtle_teleop_keyxterm命令表示新建一个terminal;-e参数告诉xterm执行剩下的命令行。当然,launch-prefix属性不仅仅限于xterm。它可用于调试(通过gdb或valgrind),或用于降低进程的执行顺序(通过nice).3在namespace中执行nodes为node设置默认的namespace的常用方法被称为“pushingdownintoanamespace”的进程,用于launch文件,并在其nodeelement中指定ns属性。ns=”namespace”launch文件中的nodenames是relativenames。同一个launch文件中,允许不同namespace中出现相同的nodenames。Roslaunch要求nodenames必须是basenames不指定任何namespaces的relativenames;如果nodeelement中出现nodename为globalname,则会报错。4重映射names(remappingnames)除了解析relativenames和privatenames,ROS也支持重映射,用于修改nodes当前使用的名称。重映射相当于换名,每次重映射需提供一个originalname和一个newname。每次node使用它的originalname,ROSclientlibrary都会将其替换为remappingname。创建remappingname两种方法:1.对于单个node,在命令行进行remapping(remap对象可以是node,topic等)。original-name:=new-nameEg:$rosrunturtlesimturtlesim_nodeturtle1/pose:=tim2.在launch文件内remapnames,使用remapelement如果remap出现在launch文件开头,作为launch文件的子元素,则该remapping将被用于随后所有的nodes。如果remap作为某个node的子元素,则只用于该节点。Eg:注意:在ROS进行remapping之前,remaping的所有name,包括original和newnames,都将被解析为globalnames。所以,remapping之后所有的名字通常都是relativenames。5其他的launchelements5.1including其他文件为包含其他launch文件,包括这些launch文件的所有nodes和parameters,用includeelement。这种情况下,file属性必须写出该launch文件的全部路径名称,显得很繁琐。因此,常用注意,执行该launch文件时,roslaunch会搜索该package下的所有子目录;因此,必须给出package_name。此外,include也支持ns属性,将它的内容放进指定的namespace。5.2Launcharguments为便于launch文件重构,roslaunch支持launcharguments,也成为arguments或者args,类似于局部变量。注意:尽管argument和parameter有时可互换,但他们在ROS中的意义完全不同。Parameters是ROS系统使用的数值,存在parameterserver上,nodes可通过ros:param:get函数编程得到,用户可通过rosparam获取。与之不同,arguments仅在launch文件内部有意义,nodes不能直接获取它们的值。(1)声明argument(2)指定argument的值Launch文件中的每个argument都必须有指定值。赋值方法有好几种。第一种,在命令行赋值$roslaunchpackage_namelaunch_file_namearg-name:=arg_value第二种,在声明argument时赋值上面两行的区别在于,命令行参数可以覆盖default,但是不能重写value的值。(3)获取变量值一旦声明某个argument并赋值后,我们可以通过arg使用该argument.$(argarg-name)如果该行出现,roslaunch将会用给定arg-name的值替换其左边的值。(4)将argument值传给includedlaunch文件.若在launch文件中,launch文件及其包含的launch文件出现出现相同的arguments,则需在launch文件及includedlaunch文件中同时写:第一个arg_name表示indludedlaunch文件中的argument,第二个arg_name表示launch文件中的argument.其结果是指定的argument在launch文件及includedlaunch文件中都有相同的值。5.3创建groupsGroupelement可以再大型的launch文件中将指定的nodes组织起来。它有两个用处:其一,group可以将几个nodes放进同一个namespace.注意,如果groupednode已经有它自己的namespace,并

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论