我認為大學在學習的過程中,我們總是一昧的接受教授在課堂上給的知識和資訊
而缺少自己做研究的精神,我從上一次專題開始(能源管理與監控 - 手機新世代)
需要去廣泛尋找過去相關的文獻,整理、分類出其中的種類
並分析他們彼此之間的優點及缺點,有了這些背景資料,開始對自己的主題進行設計
保留過去的優勢、改善以往會遇到的弊端,這樣的過程在這次最佳化路徑規畫中做得更順手
官方網站:CACS 2015
論文名稱:Optimal Robot Path Planning System by Using a Neural Network-Based Approach
備註:Accepted,2015/11/18於台灣宜蘭發表,已收錄至IEEE
Y.-W. Chen and W.-Y. Chiu, ``Optimal robot path planning system by using a neural network-based approach,’’ in Proc. CACS International Automatic Control Conference, Ilan, Taiwan, Nov. 2015, pp. 85–90.
Abtract
This paper proposes an optimal robot path planning system that can build map, plan optimal paths, and maneuver mobile robots. The system constructs a grid-based map by using information on the locations of the origin and static obstacles. The system calculates the optimal trajectory by using a simplified neural network model and accordingly maneuvers a mobile robot. For dynamic obstacles, the mobile robot can sense the ambient environment and avoid possible collisions. A practical experiment using an Arduino-based platform was conducted to illustrate the effectiveness of the proposed methodology.
內容這篇論文主要在整合一個自動化系統,能夠讓機器車從起始點自己移動到目的地,主要應用於大賣場與倉庫之間的補貨系統,補貨員只需要將貨物放置於推車上,並設定目的地貨櫃,系統即會偵測起點與固定障礙物的位置,計算最短路徑使其前往,過程中可以避免碰撞到移動中的人或其他推車。
在這樣的系統中,我採用MATLAB執行影像辨識、最佳化路徑及指令轉換的演算法,將機器車與障礙物的位置讀取進電腦,再利用類神經網路模擬規畫出最佳化的路徑,最後將路徑轉換成指令,我的實驗模擬中,是經由藍芽傳送至機器車,使其移動。
硬體方面為Arduino機器車(Fig. 1),設備有Auduino UNO、Auduino UNO Shield、伺服馬達、藍芽HC-05、測量距離的紅外線LED和接收器PNA4602M。設計的情境:大賣場的員工需要將推車中的貨物,送至擺放電腦的架子,如Fig. 2(a)中的圖示T,Fig. 2(b)是實際模擬時,障礙物用黑色卡紙,機器車用黃色卡紙以方便辨識,在執行影像辨識的演算法後,得到Fig. 2(c),紅點為障礙物、黑點為可移動的路徑、黃點為機器車所在位置,最佳化路徑規劃演算法能夠在可移動的點中,計畫出最短的路徑並顯示在MATLAB中的使用者介面中,如Fig. 2(d),最後,Fig. 2(e)是機器車移動的畫面,順利的經由最短路徑抵達目的地。
程式碼分享在GitHub,皆為.m檔,需在Matlab平台下執行,並有一份要上傳到Arduino car的.ino擋
裡頭有以下檔案
Example 1: 5x5 最佳化路徑規劃範例
藉由此程式碼瞭解類神經演算法使用的邏輯
1、將所有檔案置於同目錄,並執行optimalpath5.m
2、輸入起點、終點及障礙物位置編號,並點選Planning
3、若想要增加障礙物數量,可在程式碼中第164行的,新增barrier的判斷式(barrier4、barrier5......)
Example 2: 9x9 完整系統
包含從照片讀取地圖資訊、設計最佳路徑、將路徑轉換成給Arduino的指令
測試功能正常
1、將所有檔案置於同目錄,並執行optimalpath9.m
2、首先,先使用影像讀取與路徑規劃的功能,請點選Open Picture,並選取testimage.jpg
3、會出現一張處理後的照片,此時障礙物與起點位置已經記錄到GUI暫存記憶體中
4、如果在Target Point輸入33,點選Plan Path會有以下結果
分析地圖並應用於自己架設的環境
目前的格子點設計都只限於我自己的場地與拍攝角度
接下來介紹地圖的分析原則
1、架設你自己的實體環境,黃卡紙置於機器車上、黑卡紙為障礙物
2、開啟map2barr9.m,並將function的第7行跟第190行註解
3、將第5行取消註解,目的在,我們要執行此檔案,並非作為副程式
4、第五行換上自己地圖照片的路徑,後方[ ]裡要輸入圖片像素大小
5、直接執行此程式,並且在Command Window輸入
imshow(mapPic2);
分析過的照片會加工後顯示,黃色代表起點、紅色代表障礙物、黑色為其他可行走的點
通常,每個方格點跟你架設的環境會差非常多,原因是還沒改變參數
6、map2barr9.m中的第15行、17行、19行分別代表下圖中的位置
7、三組變數要填上你們自己地圖上的位置資訊
pX跟pY代表中間排由上往下的點座標值
dX代表中間點跟左邊第一點的距離,由上往下
8、所以每次拍照的角度必須相同,設定好自己的資訊後,將第5行註解、第7行跟第190行取消註解,恢復副程式的格式
9、開啟optimalpath9.m,更改第422行的照片大小
10、再次使用GUI,檢查Open Picture跟Plan Path是否能行
藍芽與遙控機器車
1、上傳orders.ino至Arduino中,可以很清楚看到1至8的指令分別代表前進後退等控制
2、藍芽可以參考Set up HC-05 Bluetooth或其他網路資源,配對Arduino的與電腦的藍芽
3、更改optimalpath9.m中第81行,將指令改為你電腦中的藍芽名稱
b=Bluetooth('Your name',1);
4、執行主程式GUI,點選Connect
5、副程式pathtoorder9.m就是把由路徑轉成指令(1至8)
6、Open Picture及Plan Path完後,即可按下Go Robot
7、optimalpath9.m中第408行到411行為按下Go Robot後發送指令的過程
(可參考Arduino connect with Matlab through Bluetooth)
基本上可以使用其他你習慣的任何通訊方式(Xbee、ZigBee等)
去設計給Arduino讀取由Matlab發送的資料
所有演算法的介紹可參考我發在CACS的paper(IEEE連結待補)
簡單介紹到這邊,如果有任何問題歡迎來信詢問