机器人控制理论与技术课程论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于RRT及其改进型的路径规划算法报告摘要:本设计学习并分析了基本RRT路径规划的原理,并通过参考资料及自己分析,提出了一种改进的RRT路径规划算法。为了验证改进型RRT算法的正确性以及合理性。最后在VS2010开发环境下用C++编写了两种RRT算法的程序代码及演示界面。通过一定量的实验得到了大量数据。经过数据分析,验证了改进型RRT是正确的,并且在不破坏基本RRT算法的随机性的前提下,有效的将随机性和目的性结合起来,提高了RRT算法的效率和路径的质量。

关键词:机器人路径规划快速扩展随机树(RRT) 随机性与目的性

一.引言

路径规划是智能机器人研究领域的一个重要方向,主要解决在有障碍的环境中,机器人如何自主寻找一条从给定起点到终点适当的运动路径,使其能在运动过程中安全、无碰地绕过障碍物。传统的路径规划有多边形拟合法、遗传算法、栅格法、人工势能法等。但这些方法都需要在一个确定性空间内对障碍物进行确定的建模和描述,计算复杂度与机器人自由度呈指数关系,不适合于解决多自由度机器人在复杂环境中的规划[3]。

最近十几年来,基于随机采样的路径规划算法渐渐增多,该类算法可以适用于不确定环境的高维空间。快速扩展随机树(Rapidly-Exploring Random Tree,RRT)算法,是由S.M.LaValle于1998年提出。RRT是一种基于随机采样的单查询运动规划方法。该方法特点是能够实现随机采样点,把搜索导向空白区域,从而寻找到一条从起始点到目标点的规划路径,适合于解决多自由度机器人在复杂环境下和变化场景中的运动规划。

二.RRT算法原理介绍

快速扩展随机树算法是一种高效的数据结构和算法,该算法适用于解决未知环境下的完整性规划、以及涉及动力运动学约束的非完整性规划。

RRT算法是一种随机算法,不需要特定的启发式函数的帮助。在随机树扩展时,每次产生一个随机点,由于随机点产生的随机性,可以引导随机树向着空间中的任意一个方向生长,从而该算法对未知空间有着强烈的搜索倾向。最终,随机树经过有限次的生长,将覆盖整个区域。这是RRT算法的一个非常显著的优点。这种特殊的扩展方式能够渐渐的较少树节点与目标点之间的距离,并最终

能够使树延伸到目标点。

在每次规划中,RRT选取状态空间中的起始点作为根节点,通过随机采样,逐渐增加叶节点,生成一个随机扩展树。当随机树的叶节点中包含了目标点或目标区域中的点,便停止生长,并从目标点或目标区域开始逆向查找可以找到从目标点到起始点的连通路径,即为需要的路线。基本RRT的运行过程如图1所示:

临近节点

图1.快速扩展随机树的扩展过程示意图

三.一种改进型的RRT算法

机器人RRT路径规划的核心思想是利用概率论中的随机性,使机器人通过RRT算法,能够探索所有的自由空间。这是RRT相对于其他路径规划方式的最显著优点。但是这一优点同时也带来了缺点,即扩展方式过于平均,路径的质量不高。这是由于随机性带来的。

如果能在不破坏随机性,即RRT的概率完整性的前提下,将目的性或者方向性引入到RRT算法中,使RRT的随机性与目的性达到一个协调统一,那么将能够在一定程度上克服基本RRT扩展方式过于平均,路径的质量不高的缺点。目前国内外有关学者,针对RRT的缺点提出了各种改进型的RRT算法。其中有,根据A *搜索算法中寻找最短路径的思想,在构建扩展树时引入了启发式估价函数。这种方法确实可以有效地提高路径质量,但是却带了个很大的计算量。

本文中,在研究了RRT算法的思想,以及参考其他各种改进型RRT的基础上,也提出了一种改进型的RRT算法。即在产生随机点Qrand之后,判断随机点Qrand与目标点Qtarget之间的距离。如果随机点Qrand落在Qend的一个圆形邻域中(|Qrand-Qend|<=d,d为一个根据机器人所处的环境设置的一个判断值),那么就用目标点Qend代替随机点Qrand,否则不做替换。公式如下:Qrand=Qend 当|Qrand-Qend|<=d

Qrand=Qrand 当|Qrand-Qend|>d

其中d为一个根据机器人所处的环境设置的一个判断值

这种改进不会破坏基本RRT的概率完整性,并且使RRT带有了偏向目标方向扩展的趋势,即实现了RRT随机性与目的性的协调,并且不会增加算法的运算量。通过实验调试验证,这种方式确实可以提高路径的质量,以及RRT算法的速度。也就是说新的改进算法继承了基本RRT算法的全部优点,同时,收敛速度快。具体分析见第五部分,程序调试。

四.本设计中的构思,算法实现,程序介绍

4.1构思

本设计中,选取二维平面作为机器人的运动环境。即在二维平面下进行RRT 算法设计,将机器人看做二维平面上的一个点。机器人的运动是连续的。

用C++语言实现算法,在VS2010集成开发环境下运行调试程序。

在演示软件中,将机器人所处的环境大小设置为600*400。机器人的起始位置用一个半径为30的大圆的圆心表示。目标点用一个半径为20的圆的圆心表示。并且为了程序设计的方便,障碍物设计成一个个的圆形区域,半径为10。如果需要的话,可以将多个圆形区域连在一起构成大的障碍物。

程序的设计主要包括两个方面:

1.RRT及改进型RRT程序设计。

2.演示界面设计。

4.2算法实现

4.2.1基本RRT算法流程

Build-RRT(Qinit,Qend )

1 T.init(Qinit);

2 for i= 1 to K do

3 if(Extend-Tree(T )= Reached)then

4 return Path(Qinit,Qend );

5 return Failure;

Extend_Tree(T)

1 Qrand=Random - Configuration();

2 Qnear= Nearest-Neighbor(T,Qrand);

相关文档
最新文档