Navigation 2 学习01 介绍及安装及运行示例

Navigation 2 是什么

Nav2 是 ROS 导航 的综合控制服务,类似人类的小脑控制人类的行走及身体平衡,Nav2
针对移动和地面机器人提供支持的自动驾驶车辆的相同类型的技术,经过优化和改造。该项目旨在找到一种安全的方法,使移动机器人能够在多种类型的环境和机器人运动学类别中完成复杂的任务。它不仅可以从
A 点移动到 B 点,而且可以具有中间姿势,并代表其他类型的任务,例如对象跟踪、完整的覆盖导航等。

官方Navigation 2 服务架构图
下图将让您初步了解 Nav2 的结构。注意:每个服务器中可以有多个用于控制器、规划器和恢复的插件,并具有匹配的 BT 插件。这可用于创建上下文导航行为
在这里插入图片描述

主要实现功能:

它提供感知、规划、控制、定位、可视化等功能,以构建高度可靠的自主系统。这将完成来自传感器数据的环境建模、动态路径规划、计算电机速度、避开障碍物、表示语义区域和对象以及构建更高级别的机器人行为。

Nav2 使用行为树通过编排许多独立的模块化服务器来创建定制的智能导航行为。任务服务器可用于计算路径、控制工作、恢复或任何其他与导航相关的任务。这些单独的服务器通过 ROS 接口(例如操作服务器或服务)与行为树 (BT) 进行通信。机器人可以利用潜在的许多不同的行为树来允许机器人执行许多类型的独特任务。

Nav2 的预期输入是符合 REP-105 的 TF 转换、地图源(如果使用静态成本地图层)、BT XML 文件以及任何相关传感器数据源。然后,它将为完整或非完整机器人的电机提供有效的速度命令以供其遵循。目前,我们支持所有主要的机器人类型:完整型、差速驱动型、腿式和阿克曼(类似汽车)基本类型!我们通过圆形和任意形状的机器人为它们提供独特的支持,以进行 SE2 碰撞检查。

它具有以下工具:

  • 加载、服务和存储地图(地图服务器)

  • 在地图上定位机器人 (AMCL)

  • 围绕障碍物规划从 A 到 B 的路径 (Nav2 Planner)

  • 控制机器人沿着路径行驶(Nav2 控制器)

  • 平滑路径计划更加连续和可行(Nav2 Smoother)

  • 将传感器数据转换为世界地图表示(Nav2 Costmap 2D)

  • 使用行为树(Nav2 行为树和 BT Navigator)构建复杂的机器人行为

  • 计算发生故障时的恢复行为(Nav2 恢复)

  • 遵循连续航路点(Nav2 航路点跟随器)

  • 管理服务器的生命周期和监视程序 (Nav2 Lifecycle Manager)

  • 用于启用您自己的自定义算法和行为的插件(Nav2 Core)

  • 监控原始传感器数据以了解即将发生的碰撞或危险情况(碰撞监视器)

  • Python3 API 以 pythonic 方式与 Nav2 交互(Simple Commander)

  • 输出速度更平滑,以保证命令的动态可行性(速度平滑器)

安装 Nav2 二进制文件以及在 Gazebo 模拟器中导航模拟 Turtlebot 3 的过程

安装

前提:已经安装好了ros2 ,我这边装的是humble, ros2-distro 换成自己的安装版本

使用操作系统的包管理器安装 Nav2 包:

sudo apt install ros-<ros2-distro>-navigation2
sudo apt install ros-<ros2-distro>-nav2-bringup

安装 Turtlebot 3 软件包(简陋和较旧的):

sudo apt install ros-<ros2-distro>-turtlebot3-gazebo

运行示例

在 GUI 中启动终端

设置关键环境变量:

source /opt/ros/<ros2-distro>/setup.bash
export TURTLEBOT3_MODEL=waffle
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/<ros2-distro>/share/turtlebot3_gazebo/models

在同一终端中,运行:

ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False

此启动文件将在世界范围内启动带有 AMCL 定位器的 Nav2 turtlebot3_world。它还将启动机器人状态发布器来提供转换、带有 Turtlebot3 URDF 的 Gazebo 实例和 RVIZ。

如果一切正常启动,您将看到 RViz 和 Gazebo GUI,如下所示:

在这里插入图片描述

在这里插入图片描述

如果没有自动启动,请单击 RViz 左下角的“启动”按钮。这将导致 Nav2 更改为活动状态。它应该改变外观以显示地图。

在这里插入图片描述

导航

启动后,机器人最初不知道自己在哪里。默认情况下,Nav2 等待您为其提供大致的起始位置。查看机器人在 Gazebo 世界中的位置,并在地图上找到该位置。通过单击 RViz 中的“2D Pose Estimate”按钮设置初始姿势,然后向下单击该位置的地图。您可以通过向下单击向前拖动来设置方向。

如果到目前为止您使用的是默认设置,则机器人应该大致如下所示。

在这里插入图片描述

如果您没有找到完全正确的位置,那也没关系。Nav2 将在导航时优化位置。如果您愿意,也可以单击“2D Pose Estimate”按钮并重试。

设置初始姿势后,变换树将完成,并且 Nav2 将完全激活并准备就绪。您现在应该看到机器人和粒子云。

在这里插入图片描述

接下来,单击“Nav2 Goal”按钮并选择目的地。这将调用 BT 导航器通过操作服务器到达该目标。您可以通过所示的 Nav2 rviz 插件暂停(取消)或重置操作。

在这里插入图片描述

到达目的后

在这里插入图片描述

参考地址:https://navigation.ros.org/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx离线部署-aarch64架构

nginx离线部署-aarch64架构 服务器环境: 架构&#xff1a;aarch64&#xff0c; 系统&#xff1a;Red Hat &#xff08;CentOS 7&#xff09; nginx 1.24 需要准备这些&#xff1a; 可以先尝试安装 Nginx 安装NGINX 内网是没有网络的需要使用 RPM 包安装 gcc&#xff0c; g…

绘制太极图 - 使用 PyQt

大家好&#xff01;今天我们将一起来探讨一下如何使用PyQt&#xff0c;这是一个强大的Python库&#xff0c;来绘制一个传统的太极图。这个图案代表着古老的阴阳哲学&#xff0c;而我们的代码将以大白话的方式向你揭示它的奥秘。 PyQt&#xff1a;是什么鬼&#xff1f; 首先&a…

架构师之路(十六)计算机网络(传输层)

前置知识&#xff08;了解&#xff09;&#xff1a;计算机基础。 作为架构师&#xff0c;我们所设计的系统很少为单机系统&#xff0c;因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 既然网络层已经…

.net访问oracle数据库性能问题

问题&#xff1a; 生产环境相同的inser语句在别的非.NET程序相应明显快于.NET程序&#xff0c;执行时间相差比较大&#xff0c;影响正常业务运行&#xff0c;测试环境反而正常。 问题详细诊断过程 问题初步判断诊断过程&#xff1a; 查询插入慢的sql_id 检查对应的执行计划…

直播间流程解析基础

通过用户心理需求引导用户行为 贯穿内容和产品牵引想要和需要 直播间内流程解析 分为播前准备、开播暖场、产品介绍、穿插活动、结尾预告 &#xff08;1&#xff09;直播间内流程解析----播前准备 &#xff08;2&#xff09;直播间内流程解析----开播暖场 &#xff08;3&…

互联网加竞赛 基于机器视觉的银行卡识别系统 - opencv python

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的银行卡识别算法设计 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng…

电涌保护器(SPD)、后备保护器(SCB)、断路器(CB)的区别与应用

随着现代电力系统的不断发展&#xff0c;电力设备的保护显得愈发重要。其中&#xff0c;电涌保护器&#xff08;SPD&#xff09;、后备保护器&#xff08;SCB&#xff09;和断路器&#xff08;CB&#xff09;是三种常见的保护设备&#xff0c;但它们各自具有不同的功能和特点。…

【渗透测试】借助PDF进行XSS漏洞攻击

简介 在平时工作渗透测试一个系统时&#xff0c;常常会遇到文件上传功能点&#xff0c;其中大部分会有白名单或者黑名单机制&#xff0c;很难一句话木马上传成功&#xff0c;而PDF则是被忽略的一个点&#xff0c;可以让测试报告更丰富一些。 含有XSS的PDF制作步骤 1. 编辑器…

论文阅读《thanking frequency fordeepfake detection》

项目链接&#xff1a;https://github.com/yyk-wew/F3Net 这篇论文从频域的角度出发&#xff0c;提出了频域感知模型用于deepfake检测的模型 整体架构图&#xff1a; 1.FAD&#xff1a; 频域感知分解&#xff0c;其实就是利用DCT变换&#xff0c;将空间域转换为频域&#xff…

element+vue 之 v-limit 按钮操作权限

1.新建一个permission.js文件 import store from /storeexport default {inserted: function (el, binding) {const { perms: limits } store.state.userconst { value: params } bindingif (!limits.length) returnif (params && Array.isArray(params)) {if (!limi…

08.Elasticsearch应用(八)

Elasticsearch应用&#xff08;八&#xff09; 1.为什么需要相关性算分 我们在文档搜索的时候&#xff0c;匹配程度越高的相关性算分越高&#xff0c;算分越高的越靠前&#xff0c;但是有时候我们不需要算分越高越靠前我们可能需要手动影响算分来控制顺序比如广告&#xff08…

2016年认证杯SPSSPRO杯数学建模A题(第一阶段)洗衣机全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 A题 洗衣机 原题再现&#xff1a; 洗衣机是普及率极高的家用电器&#xff0c;它给人们的生活带来了很大的方便。家用洗衣机从工作方式来看&#xff0c;有波轮式、滚筒式、搅拌式等若干种类。在此基础上&#xff0c;各厂商也推出了多种具体方案…

微信小程序(十五)自定义导航栏

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.组件文件夹创建方法 2.自定义组件的配置方法 3.外部修改组件样式&#xff08;关闭样式隔离或传参&#xff09; 创建组件文件夹 如果是手动创建建议注意在json文件声明&#xff1a; mynav.json {//声明为组件可…

从CDN了解到的边缘计算与前端渲染

文章概叙 本文代码量较少&#xff0c;讲的是在云开发的基础上使用边缘计算的&#xff0c;代码量不高&#xff0c;​建议看完理解下就可以丢了&#xff0c;知道个概念就好。 废话1 第一次接触边缘计算是在2020年的时候&#xff0c;公司的cloud课程中&#xff0c;有一些相关概…

php二次开发股票系统代码:腾讯股票数据接口地址、批量获取股票信息、转换为腾讯接口指定的股票格式

1、腾讯股票数据控制器 <?php namespace app\index\controller;use think\Model; use think\Db;const BASE_URL http://aaaaaa.aaaaa.com; //腾讯数据地址class TencentStocks extends Home { //里面具体的方法 }2、请求接口返回内容 function juhecurl($url, $params f…

力扣刷题 第十二 边权重均等查询

现有一棵由 n 个节点组成的无向树&#xff0c;节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges &#xff0c;其中 edges[i] [ui, vi, wi] 表示树中存在一条位于节点 ui 和节点 vi 之间、权重为 wi 的边。 另给你一个长度为 m 的二维整数数…

【前端基础--4】

定位属性 position 可以将元素定位到你想要放到位置&#xff0c;使用方位值来进行移动(top,left,right,bottom)。 1.相对定位 position: relative; top: 20px; left: 20px; 以自身为定点进行移动&#xff0c;不会脱离文档流。 不会影响元素本身的性质&#xff1b;块级…

性能优化-OpenCL 介绍

「发表于知乎专栏《移动端算法优化》」 本文首先对 GPU 进行了概述&#xff0c;然后着重地对移动端的 GPU 进行了分析&#xff0c;随后我们又详细地介绍了 OpenCL 的背景知识和 OpenCL 的四大编程模型。希望能帮助大家更好地进行移动端高性能代码的开发。 &#x1f3ac;个人简介…

RisingWave 多流 Join 实现高效实时数据打宽

在公司业务场景中&#xff0c;通常需要使用流计算引擎从多个数据源获取数据、进行 ETL 操作&#xff0c;并将清洗后的数据导入到数据分析系统或数据湖中。由于最后产生出来的表是一张宽表&#xff0c;我们通常也称这个过程为“数据打宽“。 数据打宽在流处理系统中对应的操作便…

Fiddler 过滤地址设置及导出JMeter脚本插件原理

Fiddler 过滤地址设置 1、在fiddler右边工具栏中找到Filters过滤器->勾选&#xff1a;Use Filters->在hosts中选择过滤规则和要过滤的地址。 如下图&#xff1a; 2、点击【Actions】按钮&#xff0c;选择&#xff1a;Run Filterset now&#xff0c;就会立即生效&#x…