ROS运行管理---launch文件

Posted loongembedded

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS运行管理---launch文件相关的知识,希望对你有一定的参考价值。

文章目录

1. launch文件概述

1.1 luanch文件概念

launch 文件是一个 XML 格式的文件,可以启动本地和远程的多个节点,还可以在参数服务器中设置参数。

1.2 luanch文件作用

简化节点的配置与启动,提高ROS程序的启动效率。
luanch文件需求背景举例:

  • 一个程序中可能需要启动多个节点,比如:ROS 内置的小乌龟案例,如果要控制乌龟运动,要启动多个窗口,分别启动 roscore、乌龟界面节点、键盘控制节点。如果每次都调用 rosrun 逐一启动,显然效率低下,如何优化?

采用的优化策略便是使用roslaunch 命令集合 launch 文件启动管理节点

2. launch文件启动示例

以启动乌龟和实现键盘控制乌龟为例

2.1 新建luanch文件

在功能包下添加 launch目录, 目录下新建 start_turtle.launch 文件,编辑 launch 文件

<launch>
    <node pkg="turtlesim" type="turtlesim_node"     name="myTurtle" output="screen" />
    <node pkg="turtlesim" type="turtle_teleop_key"  name="myTurtleContro" output="screen" />
</launch>

2.2 调用launch文件

  • roslaunch 包名 start_turtle.launch

执行的结果

roslaunch 命令执行launch文件时,首先会判断是否启动了 roscore,如果启动了,则不再启动,否则,会自动调用 roscore

3. launch文件语法

官方链接添加链接描述
launch文件的来龙去脉:添加链接描述
ROS学习:launch文件编写:添加链接描述

3.1 launch文件标签之launch

launch标签是所有 launch 文件的根标签,充当其他标签的容器

(1) 属性

  • deprecated = “弃用声明”
    告知用户当前launch文件已经弃用,在执行的时候提示警告信息

(2) 子级标签
launch标签下的所有其他标签都是launch的子级标签

3.2 launch文件标签之node

node标签用于指定 ROS 节点,是最常见的标签,需要注意的是: roslaunch 命令不能保证按照 node 的声明顺序来启动节点(节点的启动是多进程的)

<node pkg="turtlesim" type="turtlesim_node"     name="myTurtle" output="screen" />
  • pkg=“包名” :
    节点所属的包名,示例中是turtlesim。
  • type=“nodeType”
    节点类型,节点对应的可执行文件名,示例中是turtlesim_node。
  • name=“nodename”
    运行时显示的节点名称,也就是用命令rosnode list 所看到的节点列表里的名称。这儿定义的名字优先会覆盖可执行程序(如.cpp里面init()赋予的节点名),当两者不一样是以name为准
  • args=“arg1 arg2 arg3”(optional)
    传递给节点的参数。
  • machine=“machine-name”
    在指定机器上运行节点,该标签声明了可以在其上运行ROS节点的计算机。 如果要在本地启动所有节点,则不需要此标记。 它主要用于声明远程计算机的SSH和ROS环境变量设置,但你也可以使用它来声明有关本地计算机的信息。具体属性请参考machine标签。
  • respawn=“true”(optional, default: False)
    当roslaunch启动完所有该启动的节点之后,会监测每一个节点,保证它们正常的运行状态。对于任意节点,当它终止时,roslaunch 会将该节点自动重启。
  • respawn_delay=“30” (optional, default 0)
    如果respawn为true,在检测到节点故障之后等待respawn_delay的时间(单位s),然后再尝试重新启动。
  • required=“true”(optional)
    如果节点死亡,则杀死整个roslaunch
  • ns=“foo”(optional)
    在“ foo”名称空间中启动节点
  • clear_params=“true|false”(optional)
    在启动前,删除节点的私有空间的所有参数
  • output=“log|screen”(optional)
    如果为“ screen”,则来自该节点的stdout / stderr将被发送到屏幕。如果为’log’,则stdout / stderr输出将发送到$ ROS_HOME / log中的日志文件,并且stderr将继续发送到屏幕。默认值为“ log”。
  • cwd=“ROS_HOME|node”(optional)
    如果是“node”,则该节点的工作目录将设置为与该节点的可执行文件相同的目录。
  • launch-prefix=“prefix arguments”(optional)
    在节点的启动参数前添加命令/参数。这是一个强大的特性,使您能够启用gdb、valgrind、xterm、nice或其他方便的工具。

3.3 launch文件标签之include

include标记允许您将另一个roslaunch xml文件导入当前文件。它将在文档的当前范围内导入,包括group和remap标记。将导入包含文件中的所有内容,但master标记除外:master标记仅在最上层文件中遵守。

<include file="$(find region_cover_start)/launch/amcl.launch" />
  • file=“$(find pkg-name)/path/filename.xml”
    要包含的文件名及路径。
  • ns=“foo” (optional)
    导入相对于“foo”命名空间的文件。
  • clear_params=“true|false” (optional Default: false)
    启动前删除include命名空间中的所有参数。此功能非常危险,应小心使用。必须指定ns。默认值:false。
  • pass_all_args=“true|false” (optional Default: false) (New in Indigo and Jade as of roslaunch version 1.11.17)
    如果为true,则当前上下文中设置的所有参数都将添加到为处理包含的文件而创建的子文件上下文中。您可以这样做,而不是显式列出要传递的每个参数。

3.4 launch文件标签之remap

用于话题重命名

  • from=“original-name”
    原始话题名称
  • to=“new-name”
    目标名称

3.5 launch文件标签之param

  • name=“namespace/name”
    参数名称。名称空间可以包含在参数名中,但应避免全局指定的名称。
  • value=“value”(optional)
    定义参数的值。如果省略此属性,则必须指定binfile、textfile或command。
  • textfile=“$(find pkg-name)/path/file.txt”(optional)
    文件的内容将被读取并作为字符串存储。
  • binfile=“$(find pkg-name)/path/file”(optional)
    文件的内容将被读取并存储为base64编码的XML-RPC二进制对象。
  • command=“ ( f i n d p k g − n a m e ) / e x e ′ (find pkg-name)/exe ' (findpkgname)/exe(find pkg-name)/arg.txt’”(optional)
    命令的输出将被读取并存储为字符串。

3.6 launch文件标签之rosparam

  • command=“load|dump|delete” (optional, default=load)
    rosparam命令,加载、导出或删除参数
  • file=“$(find pkg-name)/path/foo.yaml” (load or dump commands)
    加载或导出到的 yaml 文件
  • param=“param-name”
    参数名称
  • ns=“namespace” (optional)
    将参数范围设置在指定的命名空间。
  • subst_value=true|false (optional)
    允许在yaml文本中使用替换参数。

3.7 launch文件标签之group

  • ns=“namespace” (optional)
    group标记使设置更容易应用于一组节点。它有一个ns属性,允许您将节点组推送到一个单独的命名空间中。您还可以使用remap标记在组中应用remap设置。
  • clear_params=“true|false” (optional)
    启动前删除组命名空间中的所有参数。此功能非常危险,应小心使用。必须指定ns。

3.8 launch文件标签之tag

  • name=“arg_name”
    参数的名称
  • default=“default value” (optional)
    参数的默认值。不能与value属性组合。
  • value=“value” (optional)
    参数值。不能与default属性组合。
  • doc=“description for this arg” (optional)
    参数的说明。

以上是关于ROS运行管理---launch文件的主要内容,如果未能解决你的问题,请参考以下文章

4.2 ROS节点运行管理launch文件

ROS-launch文件标签解读

第三课3ROS的launch文件

ROS之launch文件的编写

ros launch 文件整理

(转)由浅到深理解ROS- launch启动文件的理解与编写