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…

USART通讯

提示&#xff1a;文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 前期疑问&#xff1a; 1、一开始没有搞明白到底是USART还是UART。 2、其中还涉及到一个同步的概念。同步就是是否有时钟线同步。USART是串口同步异步发送接收器。USART没有时钟线是怎么实现同步的。 3、…

服务器上面安装nodejs react

1、nvm管理nodejs 2、修改端口 /node_modules/react-scripts/scripts/start.js // 这是start.js部分源码 const DEFAULT_PORT parseInt(process.env.PORT, 10) || 3000; const HOST process.env.HOST || 0.0.0.0;// 将3000修改自己需要的端口号 const DEFAULT_PORT parseIn…

KMP字符串匹配算法

介绍&#xff1a; KMP算法是一种改进的字符串匹配算法&#xff0c;由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt提出的&#xff0c;因此人们称它为克努特—莫里斯—普拉特操作&#xff08;简称KMP算法&#xff09;。KMP算法的核心是利用匹配失败后的信息&#xff0c;尽量减少…

绘制太极图 - 使用 PyQt

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

C# 中的接口

简介 官方说明&#xff1a;接口定义协定。 实现该协定的任何 class 或 struct 必须提供接口中定义的成员的实现。 接口可为成员定义默认实现。 它还可以定义 static 成员&#xff0c;以便提供常见功能的单个实现。 从 C# 11 开始&#xff0c;接口可以定义 static abstract 或 …

【AI-Pos系列】DeepLabCut 学习

level: nature neuroscience author:Alexander Mathis  1,2, Pranav Mamidanna1 , Kevin M. Cury3 , Taiga Abe3 , Venkatesh N. Murthy  2 , Mackenzie Weygandt Mathis  1,4,8* and Matthias Bethge1,5,6,7,8 date: 2018 keyword: quantifying behavior; pose estimation;…

超级胶水(第十一届蓝桥杯)

题目 小明有 n n n颗石子&#xff0c;按顺序摆成一排。他准备用胶水将这些石子粘在一起。 每颗石子有自己的重量&#xff0c;如果将两颗石子粘在一起&#xff0c;将合并成一颗新的石子&#xff0c;重量是这两颗石子的重量之和。 为了保证石子粘贴牢固&#xff0c;粘贴两颗石…

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

前置知识&#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…

如何利用PyTorch?

上一篇文章介绍了“What is PyTorch?”,本篇文章探讨一下“How to use PyTorch&#xff1f;” 1、PyTorch PyTorch 是一个开源机器学习库&#xff0c;基于 Torch 库开发&#xff0c;主要由 Facebook 的人工智能研究实验室&#xff08;FAIR&#xff09;研发。它是一个强大且灵…

【备忘】thinkphp5.1之websocket长连接框架使用流程简述

前言 本文纯属经验备注&#xff0c;有许多地方未进行测试&#xff0c;请勿照搬&#xff0c;仅供参考。 之前专门花了几天时间测试了websocket&#xff0c;当时只记得踩了许多坑&#xff0c;但是没有对测试流程进行记录&#xff0c;导致长时间未使用从而无从下手。 今天就简单…

08.Elasticsearch应用(八)

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

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

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