ROS wiki系列|在ROSwiki中查找特定内容(以launch为例)

  • Post author:
  • Post category:其他


Hello朋友们!最后一期了当然是要来点实际的~前面教了大家那么多内容你们也该学会自己在ROS wiki里找找自己想看的内容啦

But……ROS wiki真的好多,页面跳转又很复杂,搜索框又用不了,咋整?

咱就是说 咱是有点小妙招在身上的 今天就给大家支一招吧

今天我们呢也借此机会讲一下ROS当中不起眼又重要的launch文件,首先明确今天我们要找的是launch相关内容,然后打开ROS wiki,看到上方网址这里

在这里插入图片描述

对,我们在网址后面来加上launch(不要慌,本来网页就是这样完成跳转的)

在这里插入图片描述

ROS wiki会告诉我们:没有,要不你自己建一个?

这个时候咱们再往下看

在这里插入图片描述

ROS wiki又告诉我们:建一个之前看看这里有没有你要找的,我找了几个相关的页面给你看看

好巧不巧,第一个就是我们想要的页面,整挺好

这里介绍的就是一个比较直接的跳转方式,当然了,要通过正常的跳转转到这里来也是可以的,就是要费点时间和精力去找

—————————————————假装分割线—————————————————

ok,我们正式开始对launch文件的学习!



launch文件的评估顺序

roslaunch在一次传递中计算XML文件。include按深度优先遍历顺序处理。tag将按顺序评估,最后一个设置获胜。因此,如果一个参数有多个设置,则使用为该参数指定的最后一个值。

依赖于覆盖行为是脆弱的。不能保证重载是正确指定的(例如,如果参数名在包含的文件中被更改)。相反,建议使用$(arg)/< arg > 设置完成覆盖行为。



launch文件中的标签

1.

<launch>


这个标签是任何roslaunch文件的根元素。它的唯一用途是充当其他元素的容器。

2.

<node>


这个标签指定希望启动的ROS节点。这是最常见的roslaunch标记,因为它支持最重要的特性:启动和关闭节点。

roslaunch不提供任何关于节点启动顺序的保证。这是有意为之的:外部无法知道节点何时完全初始化,因此所有启动的代码都必须具有鲁棒性,能够以任何顺序启动。

eg.

< node name="listener1" pkg="rospy_tutorials" type="listener.py" args="--test" respawn="true" />


标签中的部分属性解释:


pkg=”mypackage”


节点所在功能包。


type=”nodetype”


节点类型。必须有一个同名的对应的可执行文件。


name=”nodename”


节点名。注意:名称中不能包含namespace。使用ns属性替代。


args=“arg1 arg2 arg3”(optional)


将参数传递给node。


ns=“foo”(optional)


在’foo’命名空间中启动节点。


clear_params=“true|false”(optional)


在启动之前删除节点私有名称空间中的所有参数。


output=“log|screen”(optional)


如果’screen’,节点的stdout/stderr将被发送到屏幕。如果’log’, stdout/stderr输出将被发送到$ ROS_HOME/log中的一个日志文件,并且stderr将继续被发送到屏幕,默认为’log’。

3.

<include>


这个标签允许我们将另一个roslaunch XML文件导入当前文件。它将在文档的当前范围内导入,包括< group >和< remap >。include文件中的所有内容将被导入,除了< master >标签。

标签中的部分属性解释:


file=”$ (find pkg-name)/path/filename.xml”


要包含的文件名称。


ns=“foo” (optional)


相对于’foo’命名空间导入文件。

4.

<remap>


eg.< remap from=”/different_topic” to=”/needed_topic” />

这个标签允许我们以一种比直接设置的args属性更结构化的方式将名称重映射参数传递给您正在启动的ROS节点。


from="original-name"



to="new-name"


重映射应用于重映射后面的行。在任何重映射行之前启动的节点不受影响。

5.

<param>


这个标签定义了一个要在参数服务器上设置的参数。除了直接使用value来设置参数的值之外,还可以指定一个文本文件、binfile或命令属性来设置参数的值。< param >标签可以放在< node >标签中,在这种情况下,该参数被视为私有参数。

标签中的部分属性解释:


name=”namespace/name”


参数名称。命名空间可以包含在参数名称中,但应避免使用全局指定的名称。


value=“value”(optional)


定义参数的值。如果省略此属性,则必须指定binfile、textfile或command。


type=“str|int|double|bool|yaml”(optional)


指定参数的类型。如果没有指定类型,则roslaunch将尝试自动确定类型。


textfile=”$ (find pkg-name)/path/file.txt”(optional)


文件的内容将被读取并存储为字符串。该文件必须是本地可访问的,但强烈建议使用相对包$ (find)/file.txt语法来指定位置。

6.

<rosparam>


这个标签允许使用rosparam YAML文件从ROS Parameter Server加载和转储参数。它也可以用来删除参数。< rosparam >标签可以放在< node >标签中,在这种情况下,该参数被视为私有名称。

删除和转储命令在加载命令之前运行,也在任何其他参数上载到参数服务器之前运行。删除和转储命令按照声明的顺序运行。

load命令被认为是附加的:如果您声明了参数的字典或名称空间,那么这些参数将被添加到为该名称空间声明的任何其他参数中。类似地,加载命令可以覆盖前面声明的参数。

标签中的部分属性解释:


command=“load|dump|delete” (optional, default=load)


rosparam命令。


file=”$ (find pkg-name)/path/foo.yaml” (load or dump commands)


rosparam文件名。


param=”param-name”


参数的名称。


ns=“namespace” (optional)


将参数作用于指定的命名空间。

7.

<group>


这个标签使将设置应用于一组节点变得更容易。它有一个ns属性,允许您将节点组推入一个单独的名称空间。还可以使用< remap >标签在整个组中应用remap设置。


ns=“namespace” (optional)


将节点组分配到指定的名称空间。名称空间可以是全局的,也可以是相对的,但是最好不用全局名称空间。


clear_params=“true|false” (optional)


在启动之前删除组名称空间中的所有参数。此特性非常危险,应谨慎使用。必须指定ns。

8.

<arg>


这个标签允许您通过指定通过命令行传递的值、通过< include >传递的值或为更高级别文件声明的值来创建更多可重用和可配置的启动文件。Args不是全局的。arg声明是特定于单个启动文件的,很像方法中的局部参数。您必须显式地将参数值传递给包含的文件,就像在方法调用中一样。

< arg >标签有三种用法:


< arg name=“foo” />


声明foo的存在。Foo必须作为命令行参数传递(如果是顶级的),或者通过< include > 传递(如果是包含的)。


< arg name=“foo” default=“1” />


用默认值声明foo。Foo可以被命令行参数覆盖(如果是顶级的),或者通过< include > 传递(如果是包含的)。


< arg name=“foo” value=“bar” />


用常量声明foo。foo的值不能被重写。这种用法允许启动文件的内部参数化,而无需在更高级别上公开该参数化。

还是那几个属性:


name=“arg_name”

default=“default value” (optional)

value=“value” (optional)


这里就不再重复介绍啦~

over

写在最后:第一次在CSDN更系列文章(虽然是工作需要 然后觉得整理到这里比较方便),咱就是说也不太正经,许愿后面越写越成为大牛,完结撒花!



版权声明:本文为weixin_48208348原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。