movebase导航和地图数据的使用 - 8 导航中recovery的逻辑

什么时候会触发recovery?

enum RecoveryTrigger

{

PLANNING_R, //无法算出plan

CONTROLLING_R, //local planner无法利用localcostmap算出一个localplan,从而无法得到速度命令

OSCILLATION_R,//机器人在不断抖动

};



1. planthread里,如果发现无法算出最新的plan,就会把movebase的状态设置为CLEARING。

2. 在MoveBase::executeCycle的循环中,在CONTROLLING状态时,即还未到达目的地并且已经获得Plan的状态下。如果长时间没有成功拿到localplanner算出的速度命令,比如localplanner无法算出速度(可能是localcostmap里有障碍物),就会设置movebase状态为CLEARING.

3. 在震动时,如果没有恢复,也会设置状态成CLEARING.

recovery时会干什么?

会执行recoverybehavior.

那么要看都建立了多少behaviors:

MoveBase::loadDefaultRecoveryBehaviors函数会加载一些default的behavior.

基本上两种类型:

ClearCostmapRecovery和RotateRecovery。

ClearCostmapRecovery会清理从机器人所在位置开始,默认直径reset_distance_=3米的矩形范围之外的costmap中数据,具体清理costmap中的哪个layer中的数据呢,默认清理obstaclelayer的数据。看ClearCostmapRecovery::runBehavior()。清理时,将地图中内容设置为未知。会把global和localcostmap中指定的layer都清理掉。



RoateRecovery比较简单,就是让机器人旋转180度。这样就可以更新周围的障碍物数据。



关于move_base包的理解 关于move_base包的理解 move_base是ROS下关于机器人路径规划的中心枢纽。 它通过订阅激光雷达、map地图、amcl的定位等数据,然后规划出全局和局部路径,再将路径转化为机器人的速度信息,最终实现机器人导航。 上面这个图很好的展示了move_base的整个框架,下面我更加详细的介绍一下每个模块的功能及其是如何衔接的。 首先amcl模块是ROS的导航定位模块,amcl也叫... 阅读详情

相关推荐

路径规划参数解析(一)——move_base参数解析

ROS系统的路径规划由move_base统筹,在move_base中集成了代价地图模块costmap_2d,全局规划器(此处使用global_planner/GlobalPlanner)和局部规划器(dwa_local_planner/DWAPlannerROS),其中costmap_2d分别衍生了全局代价地图和局部代价地图,此外还有恢复模块recovery_behaviors,采用默认值即可。 因此move_base需要设置五个部分的参数 自身参数 全局代价地图参数 局部代价地图参数 .

qq_29313679的博客 1万+

move_base导航框架中recovery_behaviors

对底座的期望行为 Running the move_base node on a robot that is properly configured (please seenavigation stack documentation for more details) results in a robot that will attempt to achieve a goal pose wi...

D学习中- 2527

机器人自主导航全栈实战:从SLAM建图到路径规划的完整ROS项目解析

机器人自主导航是移动机器人领域的核心技术,其核心原理是通过传感器感知环境、定位自身并规划安全路径。该技术融合了多传感器数据,利用激光雷达、IMU和里程计的特性互补,通过算法(如粒子滤波、图优化)实现同步定位与建图(SLAM),构建环境地图并实时估计机器人位姿。其技术价值在于赋予机器人在未知或动态环境中自主、可靠移动的能力,是智能扫地机、仓储AGV等产品的关键技术基础。在工程实践中,完整的导航系统通常基于ROS框架构建,涉及传感器驱动、坐标变换、代价地图构建以及全局与局部路径规划等多个模块的协同。本文将以一个

weixin_34280237的博客 444

ROS Move Base恢复机制

1、什么情况下启动恢复机制 movebase的三种状态: enum MoveBaseState { PLANNING,//在规划路径中 CONTROLLING,//在控制机器人运动中 CLEARING//规划或者控制失败在恢复或者清除中。 }; 一般默认状态或者接收到一个有效goal时是PLANNING,在规划出全局路径后state_会由PLANNING->CONTROLLING,如果规划失败则由PLANNING->CLEARING。在MoveBase::executeCy...

light169的专栏 3936

3张RTX 4090就能跑!BAGEL-7B多模态模型本地部署避坑指南(附Flash Attention安装技巧)

本文详细介绍了如何在3张RTX 4090显卡上本地部署BAGEL-7B多模态模型,包括硬件配置、环境设置、多卡并行优化及常见问题解决方案。特别提供了Flash Attention安装技巧和显存优化策略,帮助开发者高效运行这一开源多模态模型,实现文本与图像生成任务。

1a2s3d4f5g的博客 654

我用WorkBuddy“克隆“了一个我,从此每句话像我自己说的

各位,做这件事花了多长时间?准备样本可能要半小时,提炼风格十分钟,保存固化再花十分钟。加起来不到一个小时。但这一个小时之后呢?你就拥有了一个"永远在线的文字替身"。以后写口播稿,打开WorkBuddy跟它说;写课程逐字稿,跟它说;写公众号文章,也跟它说。写出来的东西,你的学员一看——“嘿,这不就是翟猛老师说的嘛。说到这儿,可能有人会问:老师,我的风格有那么重要吗?AI写的不都挺好的吗?各位你想想看,你为什么愿意听某个老师的课?不只是因为他讲的内容好,更是因为你喜欢他讲话的方式。

weixin_39284145的博客 824

机器人之Move_Base

首先,用户指定区域之外的障碍物将从机器人的地图中清除。接下来,如果可能,机器人将执行就地旋转以清理空间。如果这也失败了,机器人将更积极地清除它的地图,移除它可以就地旋转的矩形区域之外的所有障碍物。...

旋风小短腿 3556

PromptBio实战:如何用AI对话搞定转录组数据分析(附详细操作截图)

本文详细介绍了如何利用PromptBio平台通过AI对话完成转录组数据分析,无需编程基础即可实现从数据上传到结果解读的全流程。文章包含详细的操作截图和参数配置建议,帮助科研人员快速掌握这一生信分析工具,显著提升研究效率。

weixin_30872157的博客 137

ROS探索总结(十四)——move_base(路径规划)

在上一篇的博客中,我们一起学习了ROS定位于导航的总体框架,这一篇我们主要研究其中最重要的move_base包。

古月居 9万+

操作系统知识点汇总(王道)

操作系统不论是就业还是升学都是核心的一门课程,对于大部分工科更是必修课程。本文章是对《王道操作系统》所有知识点的总结笔记,以供大家学习以及在备考期间复习使用。让我们一起把知识往脑子里旋好吗!!!......

S mile0804的博客 5万+

PX4从放弃到精通(二十七):固定翼姿态控制

固件版本 PX4 1.13.2欢迎交流学习,可加左侧名片。

超维空间科技的博客 6892

move base全解

之前我们专门有一节讲到了《主要介绍了MoveBase基类中函数的大概意思以及调用的方式。move_base是ROS下关于机器人路径规划的中心枢纽。它通过订阅激光雷达、map地图、amcl的定位等数据,然后规划出全局和局部路径,再将路径转化为机器人的速度信息,最终实现机器人导航。下面是move_base的整个框架。

lovely_yoshino的博客 1万+

Transformer 跨界物理建模:探索模拟动态物理系统方法与实践(PINN、流体力学、有限元)

是一个由 Nicholas Zabaras 团队开发的开源项目,托管于 GitHub,旨在将 Transformer 模型(最初在自然语言处理领域大获成功)应用于物理系统的建模与预测。该项目基于论文 ​*“Transformers for Modeling Physical Systems”*​(Neural Networks, 2022),探索了深度学习中的 Transformer 架构如何通过自注意力机制和 Koopman 嵌入来模拟动态物理系统。

源代码杀手的博客 1192

【ROS-Navigation】Recovery Behavior恢复行为源码解读

记录学习阅读ROS Navigation源码的理解,本文为RecoveryBehavior恢复行为源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。 RecoveryBehavior用来应对导航过程中各模块的故障,当全局规划故障、局部规划故障、震荡时都会进入到恢复行为中,它先清理周围一定范围以外的costmap(障碍层),接下来重新执行规划,若不奏效,则旋转180度,再执行规划。交替两次后,已转过360度,若还是没能排除故障,则恢复行为失败,

NEO's NOTEBOOK 6705

Holt-Winters方法预测水电发电量

Holt-Winters 模型, ARMIA,ACF检验 ,Dickey-Fuller 检测,白噪声检测,差分

firefox_yau的博客 1270

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

XiaoqiangClub的博客 1万+

movebase存在的问题

movebase重大bug 解析:当机器人在PLANNING状态时,只会开启plan线程,而不会发布速度及其他操作(在executeCycle函数中switch中只会进入PLANNING),而在plan线程中,当运行满足(makplan规划不出路径->当前处于PLANNING状态->未超出设定的全局规划失败次数)三个条件时程序竟然什么也不做,一直规划,直到超出设定的全局规划失败次数才会进入recovery,然后就导致这过程中没有人发布速度,一直按上一次控制状态CONTROLLING发布的速度行驶

qq825255961的博客 1478

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

一些关于ROS中move_base的理解,心得。

     又有好几个月没有写博客了,今天风和日丽,于是乎想写一篇关于自己对于move_base的理解、心得。move_base是ROS下关于机器人路径规划的中心枢纽。它通过订阅激光雷达、map地图、amcl的定位等数据,然后规划出全局和局部路径,再将路径转化为机器人的速度信息,最终实现机器人导航。这里又要盗官网的图了。上面这个图很好的展示了move_base的整个框架,下面我更加详细的介绍一下每个...

shenghuaijing3314的博客 3万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ROS Navigation-----move_base简介

move_base简介

倔强不倒翁的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

移动机器人导航navigation中的move_base功能包深度剖析(1)

针对移动机器人导航navigation中的move_base部分,详细剖析其实现过程。 旁边专栏还在更新ROS-Navigation 包其他源码分析,便于继续深入了解 目录前言1. 相关源码文件1.1 主要头文件(move_base/include)1.2 主要源代码文件(move_base/src)2. 源码剖析2.1 move_base包给定导航目标2.2 obstacle_layer.cpp(1)初始化ObstacleLayer::onInitialize() 前言 move_base 是一个开

abicco_ds的博客 4366

MoveBase源码阅读笔记

构造函数MoveBase::MoveBase()为该节点的入口,初始化了相关变量,加载recovery behaviors,局部和全局的地图、路径规划器等plugin,以及开启服务和线程等。该函数中定义了多个ros::NodeHandle变量,其作用主要是给出开话题的命名空间和区分私有话题(内部线程间通信),具体可参考ros官网的说明和ros::NodeHandle博客,rosrun move_b...

Minphie's Blog 4274

move_base配置参数解析

move_base实际需要设置6部分参数: move_base自身参数 全局代价地图(global_costmap) 局部代价地图(local_costmap) 全局规划器(global_planner) 局部规划器(local_planner) 恢复机制(recovery_behaviors) 以上参数在move_base节点加载时全部加载,用以下参数文件格式: <launch> <node pkg="move_base" type="move_base" respawn="fa

酸梅果茶的博客 7273

ROS Navigation之move_base完全详解

0. 写在最前面 建议收藏: 本文持续更新地址:https://haoqchen.site/2018/11/27/move-base-code/ 本文将介绍自己在看ROS的Navigation stack中的move_base包源代码时的一些理解。作者的ROS版本是indigo,move_base版本是1.12.13。如有错误,欢迎在评论中指正。 如果觉得写得还不错,就请收藏一下啦~~~后续想把整...

白夜行的狼 4万+

move_base源码解析

序言 好久没写博客了,最近把move_base源码包研究了一下,顺便以写博客的形式总结一下,同时里面掺杂了自己的心得体会,各路大神如果有不同的简介可以私下评论。 1 move_base_node.cpp 整个文件的开始以move_base_node.cpp开始。 从MoveBase::MoveBase的初始化开始。 as_作为维护动作服务的变量。 as_ = new MoveBaseActionServer(ros::NodeHandle(), "move_base", boost::bind(&M

weixin_43072878的博客 3375

对MoveBase源码的阅读理解

对MoveBase源码的阅读理解 #include <move_base/move_base.h> #include <move_base_msgs/RecoveryStatus.h> #include #include <boost/algorithm/string.hpp> #include <boost/thread.hpp> #include <geometry_msgs/Twist.h> #include <tf2_geometr

TP-Thread 838

move_base导航、RRT仿真步骤和遇到的错误

一、move_base步骤: roscore roslaunch rbx1_bringup fake_turtlebot.launch(运行机器人节点) roslaunch rbx1_nav fake_amcl.launch map:=test_map.yaml(地图) rosrun rviz rviz -d 'rospack find rbx1_nav'/nav_fuerte.rviz 打开rviz后,add-by topic-①map②current_goal-pose③odometry 点击上面的 2

qq_45762949的博客 2662
上一篇: movebase导航和地图数据的使用 - 7 global costmap和local costmap的区别和用途
下一篇: movebase导航和地图数据的使用 - 9 地图数据的构成
csshell2002
博客等级 码龄11年 30粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值