转载自roslaunch的.launch文件的标签总结_launch中的env配置时间-CSDN博客,侵删
.launch文件的标签总结
- 1. ==launch 标签==
- 2. ==node标签==
- 3. ==machine标签==
- 4.==include标签==
- 5. ==remap标签==
- 6. ==env标签==
- 7.==param标签==
- 8. ==rosparam标签==
- 9. ==arg标签==
- 10. ==group标签==
- 11. ==test标签==
1. launch 标签
链接:launch标签
<launch>
标签是任何roslaunch文件的根元素,它唯一的目的是作为其他元素的容器。
1.2 可包含的元素
Elements | 说明 |
---|---|
<node> | 运行一个节点 |
<param> | 设置一个参数在参数服务器上 |
<remap> | 声明重映射ros计算图资源的命名 |
<machine> | 声明用于启动时的机器 |
<rosparam> | 加载文件中的多个参数 |
<include> | 包含了其他的ros launch文件 |
<env> | 为启动节点指定一个环境变量。 |
<test> | 运行一个测试节点,详见rostest |
<arg> | 声明一个参数 |
<group> | 将共享名称空间或重新映射的封闭元素分组 |
2. node标签
链接:node标签
<node>
可以指定一个您想要运行的ROS节点,这是最常见的roslaunch标签,因为它支持最重要的特性:启动和关闭节点。
roslaunch不提供任何关于节点开始顺序的保证。这是有意的:无法从外部知道节点何时完全初始化,因此所有启动的代码都必须能够以任何顺序启动。
roslaunch教程页面包含了一些如何充分利用标记的示例。
2.1 属性
2.1.1 必选
Attributes | 说明 |
---|---|
pkg=“mypackage” | 节点所在的功能包 |
type=“nodetype” | 节点的类型,这里必须有一个同名的节点对应可执行文件。 |
name=“nodename” | 节点运行时的名称。注意:名称不能包含命名空间,若包含请改用ns属性。 |
2.1.2 可选项
以上三个属性是必须的,下面的属性皆为可选项:
Attributes | 说明 | 备注 |
---|---|---|
args=“arg1 arg2 arg3” | 将参数传递给节点 | |
machine=“machine-name” | 在指定的机器上启动节点 | 见machine标签 |
respawn=“true” | 如果设置为true,则当该节点退出时,重启节点 | 默认为FALSE |
respawn_delay=“30” | 如果需要重启节点,则在节点故障后等到30s再重启 | 默认为0 |
required=“true” | 设置为true时,如果该节点关闭,则关闭所有节点。 | |
ns=“foo” | 启动’foo’命名空间中的节点。 | |
clear_params=“true / false” | 启动前删除节点私有命名空间中的所有参数 | |
output=“log / screen” | 如果选择了“screen”,则该节点的输出和错误都将发送到屏幕终端上现实。如果选择了“log”,则将输出和错误发送到$ROS_HOME/log下的log文件中,但错误也会继续发送到屏幕上。 | 默认为log |
cwd=“ROS_HOME/node” | 如果为“节点”,则节点的工作目录将设置为与节点的可执行文件相同的目录。在C语言中,默认值为“ROS_HOME”。在Box Turtle(ROS 1.0.x)中,默认值为“ROS根”。C语言中不推荐使用“ros root”。 | |
launch-prefix=“prefix arguments” | 将命令/参数添加到节点的启动参数前。这是一个强大的特性,使您能够启用gdb、valgrind、xterm、nice或其他方便的工具。 |
2.2 例子
<node name="listener1" pkg="rospy_tutorials" type="listener.py" args="--test" respawn="true" />
- 1
2.3 元素
Elements | 说明 |
---|---|
<param> | 在节点的~/本地名称空间中设置参数。 |
<remap> | 声明重映射ros计算资源的命名 |
<rosparam> | 将参数文件加载到此节点的~/local命名空间中。 |
<env> | 设置节点的环境变量 |
3. machine标签
链接:machine标签
标记声明可以在其上运行ROS节点的机器。如果所有节点均在本地启动,则不需要此标记。它主要用于声明远程计算机的SSH和ROS环境变量设置,不过您也可以使用它声明有关本地计算机的信息。
3.1 属性
3.1.1 必选
Attributes | 说明 |
---|---|
name=“machine-name” | 要分配给机器的名称。这对应于标记的机器属性所使用的名称。 |
address=“blah.willowgarage.com” | 计算机的网络地址/主机名。 |
env-loader="/opt/ros/fuerte/env.sh" | 指定远程计算机上的环境文件。环境文件必须是一个shell脚本,用于设置所有必需的环境变量,然后对提供的参数运行exec。详情见链接machine标签,有相关示例文件。 |
3.1.2 可选
Attributes | 说明 | 备注 |
---|---|---|
default=“true/false/never” | 将此计算机设置为要向其分配节点的默认计算机。默认设置仅适用于稍后在同一范围内定义的节点。 | 注意:如果没有默认机器,则使用本地机器。您可以通过设置default=“never”来防止选择机器,在这种情况下,只能显式分配机器。 |
user=“username” | 用于登录计算机的SSH用户名。如果不需要,可以省略。 | |
rpassword=“passwhat” | SSH密码。强烈建议您改为配置SSH密钥和SSH代理,以便可以使用证书登录 | |
timeout=“10.0” | 节点在该台机器上启动的时间,如果超过了这个时间则认为无法启动。虽然您可以使用此设置来允许较慢的连接,但是需要更改此参数通常是您的总体 ROS 存在通信问题的一个症状。 | 默认为10s |
4.include标签
链接:include标签
<include>
标记允许您将另一个roslaunch XML文件导入到当前文件中。它将在您的文档的当前范围内导入,包括<group>
和<remap>
标记。包含文件中的所有内容都将被导入,除了<master>
标记:<master>
标记只在顶级文件中执行。关于``标签,详见链接。
4.1 属性
4.1.1 必选
Attributes | 说明 |
---|---|
file="$(find pkg-name)/path/filename.xml" | 要包含的文件名,以及对应的相对路径和功能包 |
4.2 可选
Attributes | 说明 | 备注 |
---|---|---|
ns=“foo” | 导入foo’命名空间相关联的文件。 | |
clear_params=“true/false” | 在启动之前删除的命名空间中的所有参数。这个特性非常危险,应该谨慎使用。必须指定Ns | 默认:FALSE |
pass_all_args="true | false" | 如果为true,则当前上下文中设置的所有参数都将添加到为处理包含的文件而创建的子上下文中。可以这样做,而不是显式列出要传递的每个参数。 |
4.2 元素
Elements | 说明 |
---|---|
<arg> | 向include的文件传递一个参数。 |
<env> | 在整个include的文件中设置一个环境变量。 |
5. remap标签
详情见链接:remap标签
重映射。使用时
- from:原命名
- to : 映射之后的命名
<remap from="/different_topic" to="/needed_topic"/>
- 1
6. env标签
<env>
标签允许您在启动的节点上设置环境变量。此标签只能在<launch>
、<include>
、<node>
或<machine>
标签的范围内使用。当它在<launch>
标签内使用时,<env>
标签仅适用于之后声明的节点。可以在EnvironmentVariables中找到一些环境变量。
注意:使用标签设置的值不会被$(env…)看到,因此标记不能用于参数化启动文件。
6.1 属性
Attributes | 说明 |
---|---|
name=“environment-variable-name” | 您正在设置的环境变量。 |
value=“environment-variable-value” | 环境变量的值。 |
7.param标签
链接:param标签<param>
标签可以在参数服务器中定义一些参数。在值的设定上,您可以指定一些textfile(文本文件)、binfile(二进制文件)或命令属性来设置。<param>
标签可以放在`````标签的内部,在这种情况下,参数被视为私有参数。
您还可以通过在 < param > 标签中使用 ~ param 语法(参见 ROS 名称)在一组节点上设置私有参数。
7.1 属性
7.1.1 必选
Attributes | 说明 |
---|---|
name=“namespace/name” | 参数名称。命名空间可以包含在参数名称中,但应避免全局指定的名称。 |
7.1.2可选
Attributes | 说明 | 备注 |
---|---|---|
value=“value” | 参数的值。定义参数的值。如果省略此属性,则必须指定binfile、textfile或command。 | |
type=“str/int/double/bool/yaml” | 指定参数的类型。如果您没有指定类型,roslaunch将尝试自动确定类型。 | |
textfile="$(find pkg-name)/path/file.txt" | 文本文件的内容将被读取并以字符串的形式存储。该文件必须在本地可访问,强烈建议使用相对路径的$(find)/file.txt语法来指定位置。 | pgk-name是功能包的名称 |
binfile="$(find pkg-name)/path/file" | 文件的内容将被读取并存储为base64编码的XML-RPC二进制对象。该文件必须在本地可访问。强烈建议使用相对路径的$(find)/file.txt语法来指定位置。 | |
command=" ( f i n d p k g − n a m e ) / e x e ′ (find pkg-name)/exe ' (findpkg−name)/exe′(find pkg-name)/arg.txt’" | 命令的输出将被读取并存储为字符串。强烈建议您使用相对路径的$(find)/file.txt语法来指定文件参数。由于XML转义要求,您还应该使用单引号引用文件参数。 |
7.3 示例
<param name="params_a" type="yaml" command="cat '$(find roslaunch)/test/params.yaml'" />
- 1
在上面的示例中,所描述的文件中的参数将被加载到本地名称空间params_a下。
8. rosparam标签
链接:rosparam标签
<rosparam>
标签允许使用rosparam YAML文件从ROS参数服务器加载和转储参数。它还可以用来删除参数。<rosparam>
标签可以放在<node>
标签中,在这种情况下,参数被视为私有的。
delete和dump命令在load命令之前运行,以及在将任何其他参数上传到参数服务器之前运行。delete和dump命令按照顺序执行。
load命令被认为是可添加的:如果您声明了参数的字典或命名空间,那么这些参数将添加到为该命名空间声明的任何其他参数中。类似地,load命令可以覆盖以前声明的参数。
标签可以引用YAML文件,也可以包含原始YAML文本。如果YAML文本定义了字典,则可以省略param属性。
8.1 属性
8.1.1 必选
Attributes | 说明 |
---|---|
param=“param-name” | 参数名称。 |
8.1.2 可选
Attributes | 说明 | 备注 |
---|---|---|
command=“load/dump/delete” | rosparam的命令。 | 详见rosparam。load导入,dump存储,delete删除,默认为load。 |
file="$(find pkg-name)/path/foo.yaml" | rosparam文件名称。 | load或dump命令的对象。 |
ns=“namespace” | 将参数限定到指定的命名空间。 | |
subst_value=true/false | 允许在YAML文本中使用替换参数。 |
9. arg标签
链接:arg标签<arg>
标记允许您通过指定通过命令行传递的值、通过<include>
传递的值或为更高级别的文件声明的值来创建更多可重用和可配置的启动文件。参数不是全局的。arg声明是特定于单个启动文件的,很像方法中的局部参数。必须显式地将参数值传递给包含的文件,就像在方法调用中一样。
9.1 使用案例
<arg>
可以有以下三种使用方式
- 声明foo的存在。Foo必须作为命令行参数传入(如果是顶级的),或者通过传入(如果包含)。
<arg name="foo" />
- 1
- 使用默认值声明foo。foo可以通过命令行参数(如果是顶级的)或通过传递(如果包含)来覆盖。
<arg name="foo" default="1" />
- 1
- 声明foo为常量值。foo的值不能被重写。这种用法支持启动文件的内部参数化,而无需在更高级别公开该参数化。
<arg name="foo" value="bar" />
- 1
10. group标签
链接:group标签
标记使设置更容易应用于一组节点。它有一个ns属性,允许您将节点组推送到一个单独的命名空间中。您还可以使用标记在整个组中应用remap设置。
10.1 可选属性(无必选)
Attributes | 说明 |
---|---|
ns=“namespace” | 将节点组分配给指定的命名空间。命名空间可以是全局的,也可以是相对的,但不鼓励使用全局命名空间。 |
clear_params=“true/false” | 在启动之前删除组命名空间中的所有参数。这个特性非常危险,应该谨慎使用。必须指定Ns。 |
11. test标签
链接:test标签
。。。。。