




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一种偏向目标型的rrt算法实现摘要:本文针对基本快速扩展随机树(rrt)算法存在搜索过于平均、效率低下、用时较长的缺陷,提出了一种偏向目标型的改进型rrt算法。这种算法在生成随机点时以一定概率选择最终目标点作为局部目标点,使树的扩展有一个趋向于最终目标点的趋势,从而加快了算法的收敛速度,优化了规划路径。最后通过matlab程序仿真,在二维平面上验证了改进型算法相对于基本算法的优越性。关键词:路径规划、rrt算法、偏向目标型一. 引言机器人学是当今科学技术研究的热点问题,它汇聚了各个尖端学科最先进的研究成果。科学家们从上世纪40年代开始着手研制机器人到如今,机器人的发展主要经历了三次技术变革。从
2、最简单的第一代机器人到现在的第三代智能机器人,机器人从只会机械的执行命令逐渐演变成利用各种先进的传感器自动的学习环境,适应环境,并完成人类下达的任务。路径规划问题是机器人研究中的重要的组成部分,它的重点就是要使机器人自主并且安全的从起始位姿移动到目标位姿。机器人路径规划主要分为全局路径规划和局部路径规划两大方面。全局路径规划是一种利用环境全局信息的方法,它通常将周边环境信息存储在一张地图中,并且利用这张地图寻找可行路径。全局路径规划的优点是有利于找到全局可行解和最优解,但是它的运算时间长,不适用于快速变化的动态环境。常用的全局路径规划方法有栅格法、可视图法、拓扑法和自由空间法等。局部路径规划只
3、考虑机器人当前能探测到的环境信息,运算速度快、反应迅速,非常适用于动态环境。但其缺点是算法可能无法收敛,不能保证机器人一定能够到达目标点,而且找到的可行路径可能会偏离最短路径。常用的局部路径规划算法有人工势场法、模糊逻辑法、神经网络法和遗传算法等等。rrt算法是最近几年才发展起来的,并且应用比较普遍的一种路径规划算法。它在处理非完整约束的路径规划问题时具有相当大的优势,因为它可以将各种约束集成到算法本身之中,因此对环境要求较低。而且该算法概率完备,在理论上肯定能找到可行路径。但其缺点是搜索过于平均,算法效率较低,而且规划出的路径往往偏离最短路径。本文针对rrt算法存在的缺陷,提出了一种改进的偏
4、向目标型的rrt算法,该算法有效的解决了搜索过于平均的问题,提高了算法效率,而且规划出的路径是更接近于最短路径的次优路径。二. rrt算法的基本原理rrt算法在路径规划时以状态空间中的一个初始点作为根节点,通过随机采样逐渐增加叶节点的方式,生成一个随机扩展树。当随机树中的叶节点中包含了目标点或目标区域时,便可在随机树中找到一条从根节点到目标点的路径。rrt的扩展方式如下图1所示。图 1 rrt算法扩展过程图1中t表示当前存在的扩展树,表示随机点,表示离随机点最近的一个树节点,然后在和的连线上以步长step为单位截取一个新节点,如果没碰到障碍物,则将加入到扩展树t中。重复以上步骤直到到达目标区域
5、则算法结束,此时可在树t中找到一条起点到目标点的路径。为了便于计算机编程实现,我们将rrt的构建过程归纳为以下两个表格。其中表1为各参数意义,表2为rrt构建流程。表 1 rrt算法中的各参数意义s所有空间无障碍空间有k个节点的随机树起始点目标点step步长dis(q1,q2)s中两点之间的距离表 2 rrt算法构建流程1=2判断|-|step,若是,转到步骤8,不是,转到步骤33生成随机点4找出使dis(,)dis(q, )5在和的连线上求使dis(,)=step,并且,若存在这样的,转到步骤6,若不存在,转到步骤36在扩展树上增加节点,7判断|-|step,若是,转到步骤8,不是,转到步骤
6、38结束三. 改进的rrt算法虽然rrt算法概率完备,在理论上总能找出一条可行路径。但是由于其扩展新节点的方式是在全空间随机产生的,一方面造成扩展树在全空间分布过于平均,算法效率较低;另一方面规划的路径质量不高,通常偏离最短路径较大。针对以上缺陷,我们希望对基本的rrt算法进行改进。经过分析我们得知造成rrt算法上述缺陷的根源是在扩展新节点时,随机点是在全空间随机产生的。借鉴启发式算法的灵感,我们可以在确定随机点时让随机点以一定的概率等于目标点。这样树的扩展就有一个趋于目标点的趋势,而不是在全空间随机分布,从而提高了算法的搜索效率,而且由于树节点的扩展是趋向于目标点的,理论上规划出来的路径也会
7、更加接近于最短路径。还应注意的是改进后的算法在概率上依然是完备的。通过以上分析,我们知道改进的rrt算法流程和基本的rrt算法流程大致相同,只要把第二节中表2的第3个步骤进行如下的改写即可。(1) 生成随机点;(2) 给定一个0到1的偏置变量bias,生成一个0到1的随机数rand;(3) 如果randbias,则=;否则, 不变。四. matlab仿真实验1.定义环境模型本文仿真是在二维平面上进行的,将整个平面划分为了有障碍部分和无障碍物部分,如下图2所示。图 2环境模型示意图地图尺寸为100*100,其中白色区域代表无障碍空间,机器人可以随意行走;黑色区域表示障碍物空间,机器人不能通行。为
8、了仿真的方便,这里的障碍物都选择为圆形,这不影响算法验证的可靠性。2.定义节点数据结构 分析可知扩展树的每个节点有三个必要要素,分别是节点的x,y坐标以及其父节点。因此我们定义节点的数据结构如下:其中表示节点在二维平面上的坐标,表示节点的父节点序号。考虑到起点作为根结点,其没有父节点,因此定义它的父节点序号为0。3.仿真结果对比(1)分布障碍地图 起点(5,80),终点(90,70)图 3 路径规划图,rrt算法(左),改进rrt算法(右) 上图中蓝色的“*”点表示扩展树的所有节点,红色的曲线表示规划得到的路径。通过图3的对比明显可以看出在分布障碍地图中,偏向目标型rrt算法得到的扩展树节点数
9、更少,这说明算法的效率更高。观察路径曲线可以看出偏向目标型rrt算法得到的路径更优。(2)狭窄通道地图 起点(1,1),终点(90,90)图 4路径规划图,rrt算法(左),改进rrt算法(右) 从图4中可以看出在狭窄通道地图中,我们可以明显的观察到基本rrt算法在搜索时表现出来的搜索过于平均,算法效率低下的缺陷,而且规划得到的路径也偏离最优路径较大。而改进后的偏向目标型rrt算法体现出了强烈的趋向于目标点趋势,而且规划得到的路径也非常接近于最优路径。(3)复杂随机地图起点(1,1),终点(90,90) 图 5路径规划图,rrt算法(左),改进rrt算法(右) 通过图5,我们也可以看出改进后的
10、rrt算法在复杂随机地图中也表现优异,证明了偏向目标型rrt算法的优越性。五. 总结本文针对基本rrt算法存在搜索过于平均,算法效率低下,规划路径偏离最短路径较大的缺陷,分析其缺陷原因在于随机点的确定在全空间分布过于平均导致的。借鉴启发式算法的思想,我们提出了一种确定随机点的新方法,即让随机点以一定的概率等于目标点,这样就使随机树的扩展有一种趋向于目标点的趋势,从而解决了随机点分布过于平均的缺点。最后通过matlab仿真对两种算法的结果对比分析得到,改进后的偏向目标型rrt算法相对于基本rrt算法,无论在算法效率还是路径质量,都体现出了很大的优越性。参考文献1王全.基于rrt的全局路径规划方法
11、及其应用研究d.国防科学技术大学,2014. 2李加东.基于rrt算法的非完整移动机器人运动规划d.华东理工大学,2014. 3冯林,贾菁辉.基于对比优化的rrt路径规划改进算法j.计算机工程与应用,2011,47(3):210-213,228. 4贾菁辉.移动机器人的路径规划与安全导航d.大连理工大学,2009. 5周培培.未知环境下机器人路径规划算法的研究d.青岛科技大学,2014. 6李猛.基于智能优化与rrt算法的无人机任务规划方法研究d.南京航空航天大学,2012. 7王滨,金明河,谢宗武等.基于启发式的快速扩展随机树路径规划算法j.机械制造,2007,45(12):1-4. 8宋金
12、泽,戴斌,单恩忠等.一种改进的rrt路径规划算法j.电子学报,2010,38(z1):225-228.9乔永兴.自主式移动机器人的路径规划d.广西大学,2003. 10李磊,叶涛,谭民等.移动机器人技术研究现状与未来j.机器人,2002,24(5):475-480.11陈刚,沈林成.复杂环境下路径规划问题的遗传路径规划方法j.机器人,2001,23(1):40-44.附录本文中使用的matlab程序%主程序function biasgoal_rrtmap=createmap(1); %创建有障碍物的模拟地图,输入参数为不同的地图类型step=5; %步长startnode=1,1,0; %起点
13、endnode=90,90,0; %终点tree=startnode; %根结点if(norm(startnode(1,1:2)-endnode(1,1:2)=step)&(collision(startnode,endnode,map)=0) path=startnode(1,1:2);endnode(1,1:2);else success=0; while success=0 tree,flag=extendtree(tree,endnode,step,map); success=flag; endendpath=findpath(tree);plotmap(map,path,tree);
14、%创建地图,有三种不同类型的地图function map=createmap(num)if num=1 %分布障碍地图 map.barnum=3; map.llcd=0;0; %地图左下角坐标 map.urcd=100;100; %地图右上角坐标 radius=20;15;20; %障碍物半径 barcenter=33,75;38,30;75,50; %障碍物中心点坐标 for i=1:map.barnum map.radius(i)=radius(i); map.cx(i)=barcenter(i,1); map.cy(i)=barcenter(i,2); endendif num=2 %狭
15、窄通道地图 map.barnum=2; map.llcd=0;0; map.urcd=100;100; radius=23.75;23.75; barcenter=50,76.25;50,23.75; for i=1:map.barnum map.radius(i)=radius(i); map.cx(i)=barcenter(i,1); map.cy(i)=barcenter(i,2); endendif num=3 %复杂随机地图 map.barnum=100; map.llcd=0;0; map.urcd=100;100; maxradius=2.5; for i=1:map.barnu
16、m map.radius(i)=maxradius*rand;map.cx(i)=map.llcd(1)+map.radius(i)+(map.urcd(1)-map.llcd(1)-2*map.radius(i)*rand;map.cy(i)=map.llcd(2)+map.radius(i)+(map.urcd(2)-map.llcd(2)-2*map.radius(i)*rand; endend%基本rrt算法程序function newtree,flagreach=extendtree(tree,endnode,step,map)flag=1;while flag randpoint=
17、(map.urcd(1)-map.llcd(1)*rand,(map.urcd(2)-map.llcd(2)*rand; distmp=tree(:,1:2)-ones(size(tree,1),1)*randpoint; mindis,minnum = min(diag(distmp*distmp); pvector=randpoint-tree(minnum,1:2); newpoint=tree(minnum,1:2)+pvector/norm(pvector)*step; if collision(newpoint,tree(minnum,1:2),map)=0 newnode=new
18、point,minnum; newtree=tree;newnode; flag=0; endendif(norm(newpoint-endnode(1,1:2)=step)&(collision(newpoint,endnode(1,1:2),map)=0) flagreach=1;else flagreach=0;end%改进后的偏向目标型rrt算法程序function newtree,flagreach=biasextendtree(tree,endnode,step,map)flag=1;bias=0.5;while flag randpoint=(map.urcd(1)-map.ll
19、cd(1)*rand,(map.urcd(2)-map.llcd(2)*rand; if randbias randpoint=endnode(1:2); end distmp=tree(:,1:2)-ones(size(tree,1),1)*randpoint; mindis,minnum = min(diag(distmp*distmp); pvector=randpoint-tree(minnum,1:2); newpoint=tree(minnum,1:2)+pvector/norm(pvector)*step; if collision(newpoint,tree(minnum,1:
20、2),map)=0 newnode=newpoint,minnum; newtree=tree;newnode; flag=0; endendif(norm(newpoint-endnode(1,1:2)=step)&(collision(newpoint,endnode(1,1:2),map)=0) flagreach=1;else flagreach=0;end%检测新节点和每一个障碍物是否有碰撞,若有则返回1function collision_flag = collision(node, parent, map);collision_flag = 0;for sigma = 0:.2:1, p = sigma*node(1:2) + (1-sigma)*parent(1:2); for i=1:map.barnum, if (norm(p(1);p(2)-map.cx(i); map.cy(i)=map.radius(i), collision_flag = 1; break; end endend%随机扩展树完成后,根据每个节点父节点的序号找出可行路径function path=findpath(tree)lastnodenum=size(tree,1);path=tree(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年一级造价师之建设工程技术与计量(水利)自我检测试卷A卷附答案
- 体育教学课件下载
- 你真棒作文教学课件
- 第三章滴定分析13课件
- 2025年安徽商贸职业技术学院单招职业倾向性测试必刷测试卷含答案
- 2025年第二季度网络安全意识培训测试题有答案
- 工业互联网平台IPv6技术升级对工业生产过程透明化与可视化的影响报告
- 口才课自我介绍课件模板
- 小学生矛盾纠纷课件
- 住宅消防管网管理办法
- 宝钢设备大修管理办法
- 缓和医疗与护理课件
- 学堂在线 军事理论 章节测试答案
- 早产儿喂养不耐受的护理
- 肿瘤药药学科普
- 新生儿外周静脉建立与管理
- 垃圾发电厂节能管理制度
- 企业生产设备风险评估报告
- 《工程勘察设计收费标准》(2002年修订本)
- TCGMA0330012018压缩空气站能效分级指南
- GB/T 13822-2017压铸有色合金试样
评论
0/150
提交评论