【移动机器人脱困重恢复行为决策】ROS导航包的脱困重恢复行为决策FSM

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理


前言

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!

本文先对ROS导航包的脱困重恢复行为决策FSM做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章


提示:以下是本篇文章正文内容

一、重恢复行为状态机】recovery_behaviors功能包源码解读

(1)recovery源码脉络图

在这里插入图片描述
move_base所有关于导航重恢复行为的接口都必须遵守nav_core::RecoveryBehavior接口来编写

(2)导航重恢复行为的作用

提供一种机器人导航被困住后的恢复的方法

(3)导航重恢复行为状态转移图FSM(有限状态机)及流程解释

1)状态转移图FSM在这里插入图片描述


2)导航重恢复行为的状态转移图流程解释
当机器人被卡住时,move_base框架将会一次执行Conservative Reset(保守复位)、Clearing Rotation(旋转清除),Aggressive Reset(激进复位)、Clearing Rotation(旋转清除)四种步骤,【防盗标记–盒子君hzj】若上诉的四种步骤都无法使得机器人复位,则导航框架会返回错误的信号,上面四个步骤机器人所执行的行为都可以通过参数配置的方式进行配置,ROS也提供了插件进行配置


在没有动态障碍的情况下,move_base节点最终运行结果要么是接近了规划的目标,要么是给用户返回失败信号

(4)RecoveryBehavior【恢复的方法】

(1)clear_costmap_recovery【使用清除代价地图的方法–重恢复行为】

1、介绍:一种简单的恢复行为,将move_base使用的costmap恢复为用户指定范围之外的静态图
2、主要函数:

ClearCostmapRecovery()
initialize()    #从参数服务器获取一些参数、把每一层的代价地图进行清除
runBehavior()   #运行ClearCostmapRecovery行为。将costmap还原为用户指定窗口外的静态映射,并清除robot周围的未知空间。
				#清除并更新当前全局代价地图、清除并更新当前局部代价地图

(2)rotate_recovery【使用原地旋转的方法–重恢复行为】

1、介绍:一种简单的恢复行为,机器人进行360度旋转一尝试清除costmap
2、主要函数:

RotateRecovery()
initialize()		#从参数服务器获取一些参数
					#设置最大的加速度、最大和最小的速度、转角偏差的容忍度
					#加载车模型
					
runBehavior()		#创建一个发布器,发布Twist指令
					#获取机器人的全局位置、航向角
					#当还没有转到位,或者还没转到180度之前,死循环继续转,直到旋转完成

(3)move_slow_and_clear【降速的方法–重恢复行为】

1、介绍
move_slow_and_clear::MoveSlowAndClear是一种简单的修复机制,用来清除代价地图中信息并且限制机器人移动速度。
这种修复技术是非安全技术,机器人可能会撞上东西,【防盗标记–盒子君hzj】它只以用户指定速度移动,这种修复机制仅仅兼容可以通过dynamic_reconfigure配置最大速度局部规划器(如dwa_local_planner)

2、主要函数

initialize()
runBehavior()	#降低车速并清除代价地图

(5)导航重恢复行为的参数配置

move_base的启动引入论文大量的参数文件,move_base就是用这些参数来设置机器人的单行框架的,机器人导航参数配置文件再机器人段的文件夹在move_base_params.yaml中进行设置
在这里插入图片描述
.


猜你喜欢

转载自blog.csdn.net/qq_35635374/article/details/121793771