ROS学习记录10——.launch文件的编写与使用

news/2024/11/18 4:16:54/

零.前言

roslacunch,只是方便我们一次运行大量节点,或者通过单个脚本运行多个节点的工具。
这部分没啥好讲的,主要使用为机翻+调校官方文档,外加一些实例,
官方文档的地址:roslaunch/XML

一.元素结构

roslaunch也是由xml语言构成,文件后缀为.launch.
launch文件因该由<launch></launch>开始与结束,其他参数均为该TAG的子元素。
其子元素有:
<node><machine><include><remap>``<env><param><rosparam><group><test><arg>
文本着重会讲个别的元素。

二.标签讲解

2.1 <node>

<node>标记指定您希望启动的ROS节点。
这是最常见的roslaunch标签,因为它支持最重要的功能:启动和关闭节点。
roslaunch不保证节点开始的顺序,因为无法从外部知道何时完全初始化节点,因此所有启动的代码都必须能够按任意顺序启动。
举例:

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

以带有命令行参数--test的方式去调用rospy_tutorials包中的可执行文件listener.py ,来启动listener1节点。如果该节点意外终止,则会重新启动该节点。

<node>里可以添加以下常见的参数

  • pkg=“mypackage”, 包名
  • type=“nodetype” ,执行文件的名称如果是用Python编写的就填写xxx.py,如果是cpp就写编译生成的可执行文件名
  • name=“nodename”,这将会覆盖掉ros::init()定义的node_name
  • args=“arg1 arg2 arg3”, 带的参数
  • respawn=“true”,默认为false,节点挂掉/退出后是否重新启动。
  • required=“true”,如果该节点退出/挂掉,会杀死roslaunch的所有进程。
  • clear_params=“true|false”,在启动之前,删除节点的私有名称空间中的所有参数。
  • output=“log|screen”, 若为screen,stdout/stderr 会显示在屏幕上,若为logstdout/stderr 会被记录到$ROS_HOME/log,仅显示stderr。注stderr是那个红色的错误字体。

2.2 <param>

<param name=“publish_frequency” type=“double” value=“10.0” />

比如这行代码则为整个ros运行期间创建一个publish_frequency的变量(参数),类型为double,值为10.0
也就是说,这个变量在节点中也可以使用。

2.3 <arg>

类似于linux的bash文件,通过这样可以定义一个在该launch文件里有效的变量名。比如<arg name="test" value="123"/>, 这样,后面的launch文件里所有的$(arg test)均会被"123"替换.

三.实例

本节通过启动上篇文章的.urdf来实现通过自定义launch来实现Rviz的启动。
首先创建功能包,我就以学习记录3的top举例。(好了,假设现在功能包创建好了)
创建urdf文件夹并复制我们上篇的意大利炮进文件夹。
在这里插入图片描述

创建launch文件夹和.launch文件

<launch><param name="robot_description" textfile="$(find top)/urdf/mortar.urdf" /><param name="use_gui" value="true"/><node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node><node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /><node name="rviz" pkg="rviz" type="rviz" args="-d $(find top)/urdf/config.rviz" />
</launch>

解释:

  • robot_description 这个变量是rviz节点会用的,需要写入urdf的文件路径。$(find xxx)可以找到xxx包的位置,这样textfile就是我们的路径了。
  • use_gui 是下个节点的需要的变量,用于是否可视化显示调节关节移动的信息。
  • 紧接着的两个node是用于发布joint的状态和发布joint和link相对位置(TF实现)的节点。
  • rviz是显示rviz的节点,且添加了参数,若有rviz的配置文件,则可以读取,若没有,等会儿保存一个就行。

如果没有出现机器人模型,要么是工作空间的问题,要么就是launch的代码与你工作空间或者文件不匹配
ros noetic需要改成

<launch><param name="robot_description" textfile="$(find slam_nb)/urdf/car.urdf" /><param name="use_gui" value="true"/><node name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" /><node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /><node name="rviz" pkg="rviz" type="rviz" args="-d $(find slam_nb)/urdf/config.rviz" required="true"></node>
</launch>

现在 我们运行下这个launch:

roslaunch top show_mortar.urdf

得到这个
在这里插入图片描述
我们暂时将这个改为base_link:
在这里插入图片描述
再添加显示RobotModel的选项:
在这里插入图片描述我们的迫击炮就出来了:
在这里插入图片描述这里选择file->save config as: 到我们的launch文件里所描述的位置
在这里插入图片描述在这里插入图片描述
再次运行就默认配置啦:
在这里插入图片描述


http://www.ppmy.cn/news/439984.html

相关文章

Mocor

简介 Mocor 是展讯推出的一种手机平台的代号。首次出现在2007年的“展讯技术论坛”上&#xff0c;展讯总裁武平博士正式向外界公开的一种平台战略。 图标 展讯Mocor™平台致力于无线通信、多媒体、互联网技术的融合&#xff0c;为客户提供极具竞争力的平台解决方案。 展讯Mocor…

微星 MAG B660M MORTAR WIFI DDR i5-12600KF电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。 硬件型号驱动情况 主板微星 MAG B660M MORTAR WIFI DDR 处理器i5-12600KF已驱动 内存12 GB已驱动 硬盘500GB WD Blue Solid State Drive & 2TB Seagate Mobile Hard Drive (Upgraded)已驱动 显卡RX580已驱动 声卡瑞昱 …

Square 开源库Flow和Mortar的介绍

原文链接 : Architecting An Investigation into Flow and Mortar译者 : sundroid( chaossss 协同翻译)校对者: chaossss、Mr.Simple 状态 : 完成 “在 App 开发过程中尽可能使用 Fragment 替代 Activity”&#xff0c;Google 官方的这个建议无疑让万千 Android 开发者开始关注…

MortIIs Story

以下文章转载自不知名的网上连接这几天在听MortIIs的《The Smell of Rain》优美的曲调营造出的黑暗氛围极度让人着迷于是搜索了一下网上关于MortIIs的资料**********紧身皮衣&#xff0c;繁复的缀饰&#xff0c;有时还在背后装饰上蝙蝠的双翼&#xff0c;扮相古怪奇特的Mortiis…

Moniter

了解这个Moniter的实现原理之前&#xff0c;可以说大家已经初步了解了synchronized的底层原理了。无论是同步方法还是同步代码块&#xff0c;无论是ACC_SYNCHRONIZED还是monitorenter、monitorexit都是基于Monitor实现的。 那我们就简单了解下什么Monitor吧&#xff01;&#…

monorepo

&#xff08;一&#xff09;monorepo 管理 1. monorepo 是管理项目代码的一种方式&#xff0c;指在一个仓库项目(repo)中管理多个模块/包(package) 2. monorepo 最主要的好处是统一的工作流和代码共享 3. Lerna 是一个管理多个 npm 模块的工具&#xff0c;优化维护多包的工作…

MOT

单目标跟踪算法的评价指标不用我多说&#xff0c;因为其跟踪情况较为简单&#xff0c;已经有较为明确的判断指标&#xff0c;但是一直以来&#xff0c;多目标跟踪的评价指标都未统一&#xff0c;跟踪算法的论文中也是用各种评价指标来分析自身的算法&#xff0c;但是缺少与其它…

MOT-SORT

MOT&#xff08;一&#xff09;-SORT 简介一、基础知识介绍卡尔曼滤波匈牙利算法 二、SORT基本逻辑1. 物体状态描述2. 卡尔曼预测3. 匈牙利分配4. 卡尔曼更新 三. 代码解读四. 小结 论文地址&#xff1a;链接 代码地址&#xff1a;链接 简介 谈到 MOT &#xff0c;SORT 和 DE…