【机器人栅格地图】基于灰狼算法求解栅格地图路径规划及避障含Matlab源码
生活随笔
收集整理的這篇文章主要介紹了
【机器人栅格地图】基于灰狼算法求解栅格地图路径规划及避障含Matlab源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 簡介
1.1 灰狼算法介紹
1.2 柵格地圖介紹
柵格地圖有兩種表示方法,直角坐標系法和序號法,序號法比直角坐標法節省內存
室內環境柵格法建模步驟
1.柵格粒大小的選取
柵格的大小是個關鍵因素,柵格選的小,環境分辨率較大,環境信息存儲量大,決策速度慢。
柵格選的大,環境分辨率較小,環境信息存儲量小,決策速度快,但在密集障礙物環境中發現路徑的能力較弱。
2.障礙物柵格確定
當機器人新進入一個環境時,它是不知道室內障礙物信息的,這就需要機器人能夠遍歷整個環境,檢測障礙物的位置,并根據障礙物位置找到對應柵格地圖中的序號值,并對相應的柵格值進行修改。自由柵格為不包含障礙物的柵格賦值為0,障礙物柵格為包含障礙物的柵格賦值為1.
3.未知環境的柵格地圖的建立
通常把終點設置為一個不能到達的點,比如(-1,-1),同時機器人在尋路過程中遵循“下右上左”的原則,即機器人先向下行走,當機器人前方遇到障礙物時,機器人轉向右走,遵循這樣的規則,機器人最終可以搜索出所有的可行路徑,并且機器人最終將返回起始點。
備注:在柵格地圖上,有這么一條原則,障礙物的大小永遠等于n個柵格的大小,不會出現半個柵格這樣的情況。
2 部分代碼
%% 創建柵格地圖,交互程序%% 輸入地圖大小,點擊鼠標生成障礙物%創建地圖大小為X*YMAX_X=10; %地圖行數MAX_Y=10; %地圖列數%Objects in each coordinateMAP=(ones(MAX_X,MAX_Y)); % 地圖矩陣imshow(MAP,'InitialMagnification','fit') [mm,nn,~] = size(MAP); %獲取圖像的大小x = 0.5:1:nn+1; %假設水平分成8格y = 0.5:1:mm+1; %假設垂直分成8格M = meshgrid(x,y); %產生網格N = meshgrid(y,x); %產生網格hold onplot(x,N,'b'); %畫出水平橫線plot(M,y,'b'); %畫出垂直豎線pause(1);h=msgbox('利用鼠標左鍵定義障礙物位置,定義完成后右鍵定義最后一個障礙物結束定義'); xlabel('利用鼠標左鍵定義障礙物位置,定義完成后右鍵定義最后一個障礙物結束定義','Color','blue');uiwait(h,10);if ishandle(h) == 1 delete(h);endbut = 1;while but == 1 [xval,yval,but] = ginput(1); xval=floor(xval + 0.5); yval=floor(yval + 0.5); MAP(yval,xval)=0;%設置障礙物 imshow(MAP,'InitialMagnification','fit') plot(x,N,'b'); %畫出水平橫線 plot(M,y,'b'); %畫出垂直豎線endhold off;figureimshow(MAP,'InitialMagnification','fit') title('最終地圖')save('MAP.mat','MAP')3 仿真結果
4 參考文獻
[1]周東健等. "基于柵格地圖-蟻群算法的機器人最優路徑規劃." 南通大學學報:自然科學版 (2013).?
博主簡介:擅長智能優化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。
部分理論引用網絡文獻,若有侵權聯系博主刪除。
總結
以上是生活随笔為你收集整理的【机器人栅格地图】基于灰狼算法求解栅格地图路径规划及避障含Matlab源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中的管道和过滤器
- 下一篇: 四则运算小程序 c语言,四则运算小程序测