時間:2023-08-02 17:58:24來æºï¼šCSDNåšä¸»
1 RRT算法的簡介
RRT 算法是一種å°ç‹€æ…‹(tà i)空間隨機采樣的算法,通éŽå°é‡‡æ¨£é»žé€²è¡Œç¢°æ’žæª¢æ¸¬ï¼Œé¿å…了å°ç©ºé–“的精確建模帶來的大計算é‡ï¼Œèƒ½å¤ 有效地解決高ç¶ç©ºé–“和復雜約æŸçš„路徑è¦(guÄ«)劃å•題。
與PRMé¡žä¼¼ï¼Œè©²æ–¹æ³•æ˜¯æ¦‚çŽ‡å®Œå‚™ä¸”éžæœ€å„ª(yÅu)的。å¯ä»¥è¼•æ¾è™•ç†éšœç¤™ç‰©å’Œå·®åˆ†ç´„æŸï¼ˆéžå®Œæ•´å’Œå‹•力å¸ï¼‰çš„å•題,并被廣泛應用于機器人路徑è¦(guÄ«)劃。
2 RRT算法原ç†
2.1 算法æµç¨‹
(1)è¨å®šåˆå§‹é»ž 與目標點 ,自行è¨å®šç‹€æ…‹(tà i)采樣空間
(2)進行隨機采樣得到采樣點 ,如果采樣點 åœ¨éšœç¤™ç‰©å…§ï¼Œå‰‡é‡æ–°éš¨æ©Ÿé‡‡æ¨£
(3)若ä¸åœ¨éšœç¤™ç‰©å…§ï¼Œè¨ˆç®—該采樣點 èˆ‡é›†åˆ (已經生æˆçš„節(jié)點) ä¸çš„æ‰€æœ‰ç¯€(jié)點之間的è·é›¢ï¼Œå¾—到離得最近的節(jié)點 ,å†å¾žç¯€(jié)點 以æ¥é•· èµ°å‘節(jié)點 ,生æˆä¸€å€‹æ–°çš„節(jié)點 ,若 與 的連線 ç¶“éŽéšœç¤™ç‰©ï¼Œå‰‡é‡æ–°éš¨æ©Ÿé‡‡æ¨£
(4)經éŽå復è¿ä»£ï¼Œç”Ÿæˆä¸€å€‹éš¨æ©Ÿæ“´å±•樹,當隨機擴展樹ä¸çš„å節(jié)點進入了我們è¦(guÄ«)定的目標å€(qÅ«)域,便å¯ä»¥åœ¨éš¨æ©Ÿæ“´å±•æ¨¹ä¸æ‰¾åˆ°ä¸€æ¢ç”±å¾žåˆå§‹é»žåˆ°ç›®æ¨™é»žçš„路徑。
2.2 算法å½ä»£ç¢¼
å¯ä»¥å°‡å½ä»£ç¢¼èˆ‡ä¸Šè¿°ç®—法æµç¨‹å°ç…§èµ·ä¾†çœ‹
2.3 算法æµç¨‹åœ–
3 RRT算法matlab實ç¾(xià n)
3.1 測試地圖
%隨機生æˆéšœç¤™ç‰© function [f,n1]=ob(n) f=[];%儲å˜éšœç¤™ç‰©ä¿¡æ¯ n1=n;%返回障礙物個數(shù) p=0; for i=1:n k=1; while(k) D=[rand(1,2)*60+15,rand(1,1)*1+3];%隨機生æˆéšœç¤™ç‰©çš„忍™èˆ‡åŠå¾‘,自行調整 if(distance(D(1),D(2),90,90)>(D(3)+5)) %與目標點è·é›¢ä¸€å®šé•·åº¦ï¼Œé˜²æ¢éŽå¤šé˜»ç¤™æ©Ÿå™¨äººåˆ°é”目標點 k=0; end for t=1:p %障礙物之間的è·é›¢ä¸èƒ½éŽçª„,å¯è‡ªè¡Œèª¿æ•´åŽ»æ¸¬è©¦ if(distance(D(1),D(2),f(3*t-2),f(3*t-1))<=(D(3)+f(3*t)+5)) k=1; end end end %畫出障礙物 aplha=0:pi/40:2*pi; r=D(3); x=D(1)+r*cos(aplha); y=D(2)+r*sin(aplha); fill(x,y,'k'); axis equal; hold on; xlim([0,100]);ylim([0,100]); f=[f,D]; p=p+1;%ç›®å‰ç”Ÿæˆçš„障礙物個數(shù) end hold all;
3.2 distance函數(shù)
function f=distance(x,y,x1,y1) f=sqrt((x-x1)^2+(y-y1)^2);
3.3 RRT算法
clc clear all [f,n1]=ob(10);%隨機生æˆéšœç¤™ç‰© Xinit=[1,1];%定義åˆå§‹é»ž Xgoal=[90,90];%定義目標點 plot(Xinit(1),Xinit(2),'ro'); plot(Xgoal(1),Xgoal(2),'ko'); T=[Xinit(1),Xinit(2)];%已生æˆç¯€(jié)點集åˆç”¨é †åºè¡¨çš„æ•¸(shù)據(jù)çµæ§‹å˜å„² Xnew=Xinit; D(1)=0;%åˆå§‹ç¯€(jié)點的父節(jié)點指å‘0 while distance(Xnew(1),Xnew(2),Xgoal(1),Xgoal(2))>3 %進入目標å€(qÅ«)域 Xrand=round(rand(1,2)*100)+1;%狀態(tà i)é‡‡æ¨£ç©ºé–“ï¼šæ©«ç¸±åæ¨™å‡ç‚ºæ•´æ•¸(shù),范åœ1~100 k=1;%進入循環(huán) while k==1 k=0;%åˆå§‹åŒ–采樣æˆåŠŸ for i=1:n1 if distance(Xrand(1),Xrand(2),f(i*3-2),f(i*3-1))<(f(i*3)+1)%判斷隨機采樣點是å¦åœ¨éšœç¤™ç‰©å…§ k=1;%é‡‡æ¨£ä¸æˆåŠŸ break; end end Xrand=round(rand(1,2)*100);%釿–°é‡‡æ¨£ end min=10000; for i=1:size(T,2)/2 %éæ·å·²ç”Ÿæˆç¯€(jié)é»žé›†åˆ if distance(T(2*i-1),T(2*i),Xrand(1),Xrand(2))Xnew(1) caiyang=-0.001; else caiyang=0.001; end for i=Xnear(1)Xnew(1)%å‡å‹»é‡‡æ¨£é€²è¡Œç¢°æ’žæª¢æ¸¬ for j=1:n1 if distance(f(3*j-2),f(3*j-1),i,Xnear(2)+(i-Xnear(1))/(Xnew(1)-Xnear(1))*(Xnew(2)-Xnear(2)))<=(f(3*j)+1) t=1;%代表碰撞 break; end end if t==1 break; end end if t==0 T=[T,Xnew(1),Xnew(2)]; for i=1:size(T,2)/2 %éæ·å·²ç”Ÿæˆç¯€(jié)é»žé›†åˆ if (T(i*2-1)==Xnear(1))&&(T(i*2)==Xnear(2)) %得到最近的節(jié)點的索引 D(size(T,2)/2)=i;%記錄父節(jié)點 break; end end plot([Xnew(1),Xnear(1)],[Xnew(2),Xnear(2)],'b-');hold on;pause(0.005); plot(Xnew(1),Xnew(2),'r.');xlim([0,100]);ylim([0,100]); end end i=size(T,2)/2; jg=[i]; while D(i) i=D(i); %通éŽéˆè¡¨å›žæº¯ if D(i)~=0 jg=[D(i),jg];%å˜å„²æœ€çŸè·¯å¾‘通éŽçš„節(jié)點 end end Fx=T(jg(1)*2-1);Fy=T(jg(1)*2); i=2; while jg(i)~=size(T,2)/2 x=T(jg(i)*2-1); y=T(jg(i)*2); plot([x,Fx],[y,Fy],'g-');hold on;pause(0.05); Fx=x;Fy=y; i=i+1; end plot([T(jg(i)*2-1),Fx],[T(jg(i)*2),Fy],'g-');hold on;pause(0.05);
3.4 動畫效果
4 RRT的缺陷
(1)很明顯RRTç®—æ³•å¾—åˆ°çš„è·¯å¾‘ä¸æ˜¯æœ€å„ª(yÅu)çš„
(2)RRT算法未考慮é‹å‹•叿¨¡åž‹
(3)RRT算法å°äºŽç‹¹å°çš„通é“的探索性能ä¸å¥½ï¼Œå¦‚ä¸‹åœ–çš„å°æ¯”,有å¯èƒ½æŽ¢ç´¢ä¸åˆ°å‡ºå£
(4)沒有啟發(fÄ)ä¿¡æ¯çš„RRTåƒç„¡é è’¼è …ï¼ŒæŽ¢ç´¢ç©ºé–“å®Œå…¨é 鋿°£ï¼Œå¦‚下圖
é‡å°ä¸Šè¿°ç¼ºé™·ï¼Œåˆå‡ºç¾(xià n)了很多RRT算法的變種,以åŽçš„æ–‡ç« 䏿œƒä»‹ç´¹ã€‚
ä¸Šä¸€ç¯‡ï¼šç´”é›»å‹•è»Šè¼›çš„çµæ§‹åŠå…¶åŽŸç†
下一篇:風電機組å航系統(tÇ’ng)的作用åŠå…¶...
ä¸åœ‹å‚³å‹•網版權與å…è²¬è²æ˜Žï¼šå‡¡æœ¬ç¶²æ³¨æ˜Ž[來æºï¼šä¸åœ‹å‚³å‹•ç¶²]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Šå‡ç‚ºä¸åœ‹å‚³å‹•ç¶²(www.siyutn.com)ç¨å®¶æ‰€æœ‰ã€‚如需轉載請與0755-82949061è¯(lián)系。任何媒體ã€ç¶²ç«™æˆ–å€‹äººè½‰è¼‰ä½¿ç”¨æ™‚é ˆæ³¨æ˜Žä¾†æºâ€œä¸åœ‹å‚³å‹•ç¶²â€ï¼Œé•å者本網將追究其法律責任。
本網轉載并注明其他來æºçš„稿件,å‡ä¾†è‡ªäº’è¯(lián)網或æ¥(yè)內投稿人士,版權屬于原版權人。轉載請ä¿ç•™ç¨¿ä»¶ä¾†æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² ç‰ˆæ¬Šæ³•å¾‹è²¬ä»»ã€‚
相關資訊