• 沒有找到結果。

混合型機器人路徑規劃及其實現

N/A
N/A
Protected

Academic year: 2021

Share "混合型機器人路徑規劃及其實現"

Copied!
88
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學應用電子科技學系 碩士論文. 指導教授:許陳鑑 博士. 混合型機器人路徑規劃及其實現 Implementation of Hybrid Path Planning for Mobile Robots. 研究生:陳元君 撰. 中 華 民 國 一零二 年 七 月.

(2) 混 合 型 路 徑 規 劃 演 算 法 及 其 實 現. 學生:陳元君. 指導教授:許陳鑑 博士. 國立臺灣師範大學應用電子科技學系碩士班 摘. 要. 本論文提出了一種混合型機器人路徑規劃演算法。其作法係利用影像形態學 的知識,在已知環境地圖中建立一中軸地圖,並結合所提出的路徑規劃法搭配應 用,使機器人可以直接將路徑規劃在地圖的中軸上。藉由此一作法,機器人得以 在安全的路徑上移動,不但省去了處理避障或是重新規劃路徑的步驟,大幅減少 執行路徑規劃時的計算成本,同時也提升了原始 Dijkstra’s 演算法與 A*演算法的 執行效率。最後,本論文也將此演算法實現於 Android 智慧型平台裝置以及 NXT 行動機器人上,以驗證所提出之混合型路徑規劃法之可行性。. 關鍵字:路徑規劃、Dijkstra’s 演算法、A*演算法、Z-S 演算法、Android、移動 式機器人. i.

(3) Implementation of Hybrid Path Planning for Mobile Robots. Student:Yuan-Jun Chen. Advisor:Dr. Chen-Chien James Hsu. Department of Applied Electronics Technology National Taiwan Normal University. ABSTRACT. This thesis proposes a hybrid path planning algorithm for mobile robots. Based on the iterative morphological methods, the hybrid path planning algorithm establishes a backbone path for the map. With the proposed path planning method, the robot can plan paths on the axis of the map. During the process, the hybrid path planning algorithm not only eliminates the need for re-processing obstacle avoidance or re-planning the path but also significantly reduces the cost of path planning computation. Moreover, this method improves the performance of the Dijkstra’s algorithm and the A* algorithm. Finally, this thesis also implements the proposed algorithm on the Android platform and the NXT robots to verify its practicability of the proposed hybrid path planning method.. Keywords: Path planning, Dijkstra’s algorithm, A* algorithm, Z-S algorithm, Android, Mobile robot.. ii.

(4) 致. 謝. 能完成這篇碩士論文,最先要感謝指導教授許陳鑑教授,在這兩年期間,提 供了我許多設備以及資源。也讓我能夠在讀書的期間提供我們經費走訪許多國家 日本、美國和加拿大,讓我對不同世界與文化大開眼界,這樣的機會不是人人都 有的。再來感謝這幾年來教過我的老師,以及陪伴我讀書的朋友們。. 再來感謝家瑋學長,是我進入實驗室的重要人物之一。以及韋辰、士勛、和 謙、宗翰、書漢、乃宏和國棠學長們,在他們畢業後,還是和我們聚餐分享當兵 以及工作經驗,其中特別感謝宗翰、書漢和乃宏在 2012 年的 8 月規劃了一個很 難忘的京阪奈名之旅。還有感謝重穎與渤珽,在我去東京參加研討會時陪我一起 旅遊。接著感謝和我一起奮鬥的誠愷、永青、華恩,這段日子大家的一起成長學 習。還有實驗室的學弟妹家瑞、如瑜、奕君,以及大學部的香毓、曼薇、駿逸、 家瑜、廣億、芷瑄、彥丞、騰緯、竣傑、大瑋,還有原弘、顏彰時常陪我游泳, 實驗室因為有你們充滿著歡樂的氣氛,希望過幾年後都能聽到你們每個人都有很 好的成就。. 最後我要感謝我在文化資工的大學教授們與翔宇、如岑、柏辰、志文、昌璟、 瑋辰、泓汶、柯儒等朋友們,大家雖然都在不同學校讀研究所,但彼此還是能抽 空一起聚餐分享每個人在不同領域的研究與經驗分享以及最重要的釋放壓力。. iii.

(5) 目 摘. 錄. 要 ..................................................................................................................... i. ABSTRACT ................................................................................................................... ii 致. 謝 ................................................................................................................... iii. 目. 錄 ................................................................................................................... iv. 圖 目. 錄 ................................................................................................................... vi. 表 目. 錄 ................................................................................................................... ix. 第一章 緒論 ....................................................................................................................1 1.1. 研究背景與動機 ..................................................................................................1. 1.2. 相關研究方法回顧 ..............................................................................................2. 1.3. 論文架構 ..............................................................................................................5. 第二章 文獻探討 ............................................................................................................6 2.1.. 路徑規劃 ..............................................................................................................6. 2.1.1 Dijkstra’s algorithm ..............................................................................................6 2.1.2 A* algorithm .......................................................................................................10 2.2.. 骨架化 ................................................................................................................16. 2.2.1. 侵蝕(erosion)與膨脹(dilation) .......................................................................17. 2.2.2. 中軸法 ............................................................................................................21. 2.2.3. 迭代形態法 ....................................................................................................23. 2.3.. 粒子濾波器 ........................................................................................................30. 第三章 混合型路徑規劃法 ..........................................................................................35 3.1. 混合型路徑規劃(Hybrid Path Planning)概述...................................................35. 3.2. 混合型路徑規劃演算法(Hybrid Path Planning Algorithm) .............................41. 第四章 實驗平台簡介 ..................................................................................................47 4.1. 實驗系統 ............................................................................................................47. 4.1.1 Android ...............................................................................................................47 iv.

(6) 4.1.2 leJOS NXJ ..........................................................................................................50 4.2. 實驗設備 ............................................................................................................50. 4.2.1. 手持式智慧型裝置 ........................................................................................51. 4.2.2. 行動機器人裝置 ............................................................................................52. 4.3. 實作介面控制流程 ............................................................................................56. 第五章 實驗結果 ..........................................................................................................57 5.1. 實驗環境 ............................................................................................................57. 5.2. 模擬結果 ............................................................................................................59. 5.3. 實驗結果 ............................................................................................................67. 第六章 結論 ..................................................................................................................71 參 考 自 學 術. 文. 獻 ...........................................................................................................72. 傳 .......................................................................................................................76 成. 就 ...........................................................................................................78. v.

(7) 圖. 目. 錄. 圖 1 - 1 場勢法之 Local minima 問題 ...........................................................................3 圖 1 - 2 GVG 繞路問題 ..................................................................................................4 圖 2 - 1 Dijkstra’s algorithm 流程圖 ...............................................................................7 圖 2 - 2 Dijkstra’s algorithm 講解範例圖 ......................................................................8 圖 2 - 3 A* algorithm 的虛擬碼....................................................................................12 圖 2 - 4 A* algorithm 之範例地圖................................................................................12 圖 2 - 5 A* algorithm 演算過程...................................................................................16 圖 2 - 6 侵蝕運算之影像 P ..........................................................................................17 圖 2 - 7 侵蝕運算之影像 E .........................................................................................18 圖 2 - 8 侵蝕運算之影像 PE .....................................................................................18 圖 2 - 9 膨脹運算之影像 P ..........................................................................................20 圖 2 - 10 膨脹運算之影像 D ......................................................................................20 圖 2 - 11 膨脹運算之影像 P  D ................................................................................21 圖 2 - 12 物體的中軸 ...................................................................................................22 圖 2 - 13 真實環境中中軸法之結果 ............................................................................23 圖 2 - 14 窗格(3  3) ......................................................................................................24 圖 2 - 15 計算連通數 ....................................................................................................25 圖 2 - 16 說明連通數範例圖 ........................................................................................25 圖 2 - 17 Z-S 法之範例圖 .............................................................................................26 圖 2 - 18 Z-S 法之奇數次迭代運算 .............................................................................27 圖 2 - 19 Z-S 法之偶數次迭代運算 .............................................................................28 圖 2 - 20 Z-S 法之運算結果 .........................................................................................29 圖 2 - 21 粒子濾波器之運算流程 ................................................................................31 vi.

(8) 圖 2 - 22 粒子濾波器運作過程 ....................................................................................34 圖 3 - 1 以 Dijkstra’s algorithm 執行路徑規劃之範例圖...........................................36 圖 3 - 2 以 Dijkstra’s algorithm 執行路徑規劃之範例之搜尋空間圖 ......................36 圖 3 - 3 以 A* algorithm 執行路徑規劃之範例一 .....................................................37 圖 3 - 4 以 A* algorithm 執行路徑規劃之範例二 .....................................................38 圖 3 - 5 加入骨架化結果圖 ..........................................................................................39 圖 3 - 6 機器人移動路線圖 ..........................................................................................40 圖 3 - 7 機器人真實移動的路徑 ..................................................................................40 圖 3 - 8 環境地圖之前處理 ..........................................................................................42 圖 3 - 9 混合型路徑規劃演算法之過程 ......................................................................45 圖 3 - 10 混合型路徑規劃演算法之流程圖 ................................................................46 圖 4 - 1 Android 架構圖 ................................................................................................48 圖 4 - 2 leJOS 的 API 文件 ...........................................................................................50 圖 4 - 3 各大作業系統的市佔率 ..................................................................................51 圖 4 - 4 LEGO MINDSTORMS NXT 教育版(9797)...................................................53 圖 4 - 5 LEGO MINDSTORMS NXT-Brick 的內部主機板正面圖 ...........................54 圖 4 - 6 LEGO MINDSTORMS NXT-Brick 的內部主機板背面圖 ...........................54 圖 4 - 7 LEGO MINDSTORMS NXT-Brick 的藍芽模組 ...........................................55 圖 4 - 8 整體系統架構之活動圖 ..................................................................................56 圖 5 - 1 實驗環境 .........................................................................................................57 圖 5 - 2 LEGO 機器人機構圖 ......................................................................................58 圖 5 - 3 實驗座標點 ......................................................................................................59 圖 5 - 4 演算法執行各路徑規畫所需時間之比較圖 ..................................................60 圖 5 - 5 演算法搜尋空間格點百分比之比較圖 ..........................................................60 圖 5 - 6 範例一 ..............................................................................................................64 vii.

(9) 圖 5 - 7 範例二 .............................................................................................................65 圖 5 - 8 範例三 .............................................................................................................66 圖 5 - 9 範例四 .............................................................................................................66 圖 5 - 10 操作畫面步驟 ...............................................................................................69 圖 5 - 11 混合型路徑規劃演算法實現結果 ................................................................70. viii.

(10) 表. 目. 錄. 表 2 - 1 Dijkstra’s algorithm 演算步驟 ..........................................................................9 表 4 - 1 ASUS Nexus7 規格表.....................................................................................52 表 4 - 2 NXT 周邊零件.................................................................................................55 表 5 - 1 Dijkstra’s algorithm 執行各路徑規劃所需之時間.........................................61 表 5 - 2 Dijkstra’s algorithm 執行各路徑規劃需要搜尋之格點總數 ........................61 表 5 - 3 A* algorithm 執行各路徑規劃所需之時間 ...................................................62 表 5 - 4 A* algorithm 執行各路徑規劃需要搜尋之格點總數 ...................................62 表 5 - 5 混合型演算法執行各路徑規劃所需之時間 ..................................................63 表 5 - 6 混合型演算法執行各路徑規劃需要搜尋之格點總數 ..................................63. ix.

(11) 第一章. 緒論. 1.1 研究背景與動機 近年來機器人的研究以及應用相當的廣泛,例如:負責清理家裡地板環境的 清潔機器人[1]、實行校園及公寓巡邏的保全機器人[2]、在博物館中負責講解的導 覽機器人[3]、將廚房餐點送給顧客的送餐機器人[4],或是在危險災區執行救災任 務的救災機器人[5]等…,這些機器人我們可以統稱為「任務型機器人」。所有任 務型機器人在完成任務之前都有一個共同的研究議題,而這議題就是機器人如何 移動至目的地(目標物)?我們將這議題稱之為「機器人導航(Robot navigation)」 。在 機器人導航中,大致可以分為三個部分,第一部分為機器人定位(Localization), 顧名思義就是找出機器人目前的所在位置。第二部分為機器人建圖(Map building), 主要是針對機器人在未知環境的探索並建立環境地圖。第三部分為機器人路徑規 劃(Path planning),這也是本篇論文主要研究的項目。. 在機器人路徑規劃中,主要可以分為三個議題來探討,分別為避障、最短路 徑及計算的處理時間。如何在這三者之間做取捨?如果在已知的地圖環境中,規 劃出一條最短路徑,而在這條路徑規劃在計算時間一定也會有相當的付出。如果 在已知的地圖環境中,演算法能夠快速的規劃出一條路徑,此時這條路徑不一定 是條最短路徑。最後,路徑規劃完成後,接著就是機器人的行走(移動),機器 人在行走的同時,勢必會遇到一些障礙物,如果在這時候做避障處理也會造成很 多次重新路徑規劃(Replanning) ,在整體操作流程的觀點上相當費時。故本篇綜. 1.

(12) 合了以上三個議題,提出一種混合型的演算法,不但可以減少不必要的重新規劃, 同時也可以降低路徑規劃的計算時間。. 1.2 相關研究方法回顧 近年來也有許多人研究探討路徑演算法,如 A* algorithm [6], D* algorithm [7], Potential Field [8], Genetic Algorithm [9], Generalized Voronoi Graph(GVG) [10] 等...。. 在眾多路徑規劃演算法中,最廣泛使用的莫屬於 1968 年由 Hart 等三人所提 出之 A* algorithm [11],其演算法主要係使用啟發式的成本運算方式來搜尋節點, 使得搜尋具有方向性,主要原因為 A* algorithm 的優點是演算法實作上簡單且計 算時間具有相當不錯的表現,但缺點是遇到凹型障礙物(concave obstacles)時有 可能在凹型區域內做過多的不必要搜尋,以及規劃路徑遇見轉彎有障礙物時,所 規劃出來的路徑會沿著障礙物,容易造成機器人移動上的碰撞。. Dijkstra's algorithm 是 1959 年由 Dijkstra 所提出的演算法[12],主要係建立在 圖論中每個相鄰節點(node)的距離作為評估的成本資訊做貪婪(greedy)搜尋, 此演算法的好處是規劃出來的路徑一定是最短路徑,而將 Dijkstra's 演算法實作在 機器人移動時,規劃後的路徑遇到轉彎有障礙物的時候,所規劃的路徑會沿著障 礙物行走,容易造成機器人移動上的碰撞。所以在 1994 年 Anthony Stentz 所提出 的 D* algorithm [13],其主要的貢獻是具有區域修復的特性(Locally repairing)[14], 即可以利用感應器檢測環境中之動態障礙物,行進中如果檢測出障礙物在原先規 劃的路徑上時,就會針對區域的範圍重新規劃一次路徑。以上兩演算法 Dijkstra's 2.

(13) algorithm 和 D* algorithm 的共同的缺點是當地圖節點過多時會造成計算效率降 低。. 另外,場勢法(Potential Field Algorithm)[8]也是一個熱門的路徑規劃演算 法,場勢法的優點是可以預先處理地圖上向量場的資訊,接著,處理終點的向量 場資訊再做向量相加,即可快速得知目的地的方向資訊,不過當地圖有凹型障礙 物時,會有 Local minima 的問題[15],而且向量場有可能互相抵消,使得機器人 不知道下一個路徑方向而造成路徑規劃錯誤,如圖 1 - 1 所示。. 圖 1 - 1 場勢法之 Local minima 問題. 近期也有人將基因演算法(Genetic Algorithm)應用在路徑規劃的研究上[9], 基因演算法的好處是可以規劃出一條最佳的路徑,不過其缺點是運算過程很耗時, 因為基因演算法在運算過程中每一代染色體需要經過不斷的交配(Crossover)及突 變(Mutation)等演化過程,較不利於即時機器人導航系統的運作。. 3.

(14) 後來也有人將 Voronoi 圖[10][16][17][18]應用在路徑規劃的研究上,原先 Voronoi 圖是用在行動通訊領域的方法,主要是用來得知使用者是屬於哪個訊號 接收器的範圍內。當應用在機器人導航時,則可以建立地圖的骨幹圖,以確保機 器人行走時與障礙物之間可以保持著最大的安全距離[16],此方法可避免機器人 行走時容易沿著障礙物的問題,但缺點是在進行路徑規劃時,會選擇 Voronoi 圖 上與起點(Start)較近的 Voronoi Node,作為起點的下一個位置 sub-goal,及 Voronoi 圖上距離終點(Stop)較近的位置 sub-start,故容易產生多走一些不該走的路徑[17], 如圖 1 - 2 所示,其主要原因為 Voronoi 圖算是形態學中的中軸法(medial axis),容 易產生一些多餘的線段,故容易造成規劃路徑會有繞路的問題。. .. Sub-start. .. Sub-goal. 圖 1 - 2 GVG 繞路問題[17]. 4.

(15) 1.3 論文架構 本篇論文可以分為六大章節。第一章主要介紹本篇論文的研究背景與動機與 其他相關的研究討論。第二章介紹本篇論文會應用到的文獻探討,例如路徑規劃、 影像形態學與粒子濾波器定位。第三章為本篇論文所提出混合型路徑規劃的演算 法。第四章將介紹實作本篇論文所應用到的環境設備及架構。第五章則是基於第 四章的實驗結果展示。最後第六章為結論。. 5.

(16) 第二章. 文獻探討. 2.1. 路徑規劃 假設在我們所知道環境地圖中,欲從地點 A 移動至地點 B 時,我們將地圖 資訊與座標資訊帶入路徑規劃演算法中,透過演算法進而產生出一條從地點 A 至 地點 B 的一條路徑,換言之,路徑規劃顧名思義就是規劃出一條可以達成兩個不 同地點之間可移動之路徑,如果兩地間存在著路徑。最後,應用在行動機器人上, 我們該如何以最有效率的方式規劃出一條路徑,後面兩小節會介紹目前應用在行 動機器人上很熱門的演算法,並解說該些演算法的步驟與流程。. 2.1.1. Dijkstra’s algorithm. Dijkstra’s algorithm 是在 1956 年由 Edsger Dijkstra 所提出的演算法[12],當時 他並未正式發表,因為他曾說過,在當時這類的圖形問題很難被視為真正的科學 主題,“This was the first graph problem I ever posed myself and solved. The amazing thing was that I don't publish it. It was not amazing at the time. At the time, algorithms were hardly considered a scientific topic.” [19],不過 在 1959 年正 式發 表在 Numerische Mathematik 期刊[12]。Dijkstra’s algorithm 主要是用來解決圖像搜尋之 單起點最短路徑的問題(the single-source shortest path problem) ,其想法是源自於 Prim's algorithm [20]尋找最小伸展樹(Spanning tree)的概念,來找出單一起點之 最短路徑。Dijkstra’s algorithm 的步驟如流程圖 2 - 1 所示。 6.

(17) 開始. 初始化. 設定起點. 選定搜尋節 點. 計算相鄰節 點. 更新成本. 否 終止條件 是 結束. 圖 2 - 1 Dijkstra’s algorithm 流程圖. 流程圖說明[21]: 初始化:將所有節點放置在 Visit 陣列中,並將 DIST 陣列初始化距離為  。 設定起點:將起點之 DIST 設為 0 與 Count=0。 選定搜尋節點:從 DIST 中選擇距離成本最小之節點為計算節點,Visit 設為已拜 訪與 Count = Count + 1。 7.

(18) 計算相鄰節點:依公式(2-1)計算 DIST [x]。. DIST [ x] = min DIST [ x], DIST [ x]  COST [ x][ y]. (2-1). 終止條件:可以為 Count<節點總數,或者是直到搜尋至某個特定節點。其中, COST 矩陣為節點彼此之間距離關係之關係矩陣(Adjacency Matrix)。 Visit 集合為記錄尚未拜訪之節點集合。 DIST 陣列為記錄每個節點當前所需的最小成本距離。 Back 陣列為記錄每個節點之所以成為當前最小成本距離是由哪個節點所提供 的。 Count 為計數器。. 以圖 2 - 2 之有向圖為例,我們想要利用 Dijkstra 演算法求出從 S 點至 G 點的 最短路徑,其步驟如表 2 - 1 所示。. 6. S. C. 2 4. 2 4. B 1 6. A. G. 圖 2 - 2 Dijkstra’s algorithm 講解範例圖. 8.

(19) 表 2 - 1 Dijkstra’s algorithm 演算步驟 S. A. B. C. G. ♦. ♠. ↓. ♣. ↓. ♣. ↓. ♣. ↓. ♣. ↓. ♣. ♥. 0. -. -. . -. . -. . -. . -. . S , A, B, C, G. 1. S. -. 0. S. 4. S. 2. S. 6. -. .  A, B, C. 2 B. B. 3. S. 2. B. 4. -. .  A, C. 3 A. B. 3. B. 4. A. 9. C , G. B. 4. C. 8. G. C. 8. . 4 C 5 G. ♦ = 步驟,♠ = 目前搜尋的節點,↓ = Back Point, ♣ = 最小成本距離,♥ = 拜訪集合。. 範例步驟說明: 步驟 0:初始化每個節點位置之狀態,並將所有位置加入 Visit 集合與 DIST 陣列 初始化距離為  。 步驟 1:將起點設為目前搜尋的節點與從 Visit 集合中 POP 出 S,並計算其距離成 本。 步驟 2:從 Visit 集合中 POP 出目前最小的距離成本的 B,計算其距離成本,如果 成本較原計算的少時,則取代原先計算之成本與 Back Point。 步驟 3:從 Visit 集合中 POP 出目前最小的距離成本的 A,計算其距離成本,如果 成本較原計算的少時,則取代原先計算之成本與 Back Point。 步驟 4:從 Visit 集合中 POP 出目前最小的距離成本的 C,計算其距離成本,如果 成本較原計算的少時,則取代原先計算之成本與 Back Point。 9.

(20) 步驟 5:從 Visit 集合中 POP 出目前最小的距離成本 G 時,Visit 集合為空集合  , 演算法終止。. 演算法完成後,即可產生出多條由位置 S 出發至各個位置的最短路徑距離與 最小成本距離,如表 2 - 2 所示。. 表 2 - 2 由 S 出發之最短路徑表. 2.1.2. 起點. 終點. 最短路徑. 最小成本. S. A. S→B→A. 3. S. B. S→B. 2. S. C. S→B→C. 4. S. G. S→B→C→G. 8. A* algorithm. A* algorithm 是在 1968 年由 Peter Hart、Nils Nilsson 和 Bertram Raphael 等 人所提出的演算法[11],其演算法的概念是源自於 1959 年 Dijkstra 所提出的 Dijkstra’s algorithm [12],A* algorithm 主要的不同處是加入了一個評估的方程式, 如公式(2-2)所示。. F (n)  G(n)  H (n). 10. (2-2).

(21) 其中, F (n) 為評估函數, G(n) 為起點( Pstart )至位置 n 之最少成本距離, H (n) 為啟發式(heuristic)函數,主要是評估目前位置 n 至終點( Pgoal )距離, H (n) 通常以 直線距離表示,如公式(2-3)所示。. H (n)  ( xgoal  xn )2  ( ygoal  yn )2. (2-3). 如果將評估函式中的 H (n) 設為 0,即為傳統的 Dijkstra’s algorithm,故 A* algorithm 之所以能比 Dijkstra’s algorithm 來得更有效率,主要的因素就是加入了 啟發式函數 H (n),也因為加入了啟發式函數,使得 A* algorithm 在尋找終點時更 具方向性,也加速了整體的執行時間。後續也有人針對啟發式函數 H (n) 加入了 權重的機制[22][23],目的都是要減少搜尋到目標位置的執行時間。圖 2 - 3 為 Hart 等三人所提的 A* algorithm 的虛擬碼[24]。. 把起點設為 open 狀態和把起點加入 open 清單中 while open list 不為空 { 目前搜尋節點 = open list 中成本最低的節點 if 目前搜尋節點 = 終點 then 路徑完成 else 把目前搜尋節點設為 close 從 open 清單中 POP & 檢視目前搜尋節點的每個相鄰節點 for 每個相鄰節點 11.

(22) if 該節點不在 open 清單中 & 狀態不為 close & 不是障礙物 將該節點移進 open 清單中並計算其成本 }//end while 圖 2 - 3 A* algorithm 的虛擬碼[24]. 圖 2 - 4 為 A* algorithm 之範例地圖,且每格(cell)為 10  10 的單位方格,利 用 A* algorithm 的演算步驟如圖 2 - 5 所示,最後即可求得一條路徑。. GOAL. START 圖 2 - 4 A* algorithm 之範例地圖. 12.

(23) GOAL. OPEN. GOAL. OPEN. F= 58 F= 60 G=10 H=50 G= 14 H=42. OPEN. OPEN. OPEN. F= 68 G=28 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. OPEN. CLOSE. OPEN. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36. OPEN. START. OPEN. START. F= 60 G= 10 H=50. OPEN. F= 60 F= 72 G= 10 H=50 G=28 H=44. (a) 步驟一. (b) 步驟二. GOAL. GOAL. OPEN. OPEN. F= 73 G=42 H=31. F= 73 G=42 H=31. OPEN. OPEN. CLOSE. OPEN. OPEN. CLOSE. F= 68 G=28 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. F= 64 G=20 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. OPEN. CLOSE. OPEN. CLOSE. CLOSE. OPEN. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36 OPEN. START. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36 OPEN. OPEN. START. F= 60 F= 72 G= 10 H=50 G=28 H=44. (c) 步驟三. OPEN. F= 60 F= 72 G= 10 H=50 G=28 H=44. (d) 步驟四. 13.

(24) GOAL. GOAL. OPEN. OPEN. F= 73 G=42 H=31. F= 65 G=34 H=31. OPEN. OPEN. CLOSE. OPEN. CLOSE. CLOSE. F= 64 G=20 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. F= 64 G=20 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. CLOSE. CLOSE. OPEN. CLOSE. CLOSE. OPEN. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36 CLOSE. START. CLOSE. OPEN. START. F= 60 F= 64 G= 10 H=50 G=20 H=44. OPEN. F= 60 F= 64 G= 10 H=50 G=20 H=44. (e) 步驟五. (f) 步驟六. GOAL. GOAL. OPEN. OPEN. F= 65 G=34 H=31. F= 65 G=34 H=31. OPEN. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. F= 64 G=20 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. F= 64 G=20 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36 CLOSE. START. OPEN. F= 60 F= 64 G= 10 H=50 G=20 H=44. CLOSE. OPEN. START. F= 78 G=38 H=41. (g) 步驟七. OPEN. F= 60 F= 64 G= 10 H=50 G=20 H=44. OPEN F= 78 G=38 H=41. (h) 步驟八. 14.

(25) GOAL. OPEN. OPEN. OPEN. F= 88 G=48 H=40. F= 74 G=44 H=30. F= 68 G=48 H=20. OPEN. CLOSE. F= 65 G=34 H=31. F= 65 G=34 H=31. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. F= 64 G=20 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. F= 64 G=20 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36 CLOSE. START. CLOSE. F= 60 F= 64 G= 10 H=50 G=20 H=44. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36 CLOSE. OPEN. START. F= 71 G=30 H=41. F= 88 G=48 H=40. OPEN. GOAL. F= 68 G=48 H=20. OPEN. CLOSE. OPEN. F= 88 G=48 H=40. F= 74 G=44 H=30. F= 68 G=48 H=20. F= 68 G=58 H=10. CLOSE. CLOSE. F= 65 G=34 H=31. F= 65 G=34 H=31. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. F= 64 G=20 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. F= 64 G=20 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36 CLOSE. CLOSE. F= 60 F= 64 G= 10 H=50 G=20 H=44. F= 71 G=30 H=41. OPEN. CLOSE. START. OPEN. (j) 步驟十. OPEN. F= 74 G=44 H=30. CLOSE. F= 60 F= 64 G= 10 H=50 G=20 H=44. (i) 步驟九. OPEN. GOAL. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36 CLOSE. OPEN. START. F= 71 G=30 H=41. (k) 步驟十一. CLOSE. F= 60 F= 64 G= 10 H=50 G=20 H=44. OPEN F= 71 G=30 H=41. (l) 步驟十二. 15. GOAL.

(26) OPEN. OPEN. CLOSE. CLOSE. F= 88 G=48 H=40. F= 74 G=44 H=30. F= 68 G=48 H=20. F= 68 G=58 H=10. GOAL. OPEN. OPEN. CLOSE. CLOSE. F= 88 G=48 H=40. F= 74 G=44 H=30. F= 68 G=48 H=20. F= 68 G=58 H=10. CLOSE. CLOSE. F= 65 G=34 H=31. F= 65 G=34 H=31. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. F= 64 G=20 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. F= 64 G=20 H=44. F= 60 G=24 H=36. F= 56 G=28 H=28. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. CLOSE. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36. F= 58 F= 60 F= 60 G=10 H=50 G= 14 H=42 G=24 H=36 CLOSE. START. CLOSE. F= 60 F= 64 G= 10 H=50 G=20 H=44. GOAL. CLOSE. OPEN. START. F= 71 G=30 H=41. (m) 步驟十三. CLOSE. F= 60 F= 64 G= 10 H=50 G=20 H=44. OPEN F= 71 G=30 H=41. (o) 步驟十四 圖 2 - 5 A* algorithm 演算過程. 2.2. 骨架化 骨架化(Skeleton)也有人稱細線化(Thinning),在影像處理中,是用來分析影 像中的形態資訊。骨架化最主要的目的係為保持影像的連通性、保持影像的形態、 以及保持影像的空洞個數與關係。近幾年來也有很多人提出應用於行動機器人上 的相關研究[10][16][17][18],目的都是在保持機器人與障礙物之間的距離,以防 機器人與障礙物之間有危險的碰撞關係。. 16.

(27) 2.2.1. 侵蝕(erosion)與膨脹(dilation). 假設有兩影像 P 和 E 。且使用 E 影像來侵蝕(erosion) P ,我們將這動作寫成. PE 並將這符號定義如公式(2-4)所示[25]。. PE  I : EI  P. (2-4). 其意思為利用 E 來侵蝕 P ,是由像素點 I   x, y  所構成,且 I 必須滿足 EI 在 影像 I 中才可以進行侵蝕。侵蝕運算範例如圖 2 - 8 所示,侵蝕影像 PE 是 P 的 子集合(sub-set),並非所有侵蝕運算後的結果都是如此,侵蝕影像的結果還是要 取決於影像 E ,根據不同的影像 E ,其 PE 結果也會不一樣。. 圖 2 - 6 侵蝕運算之影像 P 17.

(28) 圖 2 - 7 侵蝕運算之影像 E. 圖 2 - 8 侵蝕運算之影像 PE. 18.

(29) 另外,假設有兩影像 P 和 D 。且使用 D 影像來膨脹(dilation) P ,我們將這 動作寫成 P  D 並將這符號定義如公式(2-5)所示[25]。. PD . xD. Px. (2-5). 公式(2-5)的意思為對於每個點 x  D ,都是利用這些座標的值對 P 影像進行 平移,最後再將平移的結果聯集在一起,即為 P  D 的結果。不過,由公式(2-6) 與(2-7)可知,膨脹運算與侵蝕運算不同的地方在於膨脹運算具有交換性。. P  D  ( x, y)  (u, w) | ( x, y)  P,(u, w)  D. (2-6). PD  DP. (2-7). 膨脹運算範例如圖 2 - 11 所示,當進行膨脹運算影像 P  D 時,我們都可以 明顯地發現膨脹運算後的影像都有彷彿被放大的效果,並非所有膨脹運算後的結 果都是如此,膨脹運算後的影像結果還是一樣需取決於影像 D ,根據不同的影 像 D ,及其 P  D 結果也會不一樣。. 19.

(30) 圖 2 - 9 膨脹運算之影像 P. 圖 2 - 10 膨脹運算之影像 D. 20.

(31) 圖 2 - 11 膨脹運算之影像 P  D. 2.2.2. 中軸法. 中軸法(medial axis)顧名思義就是找出物體的中軸,中軸法又稱最大球法 (maximal ball),其概念我們可以想像在物體中畫數個圓,且每個圓至少接觸到物 體兩個邊以上,代表這個圓的圓心即為中軸的其中一個點,最後再將這些數個圓 的圓心相連起來,即為整個物體的中軸[25]。如圖 2 - 12 所示。. 21.

(32) 圖 2 - 12 物體的中軸. 計算圓心的方法雖然很準確,但是計算很費時,後來有人將原先要計算圓的 半徑與方向,精簡成四個方向或是八個方向[26],雖然提升執行的效率,但是骨 架化的結果較不適合應用在本研究上。如圖 2 - 13 所示,假設這是在一個有櫃子、 盆栽、桌子等家具的真實室內環境,使用此方法計算中軸時,會產生許多多餘的 線段,如果應用在機器人路徑規劃上,容易使規劃之路徑有繞路的行為,如同第 一章所介紹的 GVG。. 22.

(33) 圖 2 - 13 真實環境中中軸法之結果. 2.2.3. 迭代形態法. 迭代形態法(Iterative Morphological Methods)也有人稱剝皮法(The Peeling Approach),在迭代形態法中最常被使用的演算法為 Zhang-Suen 演算法[27][28], 其作法分為奇數次與偶數次兩種子迭代(sub-iteration),且同時滿足每個子迭代中 的條件規則時,則刪除影像中的二值像素,使用者可以將終止條件設定為計次或 者為連續迭代兩次影像沒有刪除任何像素點為止。此方法的運算速度相當快,而 且也可以平行化處理,故經常被拿來使用。. 23.

(34) 在介紹 Zhang-Suen 演算法之前,我們先將演算法的一些符號做簡單的說明。 首先,先定義 3  3 窗格(window)的相對名稱,假設座標點 P(i, j ) 的鄰近八個方位 的座標名稱,如圖 2 - 14 所示。並以一張二值化影像為範例,表現 Zhang-Suen 演 算法之執行步驟與結果,如圖 2 - 18、圖 2 - 19、圖 2 - 20 所示。. P1 (i-1,j-1). P2 (i-1,j). P3 (i-1,j+1). P8 (i,j-1). P (i,j). P4 (i,j+1). P7 (i+1,j-1). P6 P5 (i+1,j) (i+1,j+1). 圖 2 - 14 窗格(3  3). 其中, A( P) 為計算 P(i, j ) 在該影像窗格中與鄰近像素的連通數。以順時針方 向依序由 P1、P2、P3、P4、P5、P6、P7、P8 檢查二值像素的變化,只要遇到像 素值由 0  1(即黑轉白)時,則計數器加一,直到 P(i, j ) 的鄰近八個座標點都檢查 過一次,計數器的結果即為 A( P) 的值,如圖 2 - 15 之範例所示, A( P) 結果為 3。. 24.

(35) 1 0. 1. 0. 1. P. 0. 2 1. 0. 1. 3 圖 2 - 15 計算連通數. 另外,B( P) 為計算 P(i, j ) 在該影像窗格中鄰近八個像素之非零像素的個數, 如公式(2-8)所示。以圖 2 - 16 為例, B( P) 的結果為 6。. B( P)  P1  P2  P3  P4  P5  P6  P7  P8. 1. 1. 0. 0. P. 1. 1. 1. 1. 圖 2 - 16 說明連通數範例圖. 25. (2-8).

(36) 以圖 2 - 17 為例,我們將 Zhang-Suen 演算法應用在圖 2 - 17 上,作為 Zhang-Suen 演算法講解之範例。Zhang-Suen 演算法在運算過程中,主要分為兩種 迭代模式,我們稱這兩種迭代模式為奇數次迭代與偶數次迭代。. 圖 2 - 17 Z-S 法之範例圖. 首先,我們先解釋執行奇數次迭代時所需要的條件,公式(2-9)的條件(1):. 2  B( P)  6 主要是判斷如果該點 P 滿足 2  B (P ) 時,該點 P 則為骨架的端點 (endpoints),所以此點 P 將被保留,另外,當該點 P 滿足 B( P)  6 時,該點 P 不可 被刪除,如果刪除該點 P 則會破壞原有物體的骨架形狀。接著,公式(2-9)的條件 (2): A( P)  1 ,目的是保留物體骨架的連通性,最後,公式(2-9)的條件(3)、(4), 主要是刪除物體影像的下方、右方或左上角的像素,如圖 2 - 18 所示[25]。 26.

(37) 奇數次 (1) 2  B( P)  6 (2) A( P)  1. (2-9). (3) P2* P4* P6  0 (4) P4* P6* P8  0. 圖 2 - 18 Z-S 法之奇數次迭代運算. 偶數次迭代時所需要的條件,如公式(2-10)所示,其偶數次迭代的條件(1)與 (2)與奇數次迭代相同,如公式(2-10)的條件(1): 2  B( P)  6 ,如果該點 P 滿足. 2  B (P ) 時,該點 P 則為骨架的端點,故 P 將被保留,另外,當該點 P 滿足 B( P)  6 27.

(38) 時,該點 P 不可被刪除,如果刪除該點 P 則會破壞原有物體的骨架形狀。公式(2-10) 的條件(2): A( P)  1 ,目的是保留物體骨架的連通性,最後,不同於奇數次迭代 的條件,如公式(2-10)的條件(3)、(4),主要是刪除物體影像的上方、左方或右下 角的像素,如圖 2 - 19 所示[25]。. 偶數次 (1) 2  B( P)  6 (2) A( P)  1. (2-10). (3) P2* P4* P8  0 (4) P2* P6* P8  0. 圖 2 - 19 Z-S 法之偶數次迭代運算 28.

(39) 經由奇數次與偶數次的方法不斷的迭代判斷運算,直到物體影像沒有任何像 素可以被刪除時,則結束此演算法。圖 2 - 20 為圖 2 - 17 執行 Zhang-Suen 演算法 之結果。. 圖 2 - 20 Z-S 法之運算結果. 29.

(40) 2.3. 粒子濾波器 粒子濾波器(Particle Filter, PF)的概念是源自於蒙地卡羅方法(Monte Carlo Method),蒙地卡羅法是利用貝氏濾波器(Bayesian Filter)[29]進行蒙地卡羅模擬 (Monte Carlo Simulation),經由後人不斷地研究與改良演變成現今我們大家所使用 的粒子濾波器。我們利用粒子濾波器具有估測的優點,故將其演算法應用於機器 人導航領域中的機器人定位功能,避免機器人移動至錯誤的位置,並提供適當的 資訊來修正移動中的機器人。. 粒子濾波器方法主要是利用一組亂數的粒子(Particle)或稱取樣點(Sample)來 估測目前的狀態,以及利用機器人所在之狀態位置計算出每一個粒子相對應的權 重(Weight),如果該顆粒子有較高的權重值時,即代表越有可能接近此狀態空間 的解,再經由不斷的遞迴運算,直到收斂為止。. 粒子群(Particle set) X t  xt1 , xt2 , xt3 ,. , xtn  的表示法如公式(2-11)所示。其中 t 為. 取樣時間, n 表示為粒子群中的第 n 顆粒子,且每顆粒子包含多個變數 v 。在每一 取樣時間 t ,再以後驗(Posterior)機率密度函數(Probability Density Function, PDF) 計算所對應粒子的權重值(Weight) wtn 。.  x1   x2  n x   x3       xv  t. 30. (2-11).

(41) 粒子濾波器之運算流程如圖 2 - 21 所示,除了初始化粒子群以外,大致可以 分為三大步驟,預測(Prediction)、設定權重(Weight Assignment)、和重新取樣 (Resampling),其中,計算權重和重新取樣屬於貝氏濾波器中的更新(Update)步驟 [30]。. 開始. 初始化粒子群. 預測. 設定權重. 重新取樣. 是否終止?. 否. 是 結束 圖 2 - 21 粒子濾波器之運算流程. 31.

(42) Step1: 預測. 在粒子濾波器的預測步驟中,係將上一個時刻的粒子群 X t 1 與加入控制命令. ut ,進而預測出現在的粒子群 X t ,使用 X t 來近似 Prior 相信度函數 bel ( xt ) 的粒子 群,如公式(2-12)所示。. xtn. p  xt | ut , xtn1 . (2-12). Step2: 設定權重. 在粒子濾波器的設定權重步驟中,主要是計算出粒子群中每一個粒子 xtn 所相 對應之權重 wtn 。計算權重 wtn 的方法主要是利用感測器資訊 zt 更新粒子群,其公 式如(2-13)所示。. wtn  p  zt | xtn . (2-13). 因為權重的加入,可以將原先粒子群使用 Prior 相信度函數 bel ( xt ) 的方式, 改成 Posterior 相信度函數 bel ( xt ) 的方式來表示,及涵義如公式(2-14)表示。. wtn . bel ( xt ) bel ( xt ). 32. (2-14).

(43) Step3: 重新取樣. 此步驟主要是根據上一步所計算之權重 wtn,將原來的粒子群轉換成另一組個 數相同的粒子群,其轉換方式是依照權重的高低,權重值較低的粒子直接刪去, 反之,在權重較高的粒子的周圍多增加一些粒子,使得粒子可以集中在較高權重 的空間,因為權重較高的空間,極有可能存在目前狀態空間的解。故重新取樣前, 粒子群是依照 Prior 相信度函數 bel ( xt ) 所分佈,經由重新取樣後,粒子群則會分 佈近似於 Posterior 相信度函數 bel ( xt ) ,如圖 2 - 22 所示。. 粒子濾波器的運作過程如圖 2 - 22 所示。假設初始粒子群有 10 顆粒子,並且 每顆粒子所代表著不同的狀態空間解。首先,先進行預測,將這些粒子群做擾動 並加入已知的控制命令 ut ,以產生與原先粒子群有些微不同的新粒子群,再經由 設定權重,可以得知每顆粒子的權重值,接著,再進行重新取樣的步驟,我們將 這些粒子群中,權重較低的粒子做刪除,並在權重較高的區域增加粒子,以進行 下一次遞迴的預測,一直重複以上的動作,直到粒子群收斂至我們所要的解時, 則停止以上程序,此時,最佳粒子的狀態空間解,即為我們估測結果的解。. 33.

(44) Prediction. Weight Assignment. 圖 2 - 22 粒子濾波器運作過程. 34. Resampling.

(45) 第三章. 混合型路徑規劃法. 3.1 混合型路徑規劃(Hybrid Path Planning)概述 由上一章節文獻探討的介紹,我們可以知道本篇論文實現行動機器人路徑規 劃所需的一些基本知識,例如:路徑規劃演算法、骨架化和機器人定位方法。本 篇論文可分為兩大部分探討,第一部分為路徑規劃也是論文的主要貢獻,第二部 分為機器人定位,目的在修正里程器(encoder)的誤差。. 首先,說明路徑規劃部分,上一章節我們介紹了 Dijkstra’s algorithm 和 A* algorithm,Dijkstra’s algorithm 的確可以規劃出一條最短路徑的演算法,如圖 3 - 1 所示,綠色為起點,紅色為終點,藍色為 Dijkstra’s algorithm 所規劃出的路徑, 不過,當地圖中起點與終點之間的格點過多時,容易造成演算法規劃時間過久, 因為 Dijkstra’s algorithm 在地圖空間中搜尋終點時,是沒有方向性的搜尋,如圖 3 - 2 所示,綠色為起點,紅色為終點,黃色為 Dijkstra’s algorithm 所規劃出的路徑, 灰色漸層區域為 Dijkstra’s algorithm 探索過程中所拜訪的區域,由圖 3 - 2 可以約 略地看出,Dijkstra’s algorithm 係由起點以類似同心圓的方式向外擴張搜尋,直到 搜尋到終點,進而產生出一條路徑,也因為是以沒有方向性的方式搜尋,所以較 容易花費許多不必要的方向計算,故時間計算成本較其他演算法來的高,好處是 可以規劃出一條最短的路徑。. 35.

(46) 圖 3 - 1 以 Dijkstra’s algorithm 執行路徑規劃之範例圖. 圖 3 - 2 以 Dijkstra’s algorithm 執行路徑規劃之範例之搜尋空間圖. 36.

(47) 另外,A* algorithm 不同於 Dijkstra’s algorithm ,主要是加入了啟發式的探 索函數,目的是讓搜尋具有方向性,以便更快速找到終點。由於 A* algorithm 所 加入的啟發式的探索方程式,主要係將機器人位置與終點的直線距離視為一種權 重的方式來搜尋。圖 3 - 3(a)為一無障礙物之環境地圖,紅色為起點,綠色為終點, 藍色為 A* algorithm 所規劃出的路徑,圖 3 - 3(b)為執行 A* algorithm 路徑規劃時 所搜尋之地圖空間示意圖。圖 3 - 4(a)為一有障礙物之環境地圖,紅色為起點,綠 色為終點,藍色為 A* algorithm 所規劃出的路徑,圖 3 - 4(b)為執行 A* algorithm 路徑規劃時所搜尋之地圖空間示意圖。我們由圖 3 - 3 和圖 3 - 4 可以觀察出,當 起點與終點的直線距離之間若存在著障礙物時,則 A* algorithm 在規劃路徑也會 隨著障礙物的增加而效率降低。. (a). (b). 圖 3 - 3 以 A* algorithm 執行路徑規劃之範例一. 37.

(48) (a). (b). 圖 3 - 4 以 A* algorithm 執行路徑規劃之範例二. 雖然,我們要規劃出一條由起點至終點的路徑,並且應用在行動機器人上, 使用 Dijkstra’s algorithm 和 A* algorithm 都可以幫我們達到此目的。不過,由圖 3 - 1 和圖 3 - 4 都可以明顯發現,使用 Dijkstra’s algorithm 和 A* algorithm 所規劃出 的路徑遇到轉彎或者是障礙物時,都容易沿著牆角或是障礙物移動。對於行動機 器人來說算是一條不安全的路徑,會造成很多不確定性的碰撞與危險。所以我們 將中軸的概念加入至路徑規劃中,一方面,所規劃的路徑可以與障礙物保持最大 的安全距離,避免機器人在移動時所造成的不必要碰撞,另一方面,可以減少許 多不必要的節點運算。圖 3 - 5 繪示一環境地圖,其中藍色部分為此環境地圖的中 軸。所以我們在規劃較遠距離的路徑時,就可以將規劃的地圖切換至中軸的地圖, 以減少不必要的格點計算,提升效率。. 38.

(49) 圖 3 - 5 加入骨架化結果圖. 最後,說明機器人定位部分,在本篇論文主要是用來輔助行動機器人在移動 中,可能因為地形的凹凸不平,所造成里程計在移動時的誤差,所以我們使用移 動機器人上的距離感測器並搭配粒子濾波器的方法,來估測移動機器人的所在位 置,並校正行動機器人在移動時所產生的累積誤差。圖 3 - 6 為行動機器人想要移 動的路徑。但因為里程計所產生的累積誤差,使得移動的路徑與原先規劃的路徑 不一樣,圖 3 - 7 為機器人真實移動的路徑。. 39.

(50) 圖 3 - 6 機器人移動路線圖[31]. 圖 3 - 7 機器人真實移動的路徑[31] 40.

(51) 3.2 混合型路徑規劃演算法(Hybrid Path Planning Algorithm) 由上一節的介紹,我們可以知道一般的路徑規劃演算法所規劃的路徑,並且 將規劃的路徑應用在機器人移動的時候,若機器人依照規劃之路徑行走,當移動 的路徑行經障礙物或者是轉彎處時,以機器人的觀點,所規劃之路徑容易沿著障 礙物移動,往往會造成一些近距離的接觸、摩擦或者是些微的碰撞,對於機器人 行走來說是相當不安全的。如果使用避障或者是重新規劃的模式來處理,不可避 免地會耗費許多避障與重新規劃的時間成本。另外,以演算法本身的觀點來說, 將路徑規劃演算法融入了中軸的觀念,一方面,可以確保規劃後的路徑能夠保持 在可行走到路的中央,使得機器人能夠在較安全的路徑上移動,換言之,也可以 減少許多機器人移動時,需要處理避開障礙物及重新規劃的計算。另一方面,利 用中軸的概念也可以大幅減少許多計算的格點,即減少了路徑規劃的處理時間。. 以下為混合型路徑規劃演算法(Hybrid Path Planning Algorithm)之實行步驟:. 步驟一:建立已知地圖的骨架化(中軸)地圖。 步驟二:設定起點以及終點。 步驟三:經由公式(3-1)找出子終點 SGo (sub-goal),再由公式(3-2)找出子起點 SSo (sub-start)。 步驟四:判斷是否使用混合型路徑規劃或執行 A*algorithm。如果 Pstart Pgoal  Pstart SGo 或是 Pstart Pgoal  DT , DT 為一閥值,則直接使用 A*algorithm 規劃路徑,否 則使用混合型規劃路徑。 步驟五:依照步驟四判斷結果執行路徑規劃。 41.

(52) SGo  arg min( Pstart Pthinning ( )). (3-1). SSo  arg min( Pgoal Pthinning (  )). (3-2). 0  n. 0   n. 其中,Pstart 為起點,Pgoal 為終點,SGo 為最佳的子終點,SSo 為最佳的子起點, Pthinning 為地圖的中軸座標點的集合,n 為中軸地圖的座標點總數, 和  為 Pthinning 集. 合的索引值。. 首先,我們會在已知的環境地圖中找出骨架化地圖,即中軸座標點集合,也 是機器人可行走的安全路徑。圖 3 - 8(a)係繪示一已知的環境地圖,圖 3 - 8(b)為 此環境地圖的骨架化地圖。. (a). (b) 圖 3 - 8 環境地圖之前處理. 42.

(53) 接著,演算法會依照起點與終點的距離判斷是否要使用混合型路徑規劃演算 法,如果條件 Pstart Pgoal  PstartSG o滿足,或是起點與終點的距離在我們所設定的閥 值範圍之內,則直接使用 A*algorithm 規劃路徑。否則,需要使用混合型路徑規 劃演算法時,先將路徑做分段處理,即利用公式(3-1)找出中軸地圖上的子終點 SGo (sub-goal),以及公式(3-2)找出中軸地圖上的子起點 SSo (sub-start),如圖 3 - 9(a) 所示,其中紅色座標點為起點,綠色座標點為終點。另外,如圖 3 - 9(b)所示,紅 色六角星形係表示為地圖中軸座標點的位置,黃色點則為 SGo,藍色點則為 SSo 。. 下一步,我們將以分段的座標點依序執行路徑規劃,順序分別為起點、 SGo (sub-goal)、 SSo (sub-start)、終點。顧名思義我們可以將路徑分成三小區段來規 劃,以起點和 SGo 之區段的路經規劃來說,我們以已知的環境地圖為規畫路徑之 地圖,使用 A*algorithm 規劃此區段之路徑,如圖 3 - 9(c)所示,紅色為起點座標 位置,黃色為 SGo 的座標位置,黃色線段則為此區段所規劃之路徑。以 SGo 和 SSo 區段的路經規劃來說,我們以中軸座標點作為路徑規劃之依據,使用 A*algorithm 規劃此區段之路徑,如圖 3 - 9(d)所示,黃色為 SGo 的座標位置,藍色為 SSo 的座 標位置,淺藍色線段則為此區段所規劃之路徑。再以 SSo 和終點區段的路經規劃 來說,我們以環境地圖為路徑規劃之地圖,使用 A*algorithm 規劃此區段之路徑, 如圖 3 - 9(e)所示,藍色為 SSo 的座標位置,綠色為終點的座標位置,綠色線段則 為此區段所規劃之路徑。最後,將此三個區段之路徑串聯起來,即由起點移動至 終點的一條完整路徑,如圖 3 - 9(f)所示。. 43.

(54) (a). (b). (c). (d). 44.

(55) (e). (f) 圖 3 - 9 混合型路徑規劃演算法之過程. 綜上所述,混合型路徑規劃演算法的流程圖如圖 3 - 10 所示。. 45.

(56) 開始. 地圖骨架化處理. 設定起點與終點. 計算SGo與SSo. PstartPgoal < PstartSGo 否. 是. 路徑分段. 執行路徑規劃 否 是否執行完分段?. 是 結束 圖 3 - 10 混合型路徑規劃演算法之流程圖. 46.

(57) 第四章. 實驗平台簡介. 4.1 實驗系統 此節主要介紹混合型機器人路徑規劃及其實現時,混合型路徑規劃演算法所 需的軟體平台(Android),以及撰寫機器人控制與溝通所需的軟體平台 (lejOS NXJ)。. 4.1.1. Android. Android 是一種以 Linux 為基礎的半開放式的作業系統平台,最初是在 2003 年由 Andy Rubin、Rich Miner、Nick Sears 和 Chris White 共同創立 Android 公司, 最初是要開發智慧型相機(digital cameras),不過礙於當時的市場環境所以轉向智 慧型手機市場,於 2005 年被 Google 收購,並於 2007 年 Google 與多家軟硬體廠 商和電信公司成立了開放手持設備聯盟(the Open Handset Alliance),隨後 2008 年 的 10 月,由 HTC 首度發表第乙支 Android 手機[32],至今 Android 也成為智慧型 裝置的主流系統平台。. 47.

(58) 圖 4 - 1 Android 架構圖[33]. Android 的系統架構如圖 4 - 1 所示,大致可以分四大層五區塊,由底層至上 層分別為:Linux 核心層(Linux Kernel)、中介層的函式庫(Libraries)、中介層的 Android 執行環境(Android Runtime)、應用程式框架層(Application Framework)與 應用程式層(Applications)。以上的架構也有人稱之為軟體堆疊。. (1) Linux 核心層(Linux Kernel): Android 作業系統平台採用 Linux 2.6 至 Linux 3.0 的核心,它負責管 理行動裝置的電源、網路、記憶體以及硬體的驅動等…,可以避免我們 在開發程式時,不當使用硬體導致系統不安全。 48.

(59) (2) 中介層: 其中的函式庫(Libraries),主要為一些開放原始碼,例如:影音檔 (Media Framework)、3D 螢幕繪製(Open GL)、SQL(SQLite)、網頁函式庫 (WebKit) 和 C/C++的標準函式庫(libc)等…,可供程式執行時呼叫使用。. 另外,Android 執行環境(Android Runtime),負責將我們所撰寫的 Java code(.java)經由 JVM 編譯後的 Java byte code(.class),最後再經由 Dalvik 虛擬機器轉換成 Dalvik executable(.dex),而每個 Android 的應用 程式都有屬於自己的執行緒,且交給 Dalvik 虛擬機來執行。. (3) 應用程式框架層(Application Framework): 此層算是開發者最常使用的一層,應用程式框架層的框架設計化簡 了許多元件的應用,使開發者可以簡單地控制應用程式的視窗、資源、 活動、位置、通知、電話和套件等,並可以輕易地更換成模組區塊且不 會影響其他元件的運作。. (4) 應用程式層(Applications): 應用程式層為 Android 的系統架構最上層,為 JAVA 所開發的應用 程式。例如:瀏覽器、撥號程式、計算機、通訊錄、播放程式、遊戲等 應用程式。. 49.

(60) 4.1.2. leJOS NXJ. 起源於 2000 年,最初由一群程式愛好者所提出的「TinyVM」的計畫,並推 出第一版的 leJOS[34]。leJOS NXJ[35]是一個可執行於 LEGO MINDSTORMS NXT 智慧型機器人上的虛擬機器,由於可以使用物件導向程式設計,並可以使用 JAVA 標準語法來開發機器人應用程式,所以近幾年的使用人數逐年增加。此外,leJOS 官網也提供了許多 API 文件給開發者使用,如圖 4 - 2 為 leJOS 所提供的 API 文 件。. 圖 4 - 2 leJOS 的 API 文件[36]. 4.2 實驗設備 此節主要介紹混合型機器人路徑規劃及其實現時所需的硬體設備,分別介紹 所使用的手持式智慧型裝置與行動機器人裝置。 50.

(61) 4.2.1. 手持式智慧型裝置. 本研究係使用手持式智慧型裝置進行操控,主要原因是因為以 Android 為平 台的智慧型手機與平板已經非常普及。如圖 4 - 3 所示,可以看出 2013 第一季以 Android 為平台的智慧型手機佔 75%。此外,智慧型手機也整合了許多種感測器, 例如:加速器感應器、陀螺儀、GPS、相機、電子羅盤等…,以達到整合型開發。 不同於一般的筆電與嵌入式系統開發板,智慧型手機最重要的優點是體積小且同 樣具有運算的功能,價格也相當便宜。. 圖 4 - 3 各大作業系統的市佔率[37]. 考慮以上的條件,我們選擇了智慧型平板電腦 Google Nexus 7 作為實驗平台。 及其規格如表 4 - 1 所示。 51.

(62) 表 4 - 1 ASUS Nexus7 規格表[38] 作業系統. Android TM 4.1 Jelly Bean. 主螢幕尺寸. 7吋. CPU. NVIDIA® Tegra3™ Quad-Core. 記憶體. 1GB. 資料儲存應用. 32GB. 無線資料網路. WLAN 802.11 b/g/n@2.4GHz 藍牙 V3.0. 攝影鏡頭. 1.2 百萬畫素 正面鏡頭. 電池. WiFi:9.5 hours,4325mAh. 尺寸. 198.5 x 120 x 10.45 mm. 重量. 340g. 感應器. G-Sensor, Light Sensor, Gyroscope ,E-compass, GPS, NFC, Hall Sensor. 4.2.2. 行動機器人裝置. 本研究所使用的行動機器人為 LEGO MINDSTORMS NXT 教育版(9797)套件, 以及加購一些 NXT 周邊裝置(感測器),以下分別介紹。. 52.

(63) (1) NXT LEGO MINDSTORMS NXT[39]的第一次發表於 2006 年的 7 月,由 LEGO 公司所推出的可程式化機器人模組,LEGO MINDSTORMS NXT 是由 LEGO 的積木以及微處理機 ARM7-TDMI-32-bit 所搭配組合而成的 機器人套件[41]。如圖 4 - 4 繪示 LEGO MINDSTORMS NXT 教育版(9797) 套件。我們可以應用 LEGO MINDSTORMS NXT 所提供的函式庫與應用 程式介面編寫開發程式至 NXT-Brick 上,再搭配 LEGO 的積木與周邊的 感測器,並結合自己的想像力及創意,組合乙台獨一無二屬於自己的機 器人。此外,LEGO MINDSTORMS NXT 可支援多種程式語言撰寫如 NXT-G、C++、JAVA、LabVIEW、Matlab、Lua 等[40]。圖 4 - 5 為 LEGO MINDSTORMS NXT-Brick 的內部主機板圖, 圖 4 - 6 為其主機板之背面。 其 LEGO MINDSTORMS NXT 主機板有四個輸入埠(Port)以及三個輸出 埠(Port)。. 圖 4 - 4 LEGO MINDSTORMS NXT 教育版(9797). 53.

(64) 圖 4 - 5 LEGO MINDSTORMS NXT-Brick 的內部主機板正面圖[42]. 圖 4 - 6 LEGO MINDSTORMS NXT-Brick 的內部主機板背面圖[42]. 54.

(65) (2) NXT 周邊裝置 機器人的感測器如同人類的各種感知器官,可以使機器人得知目前 所在環境的各種物理量的變化。表 4 - 2 列本實驗所使用到的感測器零件。 此外,機器人除了可以利用感測器得知所在的環境資訊外,最重要的就 是能夠與智慧型裝置溝通,圖 4 - 7 所繪示 LEGO MINDSTORMS NXT-Brick 內建的藍芽模組。. 表 4 - 2 NXT 周邊零件 [39][43] 圖片. 名稱. 用途 使機器人可以明確知道自己所. Compass Sensor. 在的方向。. High Precision Short. 用來計算機器人與前方障礙物. Range Infrared distance. 的距離。. sensor for NXT The Servo Motor. 扮演機器人移動機構的腳色。. 圖 4 - 7 LEGO MINDSTORMS NXT-Brick 的藍芽模組[42]. 55.

(66) 4.3 實作介面控制流程 本實驗主要由三種主要的參與者所構成,分別為使用者、智慧型裝置和 NXT。 下圖 4 - 8 為整體互動關係之系統架構活動圖。. 圖 4 - 8 整體系統架構之活動圖. 56.

(67) 第五章. 實驗結果. 5.1 實驗環境 本研究是基於已知機器人起始位置與室內環境為前提,並且環境中無動態障 礙物以及平坦地面的先決條件之下所進行的實驗。圖 5 - 1 為實驗環境的規格大小, 地圖環境為 170cm  180cm 的空間,機器人約為 15cm  15cm 的大小。. 圖 5 - 1 實驗環境. 本研究機器人使用 LEGO MINDSTORMS NXT 教育版(9797)套件,主要使用 NXT 主機乙台、兩顆伺服馬達、乙顆電子羅盤、兩個中距光學測距器與乙個長距 光學測距器,組裝結果如圖 5 - 2 所示。兩個中距光學測距器分別裝置在機器人的 57.

(68) 左與右側,另乙個長距光學測距器則是裝在機器人的前方。LEGO MINDSTORMS NXT-Brick 的韌體選用 leJOS 0.85 版。Android 手機方面則選用 Android SDK 4.2.2 版本來開發。. Compass sensor. IR sensor. IR sensor. Servo Motor. NXT 主機 圖 5 - 2 LEGO 機器人機構圖. 58. Servo Motor. IR sensor.

(69) 5.2 模擬結果 我們在環境地圖中選定八個座標點 1~8,取其任兩點為起點與終點執行路徑 規劃演算法。所使用的路徑規劃演算法包含 Dijkstra’s algorithm、A* algorithm 和 我們所提出的混合型路徑規劃法。模擬運算以筆記型電腦進行,其規格為處理器 Intel Core i5 480M 2.66 GHz,顯示卡為 AMD HD6550(1GB)以及記憶體為 DDR3 4GB。以此電腦平台執行骨架化的執行時間為 0.013 秒。. 在規劃每條路徑時,計算所需要的執行時間以及統計需要搜尋多少個地圖格 點個數的百分比,並將這些資訊做為比較演算法的依據。如圖 5 - 3 所示,1~8 分 別代表各點之座標位置。地圖中每個格點代表 5cm  5cm 的實際距離大小。然 後再將計算結果之資訊,整理成表格如圖 5 - 4、圖 5 - 5、表 5 - 1、表 5 - 2、表 5 - 3、表 5 - 4、表 5 - 5 和表 5 - 6 所示。由於我們設定規劃的座標共有八個,除了 起點與終點座標相同不需處理,故每個演算法所執行的路徑規劃資料總數皆為五 十六筆。. 1. 2 7. 6 5 8 3. 4 圖 5 - 3 實驗座標點 59.

(70) 路徑 1 路徑 3 路徑 5 路徑 7 路徑 9 路徑 11 路徑 13 路徑 15 路徑 17 路徑 19 路徑 21 路徑 23 路徑 25 路徑 27 路徑 29 路徑 31 路徑 33 路徑 35 路徑 37 路徑 39 路徑 41 路徑 43 路徑 45 路徑 47 路徑 49 路徑 51 路徑 53 路徑 55. 路徑 1 路徑 3 路徑 5 路徑 7 路徑 9 路徑 11 路徑 13 路徑 15 路徑 17 路徑 19 路徑 21 路徑 23 路徑 25 路徑 27 路徑 29 路徑 31 路徑 33 路徑 35 路徑 37 路徑 39 路徑 41 路徑 43 路徑 45 路徑 47 路徑 49 路徑 51 路徑 53 路徑 55. 0.16. 0.14. 0.12. 0.1. 0.08. 0.06. 0.04. 0.02. 0. Dijkstra A*. Dijkstra. A*. 60 Proposed. 圖 5 - 4 演算法執行各路徑規畫所需時間之比較圖. 100%. 90%. 80%. 70%. 60%. 50%. 40%. 30%. 20%. 10%. 0%. Proposed. 圖 5 - 5 演算法搜尋空間格點百分比之比較圖.

(71) 表 5 - 1 Dijkstra’s algorithm 執行各路徑規劃所需之時間 終點 起點. 1. 2. 1. 0.050. 3. 4. 5. 6. 7. 8. 0.085. 0.099. 0.081. 0.071. 0.013. 0.049. 0.092. 0.081. 0.019. 0.089. 0.025. 0.062. 0.088. 0.104. 0.051. 0.088. 0.038. 0.075. 0.116. 0.128. 0.043. 0.099. 0.068. 0.049. 0.076. 0.040. 2. 0.051. 3. 0.133. 0.120. 4. 0.126. 0.138. 0.101. 5. 0.094. 0.039. 0.093. 0.077. 6. 0.108. 0.122. 0.061. 0.115. 0.099. 7. 0.026. 0.063. 0.086. 0.085. 0.071. 0.070. 8. 0.123. 0.141. 0.089. 0.097. 0.094. 0.088. 0.109. 0.141(sec.). 最好. 0.013(sec.). 平均. 0.081232(sec.). 最差. 0.051. 表 5 - 2 Dijkstra’s algorithm 執行各路徑規劃需要搜尋之格點總數 起點. 終點. 1. 1. 2. 3. 4. 5. 6. 7. 8. 671. 1124. 1160. 1091. 983. 162. 718. 1160. 1039. 247. 1121. 356. 736. 795. 1038. 439. 786. 295. 572. 1001. 930. 278. 1089. 819. 560. 714. 370. 2. 710. 3. 1118. 1160. 4. 1160. 1124. 747. 5. 1160. 370. 1159. 851. 6. 1115. 1160. 498. 1119. 1040. 7. 406. 691. 1145. 1160. 1002. 1029. 8. 1160. 1160. 718. 821. 854. 758. 1160(cells). 最好. 162(cells). 平均. 最差. 61. 720 886 843.8393(cells).

(72) 表 5 - 3 A* algorithm 執行各路徑規劃所需之時間 終點 起點. 1. 2. 1. 3. 0.005. 4. 5. 6. 7. 8. 0.012. 0.020. 0.025. 0.030. 0.004. 0.012. 0.037. 0.023. 0.002. 0.047. 0.008. 0.009. 0.011. 0.063. 0.015. 0.033. 0.012. 0.030. 0.045. 0.032. 0.021. 0.039. 0.023. 0.011. 0.027. 0.007. 2. 0.003. 3. 0.050. 0.059. 4. 0.027. 0.049. 0.010. 5. 0.023. 0.003. 0.039. 0.019. 6. 0.029. 0.045. 0.012. 0.032. 0.018. 7. 0.005. 0.009. 0.010. 0.018. 0.014. 0.034. 8. 0.030. 0.028. 0.017. 0.019. 0.015. 0.008. 0.009. 0.063(sec.). 最好. 0.002(sec.). 平均. 0.022179(sec.). 最差. 0.005. 表 5 - 4 A* algorithm 執行各路徑規劃需要搜尋之格點總數 起點. 終點. 1. 2. 1. 72. 3. 4. 5. 6. 230. 346. 336. 365. 79. 210. 561. 352. 40. 670. 136. 187. 72. 401. 136. 303. 100. 199. 405. 269. 133. 403. 245. 126. 214. 89. 2. 72. 3. 409. 646. 4. 335. 337. 72. 5. 301. 42. 374. 205. 6. 300. 462. 152. 349. 233. 7. 95. 152. 183. 304. 254. 393. 8. 373. 276. 120. 148. 162. 111. 670(cells). 最好. 40(cells). 平均. 最差. 62. 7. 8. 113 133 246.1607(cells).

(73) 表 5 - 5 混合型演算法執行各路徑規劃所需之時間 終點 起點. 1. 2. 1. 3. 0.005. 4. 5. 6. 7. 8. 0.005. 0.006. 0.006. 0.005. 0.003. 0.004. 0.008. 0.008. 0.002. 0.006. 0.003. 0.003. 0.005. 0.005. 0.004. 0.005. 0.004. 0.004. 0.004. 0.003. 0.003. 0.006. 0.002. 0.002. 0.004. 0.002. 2. 0.003. 3. 0.006. 0.007. 4. 0.005. 0.006. 0.004. 5. 0.004. 0.003. 0.004. 0.006. 6. 0.004. 0.005. 0.004. 0.003. 0.004. 7. 0.002. 0.003. 0.006. 0.004. 0.004. 0.004. 8. 0.004. 0.005. 0.003. 0.004. 0.002. 0.003. 0.003. 0.008(sec.). 最好. 0.002(sec.). 平均. 0.004196(sec.). 最差. 0.003. 表 5 - 6 混合型演算法執行各路徑規劃需要搜尋之格點總數 起點. 終點. 1. 2. 1. 79. 3. 4. 5. 6. 7. 110. 112. 95. 112. 40. 66. 142. 128. 62. 133. 51. 79. 89. 98. 62. 87. 59. 83. 82. 68. 48. 116. 63. 51. 64. 44. 2. 79. 3. 120. 133. 4. 106. 112. 89. 5. 102. 61. 94. 92. 6. 97. 110. 64. 74. 81. 7. 43. 54. 95. 92. 72. 96. 8. 86. 91. 61. 50. 59. 57. 142(cells). 最好. 40(cells). 平均. 最差. 63. 8. 42 42 81.73214(cells).

(74) 我們以圖 5 - 3 所標示的八個座標點位置分別為起點及終點,執行三種路徑規 劃演算法,將所執行的時間以圖 5 - 4 來表示,可以明確地看出,我們提出的混合 型路經規劃演算法所規劃的時間比 Dijkstra’s algorithm 與 A* algorithm 還快,其主 要的原因可以由圖 5 - 5 得知,因為我們所提出的混合型路經規劃演算法化簡了環 境地圖中的格點,所以減少了計算格點的運算,也相對地可以減少運算時所需的 執行時間。. 以下將上表三種演算法中,分別以 Dijkstra’s algorithm 與 A* algorithm 的觀點, 取出兩種演算法執行實驗八個座標中較佳與較差之路徑,共取四種路徑做為三種 演算之比較與分析,並搭配起點(紅)、終點(綠) 與路線(藍)以及搜尋空間之格點(灰) 合併一起呈現。. 圖 5 - 6 範例一係以 Dijkstra’s algorithm 的觀點,比對表 5 - 1 中起點位置”1”, 終點位置”7”的數據結果,挑出此演算法在表 5 - 1 中比平均執行時間較佳的範例 位置為例,並使用三種不同演算法規劃路徑之結果。我們可以看出三種演算法之 搜尋特性,Dijkstra’s algorithm 由起點向外擴張搜尋,A* algorithm 由起點向外擴 張搜尋之外又多了方向性,Proposed 的演算法則是利用骨架搜尋。. (a) Dijkstra’s algorithm. (b) A* algorithm 圖 5 - 6 範例一 64. (c)Proposed.

(75) 圖 5 - 7 範例二係以 Dijkstra’s algorithm 的觀點,比對表 5 - 1 中,其起點位 置”8”,終點位置”2”的數據結果,挑出此演算法在表 5 - 1 中比平均執行時間較差 的範例位置為例,並使用三種不同演算法規劃路徑之結果。我們一樣可以看出三 種演算法之搜尋特性,Dijkstra’s algorithm 由起點向外擴張搜尋,A* algorithm 由 起點向外擴張搜尋之外又增加了方向性,Proposed 的演算法則是搭配骨架搜尋。 以圖 5 - 6 與圖 5 - 7 來看 Dijkstra’s algorithm,可以發現其執行時間與起點和終點 的距離有關。. (a) Dijkstra’s algorithm. (b) A* algorithm. (c) Proposed. 圖 5 - 7 範例二. 圖 5 - 8 範例三係以 A* algorithm 的觀點,比對表 5 - 3 中起點位置”2”,終點 位置”5”的數據結果,且挑出此演算法在表 5 - 3 中比平均執行時間較佳的範例位 置為例,並使用三種不同演算法規劃路徑之結果。我們可以看出此範例使用 A* algorithm,所搜尋的空間最少,執行時間也較快。可是當實際應用在機器人導航 上,可能會造成機器人移動時與障礙物太近,導致行進過程中不斷處理避障的問 題。所以我們所提出的演算法第一時間會先移動至路的中間,與障礙物保持最大 的安全距離。. 65.

(76) (a) Dijkstra’s algorithm. (b) A* algorithm. (c) Proposed. 圖 5 - 8 範例三. 圖 5 - 9 範例四係以 A* algorithm 的觀點,比對表 5 - 3 中起點位置”3”,終點 位置”5”的數據結果,且挑出此演算法在表 5 - 3 中比平均執行時間較差的範例位 置為例,並使用三種不同演算法規劃路徑之結果。我們一樣可以看出三種演算法 之搜尋特性,Dijkstra’s algorithm 由起點向外擴張搜尋,A* algorithm 由起點向外 擴張搜尋之外又增加了方向性,Proposed 的演算法則是搭配骨架化後的地圖來做 搜尋。以圖 5 - 8 與圖 5 - 9 來看 A* algorithm,可以發現當起點和終點的直線距離 間,隨著障礙物的增加,所搜尋的空間也跟著增加,故執行時間也隨之增多。. (a) Dijkstra’s algorithm. (b) A* algorithm 圖 5 - 9 範例四. 66. (c) Proposed.

(77) 綜合以上圖與表的說明可以發現,我們所提出的混合型路徑規劃演算法皆能 與障礙物和牆壁保持著固定的安全距離,並且所執行的時間與搜尋的格點也小於 Dijkstra’s algorithm 和 A* algorithm。最後應用在實際的機器人導航上,以整體而 言可以省去許多處理避障的部分,大幅地提高機器人移動時的效率。. 5.3 實驗結果 最後,我們將呈現演算法實際應用在 LEGO 與 Android 智慧型裝置之結果。 圖 5 - 10 為 Android 智慧型裝置端執行之步驟圖,圖 5 - 10 (a)、(b)為 Android 端 與 NXT 端配對時的畫面,圖 5 - 10 (c)為執行演算法之主畫面。當按下「Set Goal」 的按鈕時,Android 端的畫面則是跳到圖 5 - 10(d),此時,使用者可以觸控或者螢 幕鍵盤的方式設定機器人的目的地。當設定好目的地時,畫面會跳至原先的主畫 面,以呈現混合型路徑規劃演算法之結果。確定好路線後,按下「GO」的按鈕 時,如圖 5 - 10(e)所示。這時候 Android 端就會將路徑訊號傳至 NXT 機器人端, 如圖 5 - 10(f)所示,NXT 機器人就會執行所規劃的路徑,如圖 5 - 11 所示。. 67.

(78) (a). (b). (c). (d). 68.

(79) (e). (f) 圖 5 - 10 操作畫面步驟. (a) 實驗影片截圖一. 69.

(80) (b) 實驗影片截圖二. (c) 實驗影片截圖三 圖 5 - 11 混合型路徑規劃演算法實現結果. 70.

(81) 第六章. 結論. 一般的路徑規劃大多都是探討著最短路徑或者是執行效率,但是應用在行動 機器人上時,往往會遇到規劃後的路徑會過於靠近障礙物,造成行動機器人在移 動上的不安全問題。就在此時,很多人就直接加入避障的演算法,或者是重新修 復路徑。但是機器人在移動時還要付出其他的運算在處理避障以及重新修復路徑, 對於行動機器人來說都是額外的負擔。. 本論文提出了一個混合型機器人路徑規劃演算法。利用影像形態學的知識, 在已知環境地圖中建立中軸地圖,並結合路徑規劃的應用。使得機器人直接將路 徑規劃在地圖的中軸上。此作法能夠使機器人能夠移動在安全的路徑上,不但省 去了處理避障或是重新規劃的時間,以整體來說也大大地減少執行路徑規劃時的 計算成本與效率。. 本論文所提出的演算法與系統架構不侷限於特定廠牌的手機或平板,也不會 限制特定機器人。Android 智慧型裝置作業系統只需滿足在 Android 2.3 以上的版 本即可。機器人方面,需具有藍芽的功能,同時再撰寫該機器人的感測器讀取以 及馬達控制的功能即可完成。使得所提出的混合型演算法更具開放性,不再限制 於特定廠牌與型號的智慧型裝置和機器人。. 未來行動機器人路徑規劃可以考慮加入多目標路徑規劃,使機器人可以同時 考慮多個目標點位置並規劃其最短路徑,或者是加入三維環境的概念實作路徑規 劃,機器人可以考慮機器人本身的大小移動至桌下,甚至以室內建築物中,機器 人可以移動至其它樓層。 71.

(82) 參. 考. 文. 獻. [1] http://store.irobot.com/shop/index.jsp?categoryId=2804605 [2] http://www.ettoday.net/news/20130506/202648.htm [3] http://www.pmc.org.tw/tg_view.aspx?type=Product&TGD_NO=103 [4] http://news.gamme.com.tw/423428 [5] http://lookstory.blogspot.tw/2011/05/blog-post_02.html [6] M. Nakamiya, T. Terada, and S. Nishio, “A route planning method for multiple mobile sensor nodes,” 5th International Conference on Networked Sensing Systems, Osaka, Japan, 17-19 June 2008, pp.103-106. [7] J. Guo, L. Liu, Q. Liu and Y. Qu, “An Improvement of D* Algorithm for Mobile Robot Path Planning in Partial Unknown Environment,” Second International Conference on Intelligent Computation Technology and Automation, Wuhan, China, 10-11 Oct. 2009,Vol.3, pp.394-397. [8] Michael. A.. Goodrich,. Potential. Fields. Tutorial,. http://borg.cc.gatech.edu/ipr/files/goodrich_potential_fields.pdf [9] H.C. Huang and C.C. Tsai,”Global path planning for autonomous robot navigation using hybrid metaheuristic GA-PSO algorithm,” SICE Annual Conference (SICE), Taichung, Taiwan, 13-18 Sept. 2011, pp.1338-1343. [10] R. Wen, H.Y. Wang and J. Xie, “Path Planning of Mobile Robot Based on Voronoi Diagram by Approximation Structuring and Zonal Ant Colony Algorithm,” International. Conference. on. Computational. Intelligence. Engineering, Wuhan, China, 11-13 Dec. 2009, pp.1-4.. 72. and. Software.

參考文獻

Outline

相關文件

Global Logistics and Supply Chain Management, 3rd Edition, John Wiley &amp; Sons. Global Macrotrends and their Impact on Supply

Jiayi Zhou, Kun-Ming Yu, Chun Yuan Lin, Kuei-Chung Shih1 and Chuan Yi Tang, “Balanced Multi-process Parallel Algorithm for Chemical Compound Inference with Given Path Frequencies,”

Mason,”Global Business Drivers:Alinging Information Technology to Global Business Strategy”, P.146 IBM Systems Journal 32(1993). Langenwalter; Enterprise Resource Planning and

Kyunghwi Kim and Wonjun Lee, “MBAL: A Mobile Beacon-Assisted Localization Scheme for Wireless Sensor Networks,” The 16th IEEE International Conference on Computer Communications

Chang, Shih -Chia, Yang, Chen-Lung , and Sheu, Chwen, “Manufacturing Flexibility and Business Strategy: An Empirical Study of Small and Medium Sizes Firms,” International

Cheng-Chang Lien, Cheng-Lun Shih, and Chih-Hsun Chou, “Fast Forgery Detection with the Intrinsic Resampling Properties,” the Sixth International Conference on Intelligent

Dragan , “Provably good global buffering using an available buffer block plan”, IEEE International Conference on Computer-Aided Design, pp.. Cong, “Interconnect performance

Kyunghwi Kim and Wonjun Lee, “MBAL: A Mobile Beacon-Assisted Localization Scheme for Wireless Sensor Networks”, the 16th IEEE International Conference on Computer Communications