在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

路徑規劃算法實現原理

新機器視覺 ? 來源:CSDN-寫Bug那些事 ? 2023-09-06 15:36 ? 次閱讀

前言

算法原理:參考路徑規劃算法學習Day1

此方法會結合網絡占用法-柵格法來進行實現

提示:

本文會用matlab實現Dijkstra算法,并且會分享一些函數用法的鏈接,也是本人學習得來,供大家參考,批評指正。

1、Dijkstra算法

1.1、地圖創建

總所周知:柵格法生成地圖常規是的自己一個一個打,這樣既麻煩還浪費時間。

這里介紹幾種方法:

way1:在命令框中碼:map=rand(k)>0.7 %k代表多少維地圖

way2:在matlab中安裝Robotics Toolbox工具箱 里有專門的函數makemap可以幫助我們生成一張地圖

1.2、matlab實現

function path=DJS(Map,origin,destination)
cmap = [1 1 1; ...white
    0 0 0; ...black
    0 1 0; ...green
    1 1 0; ...yellow
    1 0 0; ...red
    0 0 1; ...blue
    0 1 1];
  colormap(cmap);%map visualization 


[rows, cols]=size(Map);
logical_map = logical(Map);
map=zeros(rows, cols);
map(~logical_map)=1;%free
map(logical_map)=2;%obstacle
%定義一個變量node_cost_list來保存鄰居以及它們到起始格的路程
%node_cost_list來保存這些信息,初始化為 Inf,表示從沒有訪問過。一旦有值,就說明是鄰居,賦值的大小就表示該點跟起始點的路程。一旦變成紅色,就把它的值再改回 Inf。
node_cost_list = Inf(rows, cols);
node_cost_list(origin(1),origin(2))=0;% set the node_cost of the origin node zero
%定義變量parent_list來保存路徑
parent_list=zeros(rows, cols);% create parent_list
destination_index=sub2ind(size(Map),destination(1),destination(2));
origin_index=sub2ind(size(Map),origin(1),origin(2));


plan_success=false;
while true
  map(origin(1),origin(2))=3;
      map(destination(1),destination(2))=4;


      image(0.5,0.5,map);
      grid on;
      set(gca,'xtick',1:1:rows);
      set(gca,'ytick',1:1:cols);
      axis image;
      drawnow;
      %找出距離最小的節點     
      %搜索中心與起始點的路程min_node,搜索中心的索引坐標:current_node,
      [min_node,current_node]=min(node_cost_list(:));
      if(min_node == inf || current_node == destination_index)
        plan_success=true;
        break;
      end
      node_cost_list(current_node) = inf;%當前搜索中心這個位置賦值為 Inf,表示它已經當過搜索中心了。min函數就不會再找這個位置
      map(current_node) = 5;
      [i,j]=ind2sub(size(Map),current_node);
      for k = 0:3 % four direction
        if(k == 0)
          adjacent_node = [i-1,j];
           elseif (k == 1)
          adjacent_node = [i+1,j];
          elseif (k == 2)
            adjacent_node = [i,j-1];
          elseif(k == 3)
          adjacent_node = [i,j+1];
        end
        if((adjacent_node(1)>0 && adjacent_node(1)<=rows) && (adjacent_node(2)>0 &&adjacent_node(2)<=cols))
 ? ? ? ? ? ? ? ? ? ?if(map(adjacent_node(1),adjacent_node(2)) ~= 2 && map(adjacent_node(1),adjacent_node(2)) ~= 5)
 ? ? ? ? ? ? ? ? ? ? ? if(node_cost_list(adjacent_node(1),adjacent_node(2)) > min_node + 1)
             node_cost_list(adjacent_node(1),adjacent_node(2)) = min_node + 1;
             if(map(adjacent_node(1),adjacent_node(2)) == 3)
               parent_list(adjacent_node(1),adjacent_node(2)) = 0;%如果相鄰節點是原點,則將父節點設置為0。
             else
               parent_list(adjacent_node(1),adjacent_node(2))=current_node;%否則設置當前節點為父節點
             end
             map(adjacent_node(1),adjacent_node(2)) = 6;
            end
          end
        end
      end
end


if(plan_success)
 path=[];
 node=destination_index;
 while parent_list(node)~=0
  path=[parent_list(node),path];
  node=parent_list(node);
 end
 for k = 2:size(path,2)
  map(path(k)) = 7;
  image(0.5,0.5,map);
  grid on;
  set(gca,'xtick',1:1:rows);
  set(gca,'ytick',1:1:cols);
  axis image;
  drawnow;
 end
else
  path=[];
end
end

1.3、20*20地圖

1.4、50*50地圖

gif太大無法上傳,后面我會完善。

主要就是想對比一下,可以讓大家看到迪杰斯特拉算法的缺點

2、A*(Astar)算法

2.1、原理

A*(A-Star)算法是一種靜態路網中求解最短路徑最有效的直接搜索方法,也是解決許多搜索問題的有效算法。

算法中的距離估算值與實際值越接近,最終搜索速度越快。

公式表示為:f(n)=g(n)+h(n)。

其中:

f(n) :是從初始狀態經由狀態n到目標狀態的代價估計,

g(n):是在狀態空間中從初始狀態到狀態n的實際代價,

h(n):是從狀態n到目標狀態的最佳路徑的估計代價。

對于路徑搜索問題,狀態就是圖中的節點,代價就是距離

h(n)的選取保證找到最短路徑(最優解的)條件,關鍵在于估價函數f(n)的選?。ɑ蛘哒fh(n)的選取)。

我們以d(n)表達狀態n到目標狀態的距離,那么h(n)的選取大致有如下三種情況:

如果h(n)< d(n)到目標狀態的實際距離,這種情況下,搜索的點數多,搜索范圍大,效率低。但能得到最優解。

如果h(n)=d(n),即距離估計h(n)等于最短距離,那么搜索將嚴格沿著最短路徑進行, 此時的搜索效率是最高的。

如果 h(n)>d(n),搜索的點數少,搜索范圍小,效率高,但不能保證得到最優解。

A* 算法是在迪杰斯特拉算法的基礎上進行改進的一種算法。

與之不同的是,A算法是一種啟發式搜索,不會像dijkstra算法一樣對整個地圖都進行遍歷,A算法是有方向的遍歷。

2.2、啟發式搜索

啟發式搜索(Heuristically Search)又稱為有信息搜索(Informed Search)。

它是利用問題擁有的啟發信息來引導搜索,達到減少搜索范圍、降低問題復雜度的目的。

這種利用啟發信息的搜索過程稱為啟發式搜索。

這種搜索方式優點是搜索快,提高了效率,缺點就是得到的解有可能是次優解也有可能什么都得不到。

一句話就是犧牲了精度得到了效率。

3、總結

Dijkstra與A* 對比

相同點:

兩者都是以尋找最短路徑為目的的算法。

不同點:

Dijkstra算法遍歷的時候是對4周平等對待,沒有區分的盲目進行遍歷。

A* 算法是在迪杰斯特拉算法的基礎上進行改進的一種算法。

與之不同的是,A* 算法是一種啟發式搜索,不會像dijkstra算法一樣對整個地圖都進行遍歷,A* 算法是有方向的遍歷。

它會對周圍各點進行評估,然后再進行搜索。

后續程序依舊是基于柵格進行,用matlab實現

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    188

    文章

    2998

    瀏覽量

    233352
  • 算法
    +關注

    關注

    23

    文章

    4701

    瀏覽量

    94830
  • 函數
    +關注

    關注

    3

    文章

    4372

    瀏覽量

    64283
  • 路徑規劃
    +關注

    關注

    0

    文章

    78

    瀏覽量

    15435

原文標題:路徑規劃算法學習

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于過Python+matplotlib數據可視化路徑規劃算法實現

    Astar潛在地搜索圖中一個很大的區域。和Dijkstra一樣,Astar能用于搜索最短路徑。和BFS一樣,Astar能用啟發式函數引導它自己。在簡單的情況中,它和BFS一樣快。
    的頭像 發表于 11-09 15:03 ?2297次閱讀
    基于過Python+matplotlib數據可視化<b class='flag-5'>路徑</b><b class='flag-5'>規劃算法</b><b class='flag-5'>實現</b>

    智能清潔機器人

    ;                 潔機器人路徑規劃算法實現
    發表于 11-08 22:30

    動態規劃算法

    動態規劃算法資料。
    發表于 08-30 20:44

    LCS的動態規劃算法

    LCS的動態規劃算法(自底向上)
    發表于 05-25 15:06

    你知道有哪幾種常見的車輛路徑規劃算法嗎?

    如何去提高汽車的主動安全性和交通安全性?從算法上解讀自動駕駛是如何實現的?有哪幾種常見的車輛路徑規劃算法
    發表于 06-17 10:56

    基于實時交通信息的動態路徑規劃算法性能比較_黃西洲

    基于實時交通信息的動態路徑規劃算法性能比較_黃西洲
    發表于 03-16 10:04 ?0次下載

    基于路徑跟蹤方法的路徑規劃算法

    為解決拖掛式移動機器人系統路徑規劃算法精準性低、穩定性差和無法考慮系統間安全性等的問題,提出一種基于路徑跟蹤方法的路徑規劃算法。該
    發表于 12-04 14:18 ?6次下載
    基于<b class='flag-5'>路徑</b>跟蹤方法的<b class='flag-5'>路徑</b><b class='flag-5'>規劃算法</b>

    如何使用蟻群算法及博弈論進行多Agent路徑規劃算法實現資料說明

    針對多 Agent 路徑規劃問題,提出了一個兩階段的路徑規劃算法。首先,利用改進的蟻群算法來為每個Agent
    發表于 04-26 16:24 ?10次下載
    如何使用蟻群<b class='flag-5'>算法</b>及博弈論進行多Agent<b class='flag-5'>路徑</b><b class='flag-5'>規劃算法</b>的<b class='flag-5'>實現</b>資料說明

    自動駕駛汽車四種常用的路徑規劃算法解析

    自動駕駛汽車的路徑規劃算法最早源于機器人的路徑規劃研究,但是就工況而言卻比機器人的路徑規劃復雜得
    發表于 03-08 17:29 ?1.8w次閱讀

    水下航行器自主巡航的路徑規劃算法實現

    路徑規劃算法是自主水下航行器(AUV)完成水下自主巡航的核心算法之一。分別綜述了基于環境建模和路徑搜索兩類AUⅣ路徑
    發表于 04-09 16:01 ?8次下載
    水下航行器自主巡航的<b class='flag-5'>路徑</b><b class='flag-5'>規劃算法</b><b class='flag-5'>實現</b>

    嵌入式GIS中最優路徑規劃算法研究與實現

    嵌入式GIS中最優路徑規劃算法研究與實現(嵌入式開發項目經理)-嵌入式GIS中最優路徑規劃算法研究與實現
    發表于 07-30 12:49 ?4次下載
    嵌入式GIS中最優<b class='flag-5'>路徑</b><b class='flag-5'>規劃算法</b>研究與<b class='flag-5'>實現</b>

    A星路徑規劃算法完整代碼資料匯總

    A星路徑規劃算法完整代碼資料匯總
    發表于 12-03 17:16 ?11次下載

    機器人基于搜索和基于采樣的路徑規劃算法

    基于搜索的路徑規劃算法已經較為成熟且得到了廣泛應用,常常被用于游戲中人物和移動機器人的路徑規劃。
    發表于 10-13 14:23 ?575次閱讀
    機器人基于搜索和基于采樣的<b class='flag-5'>路徑</b><b class='flag-5'>規劃算法</b>

    全局路徑規劃RRT算法原理

    通往目的地的安全和無碰撞的路徑路徑規劃問題可以分為兩個方面: (一)全局路徑規劃:全局路徑
    的頭像 發表于 11-24 15:57 ?1489次閱讀

    具身智能工業機器人路徑規劃算法成為破局關鍵

    在工業4.0與智能制造深度融合的今天,傳統路徑規劃算法已難以滿足動態生產環境的需求。面對復雜場景下的高精度避障、實時決策與多任務協同挑戰,具身智能工業機器人路徑規劃算法成為破局關鍵。作
    的頭像 發表于 03-28 15:01 ?294次閱讀
    主站蜘蛛池模板: 射菊吧| 国产香蕉在线精彩视频 | 四虎最新在线 | 特一级黄色毛片 | 天天干天天上 | 免费毛片网站在线观看 | 欧美成人午夜毛片免费影院 | 天天摸天天做天天爽 | 亚洲伊人成综合成人网 | 亚洲综合一 | 国产女人视频免费观看 | 全部免费特黄特色大片农村 | 无遮挡很爽很污很黄很色的网站 | 国产午夜毛片一区二区三区 | 婷婷丁香激情五月 | 国语自产自拍秒拍在线视频 | 能看的黄网 | 久久午夜神器 | 免费边摸边吃奶边叫床视频gif | 1024手机最新手机在线 | 色网综合| 免费亚洲视频在线观看 | 亚欧精品一区二区三区 | 性欧美成人免费观看视 | 国模大胆一区二区三区 | 男女交性无遮挡免费视频 | 色爱区综合 | 免费两性的视频网站 | 黄色免费看网站 | 在线啪| 成人在线播放av | аⅴ资源天堂8在线 | 4虎影院在线观看 | 悠悠影院欧美日韩国产 | 超h高h文污肉 | 七月色婷婷 | 亚洲亚洲人成网站在线观看 | 1024国产基地永久免费 | 色多多污网站在线观看 | 稀缺资源呦视频在线网站 | 香蕉网影院在线观看免费 |