【ROS学习】节点运行管理launch文件的基本操作

这篇具有很好参考价值的文章主要介绍了【ROS学习】节点运行管理launch文件的基本操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

launch文件的概念和作用

launch 文件是一个 XML 格式的文件,可以启动本地和远程的多个节点,还可以在参数服务器中设置参数。
launch文件的作用是:简化节点的配置与启动,提高ROS程序的启动效率。

使用场景

launch文件在ros中使用还是比较广泛的,比如:一个程序中可能需要启动多个节点。ROS 内置的小乌龟案例,如果要控制乌龟运动,要启动多个窗口,分别启动 roscore、乌龟界面节点、键盘控制节点。如果每次都调用 rosrun 逐一启动,显然效率低下,这个时候就可以使用launch文件进行优化。

launch的创建

工程中创建一个 launch 文件夹,里面存储项目的launch文件
【ROS学习】节点运行管理launch文件的基本操作
由于launch文件不牵扯到编译,所以更改完launch文件,其实不用编译,直接运行命令:

source ./devel/setup.bash

更新环境,然后运行 roslaunch 项目名 launch文件:

roslaunch launch_base test01.launch
launch文件中的层级结构和命令
1 根标签launch

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

属性:

deprecated = “弃用声明” 告知用户当前 launch 文件已经弃用。运行时,会有红色的警告信息,说此文件已经过时或者弃用

2 node标签

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

属性:

pkg=“包名” 节点所属的包
type=“nodeType” 节点类型(与之相同名称的可执行文件)
name=“nodeName” 节点名称(在 ROS 网络拓扑中节点的名称)
args=“xxx xxx xxx” (可选) 将参数传递给节点
machine=“机器名” 在指定机器上启动节点
respawn=“true | false” (可选) 如果节点退出,是否自动重启
respawn_delay=" N" (可选) 如果 respawn 为 true, 那么延迟 N 秒后启动节点
required=“true | false” (可选) 该节点是否必须,如果为 true,那么如果该节点退出,将杀死整个 roslaunch
ns=“xxx” (可选) 在指定命名空间 xxx 中启动节点
clear_params=“true | false” (可选) 在启动前,删除节点的私有空间的所有参数
output=“log | screen” (可选) 日志发送目标,可以设置为 log 日志文件,或 screen 屏幕,默认是 log

子级标签

env 环境变量设置
remap 重映射节点名称
rosparam 参数设置
param 参数设置

3 include标签

include标签用于将另一个 xml 格式的 launch 文件导入到当前文件

属性

file=“$(find 包名)/xxx/xxx.launch” 要包含的文件路径
ns=“xxx” (可选) 在指定命名空间导入文件

<launch>
    <include file="$(find launch所在项目名)/launch/***.launch"/>
</launch>

子级标签

env 环境变量设置
arg 将参数传递给被包含的文件

4 remap 标签

该标签用于话题的重命名。有时候某些话题需要与其他话题进行同步,则需要该命令进行重新映射。

属性

from=“xxx” 原始话题名称
to=“yyy” 目标名称

子级标签 不含
示例:
本例子中将小乌龟案例中的 /turtle1/cmd_vel 话题映射到 /cmd_vel ,所以该话题可以使用 ROS中内置的 teleop_twist_keyboard 进行小乌龟速度的控制

<node pkg="turtlesim" type="turtlesim_node" name="myTurtle" output="screen">
        <remap from="/turtle1/cmd_vel" to="/cmd_vel"/>
</node>

【ROS学习】节点运行管理launch文件的基本操作
【ROS学习】节点运行管理launch文件的基本操作
将remap注释掉后,再开启teleop_twist_keyboard就发现一直在等待订阅 /cmd_vel 的内容
【ROS学习】节点运行管理launch文件的基本操作

5 param标签

param标签主要用于在参数服务器上设置参数,参数源可以在标签中通过 value 指定,也可以通过外部文件加载,在node标签中时,相当于私有命名空间

属性

name=“命名空间/参数名” 参数名称,可以包含命名空间
value=“xxx” (可选) 定义参数值,如果此处省略,必须指定外部文件作为参数源
type=“str | int | double | bool | yaml” (可选) 指定参数类型,如果未指定,roslaunch 会尝试确定参数类型,规则如下:如果包含 ‘.’ 的数字解析未浮点型,否则为整型"true" 和 “false” 是 bool 值(不区分大小写),其他是字符串

子级标签 不含
示例

<launch>
<param name="param_A" type="int" value="100"/>
<node pkg="turtlesim" type="turtlesim_node" name="myTurtle" output="screen">
 <param name="param_A" type="int" value="100"/>
 </node>
 </launch>

【ROS学习】节点运行管理launch文件的基本操作

6 rosparam标签

rosparam 标签可以从 YAML 文件导入参数,或将参数导出到 YAML 文件,也可以用来删除参数,rosparam标签在node标签中时被视为私有。

属性

command=“load | dump | delete” (可选,默认 load) 加载、导出或删除参数
file=“$(find xxxxx)/xxx/yyy…” 加载或导出到的 yaml 文件
param=“参数名称”
ns=“命名空间” (可选)

子级标签 不含
示例
可以发现 rosparam 在node节点中会增加该节点对应的命名空间

<launch>
 <!-- 测试rosparam load 加载yaml文件 -->
    <rosparam command="load" file="$(find launch_base)/launch/param.yaml"/>
    <node pkg="turtlesim" type="turtlesim_node" name="myTurtle" output="screen">
         <rosparam command="load" file="$(find launch_base)/launch/param.yaml"/>
    </node>
</launch>

【ROS学习】节点运行管理launch文件的基本操作
测试 dump 和 delete

<launch>
<rosparam command="dump" file="$(find launch_base)/launch/param_out.yaml"/>
<rosparam command="delete" param="bg_R"/>
</launch>
7 group标签

group标签可以对节点分组,具有 ns 属性,可以让节点归属某个命名空间

属性

ns=“名称空间” (可选)
clear_params=“true | false” (可选)
启动前,是否删除组名称空间的所有参数(慎用…此功能危险)

子级标签

除了launch 标签外的其他标签

示例
相当于启动了两个小乌龟节点

<launch>
    <group ns="first">
        <node pkg="turtlesim" type="turtlesim_node" name="myTurtle" output="screen" />
        <node pkg="turtlesim" type="turtle_teleop_key" name="myTurtleCon" output="screen" />
     </group>
      <group ns="second">
        <node pkg="turtlesim" type="turtlesim_node" name="myTurtle" output="screen" />
        <node pkg="turtlesim" type="turtle_teleop_key" name="myTurtleCon" output="screen" />
     </group>
</launch>
8 arg标签

arg标签是用于动态传参,类似于函数的参数,可以增强launch文件的灵活性

属性

name=“参数名称”
default=“默认值” (可选)
value=“数值” (可选) 不可以与 default 并存
doc=“描述” 参数说明

子级标签 不含
示例

<launch>
<!-- 类似声明固定的参数 -->
    <arg  name="car_len"   default="15"/>
    <param name="A" value="$(arg car_len)"/>
    <param name="B" value="$(arg car_len)"/>
    <param name="C" value="$(arg car_len)"/>
</launch>

命令文章来源地址https://www.toymoban.com/news/detail-462121.html

roslaunch hello.launch car_len:=

到了这里,关于【ROS学习】节点运行管理launch文件的基本操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 最新PyCharm基本使用(1)------文件(File)设置、管理操作

    目录 一、PyCharm界面布局 二、PyCharm的界面颜色、字体、汉化、indexes、python interpreter设置、创建项目(或文件、模版)、打开、导出等文件操作        这里介绍的内容主要是基于python的PyCharm的基本使用。文中没有特别说明,一般是默认针对python的PyCharm的功能解释,在python项目

    2023年04月25日
    浏览(25)
  • 『Samba』在Linux中实现高效管理共享文件夹的基本操作与实践

    📣读完这篇文章里你能收获到 Samba 的安装和配置:详细介绍了如何在 Linux 操作系统上安装和配置 Samba 服务器 共享文件夹的设置:指导如何选择要共享的文件夹,并为其设置共享名称、路径以及访问权限 Samba 用户的创建:提供了创建 Samba 用户的步骤,并讲解了如何为每个用

    2024年02月13日
    浏览(28)
  • 【linux】:模拟文件基本操作以及文件在磁盘中如何存储的学习

        文章目录 前言 一、模拟C库文件操作 二、磁盘文件 总结   经过我们上一篇对linux系统文件操作的学习想必我们已经会使用系统文件接口了,今天我们就用系统文件接口来封装一个像C语言库那样的文件操作函数的函数来加深我们对文件操作的学习。   首先我们创建相应的

    2023年04月14日
    浏览(33)
  • launch文件的编写及ROS配置文件的详细介绍

    根据ROS的架构和通信机制来看,ROS的各个功能的实现离不开 节点(node) 和 话题(topic)、参数(parameter)、服务(service) 等构成的 网络拓扑(rosgraph) ,其中每个j节点 都可以完成对应的功能。而一个机器人完整功能的实现,通常需要启动多个节点,如果一个节点一个节点的启动,比较

    2024年02月03日
    浏览(29)
  • zookeeper之节点基本操作(头歌)

    开启ZooKeeper服务器。 使用客户端(zkCli.sh)连接客户端(IP:127.0.0.1,端口号:2181)。 创建/enode临时节点(节点数据为空)。 创建/spnode持久节点(节点数据为空)。 断开客户端(zkCli.sh)与客服端连接。 本关任务是使用命令行,进行以下操作: 开启ZooKeeper服务器。 使用客

    2024年02月03日
    浏览(37)
  • ROS第 12 课 Launch 启动文件的使用方法

      我们在前面的教程里面通过命令行来尝试运行新的节点。但随着创建越来越复杂的机器人系统中,打开多个终端且重新输入设置就变得越来越麻烦。   因此我们可以通过创建一个Launch文件,可以同时启动并配置多个需执行的ROS节点,启动更多的功能,另外还可自动启动

    2024年01月21日
    浏览(36)
  • zookeeper之节点基本操作(二)(头歌)

    第一关: 开启ZooKeeper服务器。 使用客户端(zkCli.sh)连接客户端(IP:127.0.0.1,端口号:2181)。 创建/spnode持久节点(节点数据为空)。 使用get命令监听/spnode。 修改/spnode的节点值(当前客户端修改),观察watch事件。 再次使用get命令监听/spnode。 点击评测(评测中修改节点

    2024年04月11日
    浏览(27)
  • 使用 Python、XML 和 YAML 编写 ROS 2 Launch 文件

    ROS2 重要概念 ament_cmake_python 用户文档 ROS2 ament_cmake 用户文档 使用 rosdep 管理 ROS 2 依赖项 ROS 2 launch 文件可以用 Python、XML 和 YAML 编写。本指南介绍了如何使用这些不同的格式来完成相同的任务,并对何时使用每种格式进行了讨论。 下面是一个用 Python、XML 和 YAML 实现的 Launc

    2024年02月05日
    浏览(31)
  • Git学习(一)基于本地操作:Git初识、Git安装(Linux-ubuntu)、Git 基本操作、分支管理

    目录 Git 初识 Git 安装(Linux-ubuntu) Git 基本操作 创建 Git 本地仓库 配置 Git 认识工作区、暂存区、版本库 添加文件 查看 .git 文件 修改文件 版本回退 撤销修改 情况一:对于工作区的代码,还没有 add 情况二:已经 add ,但没有 commit 情况三:已经 add ,并且也 commit 了  删除文

    2024年04月08日
    浏览(53)
  • 动力节点最新RocketMq笔记第一章RocketMQ基本操作

    MQ====Message Queue 官网: http://rocketmq.apache.org/ RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,RocketMQ 是一款开源的 分布式消息系统 ,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包