技術頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術頻道 > 技術百科 > 自動駕駛 RRT算法原理解析

自動駕駛 RRT算法原理解析

時間:2023-08-02 17:58:24來源:CSDN博主

導語:?天下武功唯快不破,快是 RRT 的最大優(yōu)勢。RRT 的思想是快速擴張一群像樹一樣的路徑以探索空間的大部分區(qū)域,找到可行的路徑。

1 RRT算法的簡介

RRT 算法是一種對狀態(tài)空間隨機采樣的算法,通過對采樣點進行碰撞檢測,避免了對空間的精確建模帶來的大計算量,能夠有效地解決高維空間和復雜約束的路徑規(guī)劃問題。

與PRM類似,該方法是概率完備且非最優(yōu)的。可以輕松處理障礙物和差分約束(非完整和動力學)的問題,并被廣泛應用于機器人路徑規(guī)劃。

2 RRT算法原理

2.1 算法流程

(1)設定初始點  與目標點 ,自行設定狀態(tài)采樣空間 

(2)進行隨機采樣得到采樣點 ,如果采樣點  在障礙物內(nèi),則重新隨機采樣

(3)若不在障礙物內(nèi),計算該采樣點  與集合  (已經(jīng)生成的節(jié)點) 中的所有節(jié)點之間的距離,得到離得最近的節(jié)點 ,再從節(jié)點  以步長  走向節(jié)點  ,生成一個新的節(jié)點 ,若  與  的連線  經(jīng)過障礙物,則重新隨機采樣

(4)經(jīng)過反復迭代,生成一個隨機擴展樹,當隨機擴展樹中的子節(jié)點進入了我們規(guī)定的目標區(qū)域,便可以在隨機擴展樹中找到一條由從初始點到目標點的路徑。

2.2 算法偽代碼

可以將偽代碼與上述算法流程對照起來看

9e9b9f9e-29ff-11ee-a368-dac502259ad0.png

2.3 算法流程圖

9f12c132-29ff-11ee-a368-dac502259ad0.png

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];%隨機生成障礙物的坐標與半徑,自行調(diào)整
        if(distance(D(1),D(2),90,90)>(D(3)+5)) %與目標點距離一定長度,防止過多阻礙機器人到達目標點
            k=0;
        end
        for t=1:p  %障礙物之間的距離不能過窄,可自行調(diào)整去測試
            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;

9f203c4a-29ff-11ee-a368-dac502259ad0.png

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)%判斷隨機采樣點是否在障礙物內(nèi)
                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 動畫效果

9f4378b8-29ff-11ee-a368-dac502259ad0.png

9f5b8bce-29ff-11ee-a368-dac502259ad0.png

4 RRT的缺陷

(1)很明顯RRT算法得到的路徑不是最優(yōu)的

(2)RRT算法未考慮運動學模型

(3)RRT算法對于狹小的通道的探索性能不好,如下圖的對比,有可能探索不到出口

9f89d682-29ff-11ee-a368-dac502259ad0.png

(4)沒有啟發(fā)信息的RRT像無頭蒼蠅,探索空間完全靠運氣,如下圖

9fbe560a-29ff-11ee-a368-dac502259ad0.png

針對上述缺陷,又出現(xiàn)了很多RRT算法的變種,以后的文章中會介紹。



標簽: 自動駕駛

點贊

分享到:

上一篇:純電動車輛的結構及其原理

下一篇:風電機組偏航系統(tǒng)的作用及其...

中國傳動網(wǎng)版權與免責聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(wǎng)(www.surachana.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權屬于原版權人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網(wǎng)站簡介|會員服務|聯(lián)系方式|幫助信息|版權信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務平臺

網(wǎng)站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號