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

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.mzph.cn/news/218651.shtml

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

相关文章

每日学习打卡

文章目录 12月份学习:牛客网刷题 12月份学习:牛客网刷题 12/11 周一12/12 周二12/13 周三12/14 周四12/15 周五牛客网1_非技术快速入门:26-39 ✅牛客网1_非技术快速入门:复习1-39 ✅牛客网2_SQL基础进阶:1-18牛客网2_…

C语言好题分享七(三数之和)

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载,请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主,代码兴国!❤❤❤ 三数之和 题目来源LeetCode:刷题传送门 题目:给你一个整数数组 nums ,判断…

EasyRecovery2024专业版下载安装步骤图文详细教程

EasyRecovery是一款操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序,它不会往源驱上写任何东西,也不会对源驱做任何改变。它支持从各种各样的存储介质恢复删除或者丢失的文件,其支持的媒体介质包括:硬盘驱动器、光驱、…

2-分布式存储之glusterfs

任务背景 实现了远程的存储共享(NAS或SAN)后, 公司业务发展迅速, 存储空间还需要增大。使用NAS或SAN都不方便扩容,NAS可以增加新的挂载目录, SAN可以增加新的硬盘,但我们希望直接在原来挂载的业务目录上实现在线扩容,数据体量越来越大, 这个…

ChatGLM3-6B和langchain知识库阿里云部署

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、ChatGLM3-6B部署搭建环境部署GLM3 二、Chatglm2-6blangchain部署本地知识库三、Tips四、总结 前言 提示:这里可以添加本文要记录的大概内容&am…

ffmpeg从视频文件中截取一段视频

处理 ffmpeg -i ./【直播】2023-10-08\ 二〇二三澳洲淨宗學院護國息災三時繫念法會.mp4 -ss 02:43:12 -to 03:03:00 -vcodec copy -acodec copy 阿弥陀佛.mp4参考解释: -i:输入的源文件;-ss hh:mm:ss -to hh:mm:ss:从源视频的某个时间点到某个时间点&a…

7个Js async/await高级用法

前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 7个Js async/await高级用法 JavaScript的异步编程已经从回调(Callback)演进到Promise,再到如今广泛使用的async/await语法。后者不仅让异步…

被央视报道过的AIGC产品-贝塔创作(BetaCreator)使用指南

产品地址:betacreator.com 真人图 人台图 商品图 商品变色 建议使用浅色服装进行变色,效果更好 如果没有浅色服装,可以先把服装颜色变为白色

视频剪辑必备的6个免费素材网站

视频剪辑需要用到很多音效、视频、图片等素材,下面我就分享几个剪辑必备的免费视频素材网站,赶紧收藏起来~ 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 菜鸟图库虽然是个设计素材网站,但除了设计类素材之外还有很多视频、…

2697. 字典序最小回文串

我的解法&#xff1a; 将字符串反转开始比较。 C class Solution { public:string makeSmallestPalindrome(string s) {string a s, b s;reverse(b.begin(), b.end());int n s.size();for (int i 0; i < n; i) {if (a[i] ! b[i]) {a[i] b[i] min(a[i], b[i]);a[n - …

python学习:浅拷贝与深拷贝详解

copy 一、 & is二、浅拷贝 & 深拷贝(一)、浅拷贝(二)、深拷贝 三、问题 一、’ ’ & ‘is’ ’ 和is是python对象比较常用的两种方式,简单来说,‘ ‘操作符比较对象之间的值是否相等,如 a b 而’is’操作符比较的是对象的身份标识是否相等,即它们是否是同一个…

Linux系统解决“Key was rejected by service”

Linux系统下加载驱动模块出现如上错误提示的原因为&#xff1a;此驱动未经过签名。 方法一、关闭Secure Boot 如果是物理机&#xff0c;需要开机进入BIOS&#xff0c;找到“Secure Boot”的选项&#xff0c;然后关闭。 如果是虚拟机&#xff0c;可以打开虚拟设置&#xff0c…

arthas(阿尔萨斯) 使用问题汇总

arthas 使用问题汇总 1、arthas查看不到java进程1.1、首先要保证你的环境变量配置是正确的1.2、jps 也看不到java进程 2、离线安装问题3、如何使用arthas 1、arthas查看不到java进程 1.1、首先要保证你的环境变量配置是正确的 java -verionjavac -version 都能正常显示 [rootd…

平面上点到直线的距离

文章目录 平面上点到直线的距离 平面上点到直线的距离 设坐标平面上有点 P ( x 1 , y 1 ) P(x_1,y_1) P(x1​,y1​)和直线 l : A x B y C 0 l:AxByC0 l:AxByC0, A , B A,B A,B不全为0点 P P P到直线 l l l的的距离的算法推导如下 作直线 m m m通过点 P ( x 1 , y 1 ) P(x_1…

上传文件Dubbo报错: Data length too large: xxxxx, max payload: 8388608

一、场景&#xff1a; 服务端是微服务&#xff0c;服务A有个上传图片的功能&#xff0c;需求是限制大小为10M&#xff0c;用户通过客户端把图片上传到服务A&#xff0c;A再调用服务B把文件上传至阿里oss。 功能实际上很简单&#xff0c;实现的代码如下&#xff1a; 服务A的Con…

快速准确翻译文件夹名:英文翻译成中文,文件夹批量重命名的技巧

在处理大量文件夹时&#xff0c;可能会遇到要将英文文件夹名翻译成中文的情况。同时也可能要批量重命名这些文件夹。今天一起来看下云炫文件管理器如何快速准确翻译文件夹名&#xff0c;进行批量重命名的技巧。 下图是文件夹名翻译前后的效果图。 英文文件夹名批量翻译成中文…

3Dmax快捷键大全,让你的创作飞起来!附赠3dmax工具箱插件,快来收藏吧!

你是否曾经在3Dmax中因为繁琐的操作而感到困扰&#xff1f; 今天&#xff0c;我将为大家带来一份精心整理的3Dmax常用快捷键宝典&#xff0c;让你在建模、材质编辑、动画制作等各个方面都能游刃有余&#xff0c;让你的创作飞起来&#xff01;&#xff01; &#x1f4a1; 选择与…

7-1 jmu-python-输入输出-处理不定行输入

7-1 jmu-python-输入输出-处理不定行输入 分数 15 作者 郑如滨 单位 集美大学 处理一段文字&#xff08;可能有很多行&#xff0c;行数不确定&#xff09;&#xff0c;输出每行包含的单词数(单词之间以空格或多个空格分隔)。 注意&#xff1a;处理的时候要忽略掉空行或者空格行…

27. 深度学习进阶 - 为什么RNN

文章目录 一个柯基的例子为什么RNN or CNN Hi&#xff0c;你好。我是茶桁。 这节课开始&#xff0c;我们将会讲一个比较重要的一种神经网络&#xff0c;它对应了咱们整个生活中很多类型的一种问题结构&#xff0c;它就是咱们的RNN网络。 咱们首先回忆一下&#xff0c;上节课咱…

【计算机网络】TCP|IP协议

目录 前言 什么是TCP/IP协议&#xff1f; TCP/IP协议的层次结构 TCP/IP协议的工作原理 TCP/IP协议的重要性 结语 前言 TCP/IP协议是当今互联网世界中最重要的网络协议之一&#xff0c;它是网络通信的基石&#xff0c;为数据在网络中的传输提供了可靠性和有效性。本文将深…