精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RRT算法Matlab實(shí)現(xiàn) 主函數(shù)部分

麥辣雞腿堡 ? 來(lái)源:古月居 ? 作者:FlyingKonan ? 2023-11-24 16:25 ? 次閱讀

初始化隨機(jī)樹

初始化隨機(jī)樹,定義樹結(jié)構(gòu)體tree以保存新節(jié)點(diǎn)及其父節(jié)點(diǎn),便于后續(xù)從目標(biāo)點(diǎn)回推規(guī)劃的路徑。

%% 初始化隨機(jī)樹
tree.child = [];               % 定義樹結(jié)構(gòu)體,保存新節(jié)點(diǎn)及其父節(jié)點(diǎn)
tree.parent = [];
tree.child = x_start;          % 起點(diǎn)作為第一個(gè)節(jié)點(diǎn)
flag = 1;                      % 標(biāo)志位
new_node_x = x_start(1,1);     % 將起點(diǎn)作為第一個(gè)生成點(diǎn)
new_node_y = x_start(1,2);
new_node = [new_node_x, new_node_y];

主函數(shù)部分

主函數(shù)中首先生成隨機(jī)點(diǎn),并判斷是否在地圖范圍內(nèi),若超出范圍則將標(biāo)志位置為0。

rd_x = 30 * rand() - 15;    % 生成隨機(jī)點(diǎn)
rd_y = 30 * rand() - 15;    
if (rd_x >= x_right_limit || rd_x <= x_left_limit ||... % 判斷隨機(jī)點(diǎn)是否在地圖邊界范圍內(nèi)
    rd_y >= y_right_limit || rd_y <= y_left_limit)
    flag = 0;
end

調(diào)用函數(shù)cal_distance計(jì)算tree中距離隨機(jī)點(diǎn)最近的節(jié)點(diǎn)的索引,并計(jì)算該節(jié)點(diǎn)與隨機(jī)點(diǎn)連線和x正向的夾角。

[angle, min_idx] = cal_distance(rd_x, rd_y, tree);    % 返回tree中最短距離節(jié)點(diǎn)索引及對(duì)應(yīng)的和x正向夾角

cal_distance函數(shù)定義如下:

function [angle, min_idx] = cal_distance(rd_x, rd_y, tree)
    distance = [];
    i = 1;
    while i<=size(tree.child,1)
        dx = rd_x - tree.child(i,1);
        dy = rd_y - tree.child(i,2);
        d = sqrt(dx^2 + dy^2);
        distance(i) = d;
        i = i+1;
    end
    [~, min_idx] = min(distance);
    angle = atan2(rd_y - tree.child(min_idx,2),rd_x - tree.child(min_idx,1));
end

隨后生成新節(jié)點(diǎn)。

new_node_x = tree.child(min_idx,1)+grow_distance*cos(angle);% 生成新的節(jié)點(diǎn)
new_node_y = tree.child(min_idx,2)+grow_distance*sin(angle);
new_node = [new_node_x, new_node_y];

接下來(lái)需要對(duì)該節(jié)點(diǎn)進(jìn)行判斷:

① 新節(jié)點(diǎn)是否在障礙物范圍內(nèi);

② 新節(jié)點(diǎn)和父節(jié)點(diǎn)的連線線段是否和障礙物有重合部分。

若任意一點(diǎn)不滿足,則將標(biāo)志位置為0。實(shí)際上可以將兩個(gè)判斷結(jié)合,即判斷新節(jié)點(diǎn)和父節(jié)點(diǎn)的連線線段上的點(diǎn)是否在障礙物范圍內(nèi)。

for k=1:1:size(ob,1) 
    for i=min(tree.child(min_idx,1),new_node_x):0.01:max(tree.child(min_idx,1),new_node_x)    % 判斷生長(zhǎng)之后路徑與障礙物有無(wú)交叉部分
        j = (tree.child(min_idx,2) - new_node_y)/(tree.child(min_idx,1) - new_node_x) *(i - new_node_x) + new_node_y;
        if(i >=ob(k,1)-resolution && i <= ob(k,1)+ob(k,3) && j >= ob(k,2)-resolution && j <= ob(k,2)+ob(k,4))
            flag = 0;
            break
        end
    end
end

在這我采用的方法是寫出新節(jié)點(diǎn)和父節(jié)點(diǎn)連線的直線方程,然后將x變化范圍限制在min(tree.child(min_idx,1),new_node_x)max(tree.child(min_idx,1),new_node_x)內(nèi),0.01即坐標(biāo)變換的步長(zhǎng),步長(zhǎng)越小判斷的越精確,但同時(shí)會(huì)增加計(jì)算量;

步長(zhǎng)越大計(jì)算速度快但是很可能出現(xiàn)誤判,如下圖所式。

判斷標(biāo)志位若為1,則可以將該新節(jié)點(diǎn)加入到tree中,注意保存新節(jié)點(diǎn)和它的父節(jié)點(diǎn),同時(shí)顯示在figure中,之后重置標(biāo)志位。

if (flag == true)           % 若標(biāo)志位為1,則可以將該新節(jié)點(diǎn)加入tree中
    tree.child(end+1,:) = new_node;
    tree.parent(end+1,:) = [tree.child(min_idx,1), tree.child(min_idx,2)];
    plot(rd_x, rd_y, '.r');hold on
    plot(new_node_x, new_node_y,'.g');hold on
    plot([tree.child(min_idx,1),new_node_x], [tree.child(min_idx,2),new_node_y],'-b');
end
    
flag = 1;                   % 標(biāo)志位歸位

最后就是把障礙物、起點(diǎn)終點(diǎn)等顯示在figure中,并判斷新節(jié)點(diǎn)到目標(biāo)點(diǎn)距離。若小于閾值則停止搜索,并將目標(biāo)點(diǎn)加入到node中,否則重復(fù)該過(guò)程直至找到目標(biāo)點(diǎn)。

%% 顯示
for i=1:1:size(ob,1)        % 繪制障礙物
    fill([ob(i,1)-resolution, ob(i,1)+ob(i,3),ob(i,1)+ob(i,3),ob(i,1)-resolution],...
         [ob(i,2)-resolution,ob(i,2)-resolution,ob(i,2)+ob(i,4),ob(i,2)+ob(i,4)],'k');
end
hold on

plot(x_start(1,1)-0.5*resolution, x_start(1,2)-0.5*resolution,'b^','MarkerFaceColor','b','MarkerSize',4*resolution); % 起點(diǎn)
plot(goal(1,1)-0.5*resolution, goal(1,2)-0.5*resolution,'m^','MarkerFaceColor','m','MarkerSize',4*resolution); % 終點(diǎn)
set(gca,'XLim',[x_left_limit x_right_limit]); % X軸的數(shù)據(jù)顯示范圍
set(gca,'XTick',[x_left_limit:resolution:x_right_limit]); % 設(shè)置要顯示坐標(biāo)刻度
set(gca,'YLim',[y_left_limit y_right_limit]); % Y軸的數(shù)據(jù)顯示范圍
set(gca,'YTick',[y_left_limit:resolution:y_right_limit]); % 設(shè)置要顯示坐標(biāo)刻度
grid on
title('D-RRT');
xlabel('橫坐標(biāo) x'); 
ylabel('縱坐標(biāo) y');
pause(0.05);
if (sqrt((new_node_x - goal(1,1))^2 + (new_node_y- goal(1,2))^2) <= goal_radius) % 若新節(jié)點(diǎn)到目標(biāo)點(diǎn)距離小于閾值,則停止搜索,并將目標(biāo)點(diǎn)加入到node中
    tree.child(end+1,:) = goal;         % 把終點(diǎn)加入到樹中
    tree.parent(end+1,:) = new_node;
    disp('find goal!');
    break
end
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • matlab
    +關(guān)注

    關(guān)注

    182

    文章

    2963

    瀏覽量

    230194
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4308

    瀏覽量

    62444
  • 路徑規(guī)劃
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    15314
  • RRT
    RRT
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    1112
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    matlab部分圖像處理函數(shù)

    matlab部分圖像處理函數(shù)
    發(fā)表于 03-04 19:11

    基于二維圖像的FFT算法實(shí)現(xiàn)matlab程序

    基于二維圖像的FFT算法實(shí)現(xiàn)matlab程序,F(xiàn)FT函數(shù)源代碼
    發(fā)表于 05-15 14:22

    果蠅優(yōu)化算法MATLAB實(shí)現(xiàn)

    果蠅優(yōu)化算法MATLAB實(shí)現(xiàn)發(fā)布時(shí)間:2018-10-12 23:28,瀏覽次數(shù):1183, 標(biāo)簽:MATLAB果蠅優(yōu)化算法--
    發(fā)表于 08-17 07:28

    Matlab遺傳算法工具箱的應(yīng)用

    Matlab遺傳算法(GA)優(yōu)4~-r-具箱是基于基本操作及終止條件、二進(jìn)制和十進(jìn)制相互轉(zhuǎn)換等操作的綜合函數(shù)庫(kù)。其實(shí)現(xiàn)步驟包括:通過(guò)輸入及輸出函數(shù)
    發(fā)表于 11-13 17:57 ?60次下載

    matlab牛逼函數(shù)總結(jié)

    matlab牛逼函數(shù)總結(jié),想大家會(huì)因?yàn)?b class='flag-5'>MATLAB函數(shù)不懂吧!自己看看吧!
    發(fā)表于 11-06 17:18 ?0次下載

    模糊推理的Mamdani算法及其Matlab實(shí)現(xiàn)

    模糊濾波的mamdani算法及其Matlab實(shí)現(xiàn)
    發(fā)表于 11-17 18:23 ?40次下載

    MATLAB常用函數(shù)總結(jié)(表格)

    MATLAB常用函數(shù)總結(jié),MATLAB函數(shù)速查手冊(cè),方便應(yīng)用MATLAB函數(shù)
    發(fā)表于 01-21 14:31 ?0次下載

    matlab函數(shù)資料

    matlab 函數(shù) matlab的一些基本的界面設(shè)計(jì)的函數(shù)
    發(fā)表于 03-23 17:13 ?0次下載

    BP算法及其matlab實(shí)現(xiàn)

    高級(jí)自動(dòng)控制算法:BP算法及其matlab實(shí)現(xiàn)
    發(fā)表于 12-02 11:45 ?2次下載

    matlab怎樣編寫函數(shù)并調(diào)用函數(shù)

    MATLAB和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)
    發(fā)表于 12-04 14:33 ?2.6w次閱讀
    <b class='flag-5'>matlab</b>怎樣編寫<b class='flag-5'>函數(shù)</b>并調(diào)用<b class='flag-5'>函數(shù)</b>

    《圖論算法及其MATLAB實(shí)現(xiàn)》電子教材和函數(shù)函數(shù)功能列表概述

    ,同時(shí)也給出了可達(dá)矩陣的計(jì)算,以及關(guān)聯(lián)矩陣和鄰接矩陣的相互轉(zhuǎn)換等重要算法及其MATLAB實(shí)現(xiàn);第2~8章分別介紹最短路、連通圖、樹。 Euler圖和Hamilon圖、匹配、網(wǎng)絡(luò)中的流、最小費(fèi)用流等相關(guān)問(wèn)題,而且均給出了有關(guān)問(wèn)題的
    發(fā)表于 10-22 08:00 ?0次下載

    MATLAB的簡(jiǎn)單函數(shù)優(yōu)化的遺傳算法程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是MATLAB的簡(jiǎn)單函數(shù)優(yōu)化的遺傳算法程序免費(fèi)下載。
    發(fā)表于 10-24 08:00 ?2次下載
    <b class='flag-5'>MATLAB</b>的簡(jiǎn)單<b class='flag-5'>函數(shù)</b>優(yōu)化的遺傳<b class='flag-5'>算法</b>程序免費(fèi)下載

    MATLAB實(shí)現(xiàn)PCA算法

    MATLAB實(shí)現(xiàn)PCA算法 PCA(Principal Component Analysis)是一種經(jīng)典的線性降維方法,其基本思想是將高維數(shù)據(jù)映射到低維空間中,使得映射后的數(shù)據(jù)具有更好的可解釋
    的頭像 發(fā)表于 06-16 17:10 ?2201次閱讀

    自動(dòng)駕駛 RRT算法原理解析

    RRT 算法是一種對(duì)狀態(tài)空間隨機(jī)采樣的算法,通過(guò)對(duì)采樣點(diǎn)進(jìn)行碰撞檢測(cè),避免了對(duì)空間的精確建模帶來(lái)的大計(jì)算量,能夠有效地解決高維空間和復(fù)雜約束的路徑規(guī)劃問(wèn)題。 與PRM類似,該方法是概率完備且非最優(yōu)的。可以輕松處理障礙物和差
    發(fā)表于 07-28 15:45 ?2060次閱讀
    自動(dòng)駕駛 <b class='flag-5'>RRT</b><b class='flag-5'>算法</b>原理解析

    利用Matlab函數(shù)實(shí)現(xiàn)深度學(xué)習(xí)算法

    Matlab實(shí)現(xiàn)深度學(xué)習(xí)算法是一個(gè)復(fù)雜但強(qiáng)大的過(guò)程,可以應(yīng)用于各種領(lǐng)域,如圖像識(shí)別、自然語(yǔ)言處理、時(shí)間序列預(yù)測(cè)等。這里,我將概述一個(gè)基本的流程,包括環(huán)境設(shè)置、數(shù)據(jù)準(zhǔn)備、模型設(shè)計(jì)、訓(xùn)練過(guò)程、以及測(cè)試和評(píng)估,并提供一個(gè)基于
    的頭像 發(fā)表于 07-14 14:21 ?1944次閱讀