ROS2 学习08 导航Nav2:简介、安装、测试效果、错误处理

news2024/12/24 10:09:22

1、简介

在ROS2中自动导航使用Nav2来实现。
Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。
Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源;
Nav2 输出速度命令;
Nav2 支持多种机器人,比如:四足机器人、履带机器人、轮式机器人等

2、概念

1)动作服务器(Action Server):由话题和服务协作完成,例如:开始执行动作、动作是否响应、传输执行动作时的过程数据、动作完成反馈等。
2)生命周期节点(Lifecycle Nodes):管理ROS2系统中的节点生命周期,比如节点的启动、未激活、激活、关闭等行为
3)行为树(BT,Behavior Trees):创建了一个更具可扩展性和人类可理解的框架,用于定义多步骤或多状态应用程序,构建复杂的机器人行为
4)Planner:路径规划,比如,最短路径、路径全覆盖、预定义路径
5)Controller:控制,ROS1中称为本地规划,比如,解决动态障碍物的情况
6)Smoother:平滑器,减少不规则路径,比如突然旋转等情况
7)Recovery:恢复,当机器人遇到复杂障碍物或者控制算法有bug时,导致机器人卡住不动,可以执行原地倒退或旋转等操作,来恢复自主导航;实在不行,给操作者发求救信息
8)Waypoint Following:航点跟随,即导航到达多个目的地
9)REP-105:一个标准,定义机器人导航所需的位置、姿态的框架和约定,比如至少需要的功能包:map -> odom -> base_link -> [sensor frames]
10)Odometry:里程计,里程计使用激光雷达、雷达、车轮编码器、VIO 或 IMU等信息,为机器人提供局部坐标系
11)Global Positioning:全球定位,包括GPS、SLAM等,提供全局坐标,并解决里程计的漂移
12)Costmap:代价地图,用相机或深度传感器检测和跟踪场景中的障碍物,避免碰撞
13)Costmap Filters:代价地图过滤器,使机器人不会进入禁区、限制机器人速度、使机器人进入首选通道等

3、Navigation和Nav2的区别

在这里插入图片描述

3.1 升级包

Navigation Nav2
amcl nav2_amcl
map_server nav2_map_server
global_planner nav2_planner
local_planner nav2_controller
Navfn nav2_navfn_planner
DWA DWB(av2_dwb_controller metapackage)
nav_core nav2_core
costmap_2d nav2_costmap_2d

3.2 Nav2新增加的包

nav2_bt_navigator: 替换move_base状态机
nav2_lifecycle_manager: 处理服务器程序生命周期
nav2_waypoint_follower: 可以通过接收多个航点来执行复杂的任务
nav2_system_tests: 一套CI集成测试和模拟基础教程
nav2_rviz_plugins: 一个 rviz 插件,用于控制 Navigation2 服务器、命令、取消和导航
navigation2_behavior_trees:用于调用 ROS 动作服务器的行为树库的包装器

4、Nav2框架

在这里插入图片描述

5、安装

安装Nav2及示例turtlebot3
注意:本人的环境为ubuntu22.04,需要各位同学根据自己的环境来修改版本号-humble

sudo apt install ros-humble-navigation2
sudo apt install ros-humble-nav2-bringup
sudo apt install ros-humble-turtlebot3-gazebo

安装启动

6、运行示例

在终端中执行:

source /opt/ros/humble/setup.bash
export TURTLEBOT3_MODEL=waffle
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/humble/share/turtlebot3_gazebo/models
ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False

注意:参数headless默认为真;如果未设置为 false,则不会启动 gzclient(3d 视图)
启动成功后,会出现如下界面:
在这里插入图片描述
在这里插入图片描述

设置好目标,就开始自动导航了

在这里插入图片描述

拖动可看见右边的机器人开始移动了

7、错误处理

1)如果左下角的按键“Pause、Startup”不能点,Navigation状体为Error,并且在终端报错:

……tf error: Invalid frame ID “odom” passed to canTransform argument target_fra……
可以点击左下角Reset按键来重置RViz

2)如果没有启动,点击“Startup”

8、RViz使用

参见:【ROS】RViz使用详解
下面补充工具栏的几个按钮的说明
在这里插入图片描述
在这里插入图片描述

Move Camera :移动相机工具。使用此工具可以通过鼠标拖动来移动相机视角,从不同角度查看场景
Select :选择工具。使用此工具可以选择和操作RViz中的对象,如机器人模型、传感器数据等
Focus Camera :调整相机的焦点
Measure :用于测量3D场景中物体的尺寸、距离和角度。
2D Pose Estimate:2D姿态估计工具。使用此工具可以通过在地图上点击来估计机器人的2D姿态,用于定位和导航。
Publish Point :发布点工具。使用此工具可以通过在RViz中点击来发布一个点消息,用于标记感兴趣的位置或目标点。
2D Goal Pose :2D导航目标工具。使用此工具可以通过在地图上点击来设置机器人的2D导航目标,用于路径规划和导航。
Nav2 Goal :用于设置机器人的目标点
Interact :Interact按钮用于启用或禁用交互模式

  •   		:用于添加工具栏按钮
    
  •   		:用于删除工具栏按钮
    

2D Goal Pose和Nav2 Goal按钮都用于设置导航目标点,区别如下:

2D Goal Pose按钮:简单的目标设置功能,适用于基本的导航任务,不需要考虑避障和路径规划等复杂问题。

Nav2 Goal按钮:是ROS Navigation2软件包中的一个功能,提供了更高级的目标设置选项。
通过这个按钮,用户可以设置更复杂的导航目标,例如指定一个目标点、一个目标姿态或一个目标区域。Nav2 Goal按钮还提供了更多的导航参数设置选项,例如路径规划算法、避障策略等。这个按钮适用于需要更高级导航功能的场景,例如导航到一个特定的姿态或避开障碍物。

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

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

相关文章

UE虚幻引擎中程序无需运行也可调试

首先先新建一个蓝图类,在蓝图类中创建一个Custom event 事件,然后在右侧细节面板中搜索call in editor,编译保存之后,将该蓝图类拖拽到关卡场景中,在细节面板中即可看到该事件的按钮。

基于ssm点餐平台系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本点餐平台系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

记一次在OrangePiZero2(香橙派zero 2)上部署Redroid(云手机)的过程

一句废话 这次换一种写作风格,尝试一下轻松的行文方式。 起因 很久以前看见有群友讨论关于docker部署Redroid,拿来挂机玩游戏一类的。当时听了感觉很有意思,后面粗浅地在zero2上部署了一下,容器虽然是跑起来了,但是…

【每次启动wsl时自动更新ip】

每次启动wsl时自动更新ip 在windows中使用wsl时,每次启动wsl后发现其ip都会改变,这样的话如果想通过vscode的Remote-SSH插件打开代码编辑器,就需要手动更新ssh配置文件,极为不便,所以考虑使用一种优雅的方式&#xff0…

Linux,Windows或macOS系统的电脑怎样才能投屏到手机?

很多人都知道手机投屏到电脑的方法,但想要反过来的时候,却束手无策。 如果你想要将电脑投屏到手机,无论你的电脑是Windows,Linux还是macOS系统,无论你的手机是安卓、iOS还是鸿蒙,都可以用下面这个方法实现电…

YOLOv8改进 | 2023Neck篇 | 利用RepGFPN改进特征融合层(附yaml文件+添加教程)

一、本文介绍 本文给大家带来的改进机制是Damo-YOLO的RepGFPN(重参数化泛化特征金字塔网络),利用其优化YOLOv8的Neck部分,可以在不影响计算量的同时大幅度涨点(亲测在小目标和大目标检测的数据集上效果均表现良好涨点…

PPT插件-超好用的插件-统一尺寸、裁剪、分布-大珩助手

超级对齐-统一尺寸、裁剪、分布 操作方法 先选中1个或多个形状,然后最后选择目标形状,若希望形状的位置也改变,则需要在对齐幻灯下选中对齐对象。 等比缩放 将选中的1个或多个形状的外形尺寸设置为目标形状大小,图像的纵横比可…

Nginx rewrite 参数

目录 常用的Nginx 正则表达式 rewrite 和 location的区别 location location 大致分三类: location 常用的匹配规则: location 优先级: rewrite rewrite跳转实现 rewrite 执行顺序如下 语法格式 flag标记说明 rewrite实际操作 基…

微信小程序万能建站源码系统 附带完整的搭建教程

随着移动互联网的迅速发展,微信小程序已经成为企业、商家以及个人开发者的重要入口。小编给大家分享一款微信小程序万能建站源码系统,并附带完整的搭建教程,帮助用户轻松搭建自己的小程序平台。 以下是部分代码示例: 系统特色功能…

java综合实验-图书管理系统

二、实验项目内容(实验题目) 1. 使用Java编程语言进行实验。 2. 采用面向对象的思想进行系统设计。 3. 实现基本的图书管理功能,包括添加图书、删除图书、查询图书信息等。 4. 要求有良好的用户交互界面。 步骤参考: 步骤一…

亚信科技AntDB数据库——深入了解AntDB-M元数据锁的实现(二)

5.5 防止低优先级锁饥饿 AntDB-M按照优先级将锁又分了两类,用于解决低优先级锁饥饿问题。 ●独占型(hog): X, SNRW, SNW; 具有较强的不兼容性,优先级高,容易霸占锁,造成其他低优先级锁一直处于等待状态。 ●暗弱型(piglet): SW; …

Vue3-18-侦听器watch()、watchEffect() 的基本使用

什么是侦听器 个人理解:当有一个响应式状态(普通变量 or 一个响应式对象)发生改变时,我们希望监听到这个改变,并且能够进行一些逻辑处理。那么侦听器就是来帮助我们实现这个功能的。侦听器 其实就是两个函数&#xff…

2 - Electron 核心概念

Electron 核心概念 主进程 通过Node.js、Electron提供的API与系统底层打交道启动项目时运行的 main.js 脚本就是我们说的主进程。在主进程运行的脚本可以以创建 Web 页面的形式展示 GUI。主进程只有一个 渲染进程 每个 Electron 的页面都在运行着自己的进程,这样…

java SSM火车票务管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM火车票务管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代 码和数据库,系统主要采…

51单片机的外部中断的以及相关寄存器的讲解

中断系统 本文主要涉及8051单片机的中断系统的讲解与使用 其中包括中断相关寄存器的介绍与使用以及外部中断初始化的代码分析。 文章目录 中断系统一、 中断的介绍二、 中断结构及相关寄存器2.1 中断源 2.2 中断请求控制器2.2.1 TCON寄存器2.2.2 SCON寄存器2.2.3 中断允许寄存器…

【算法小技巧】如何判断奇偶

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

LLM(七)| Mamba:LLM新架构的浅探

目前大型语言模型(LLM)领域发展如火如荼,本文将重点探索在单个消费级GPU上可以有效运行的小型模型(≤7B个参数)。 我们将从以下几个方面重点介绍基于新架构的语言模型:🐍Mamba模型(h…

图-数据结构

图的介绍 如果你有学过《离散数学》,那么对图的概念一定不陌生,在计算机科学中,一个图就是一些顶点的集合,这些顶点通过一系列边连接(结对)。顶点用圆圈表示,边就是这些圆圈之间的连线。注意&a…

webGL开发数字孪生项目的流程

数字孪生是指使用数字模型来模拟和仿真现实世界的实体或系统。WebGL(Web Graphics Library)是一种用于在Web浏览器中进行高性能图形渲染的JavaScript API。将数字孪生与WebGL结合起来,可以实现在Web环境中呈现和交互数字模型的目标。北京木奇…

不完全伽马函数-Incomplete Gamma Function

REFERENCES Abramowitz, M. and Stegun, I. A. (Eds.). Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, 9th printing. New York: Dover, p. 260, 1972. Arfken, G. “The Incomplete Gamma Function and Related Functions.” 10.5 in…