第2章无人艇局部危险避障算法研究
水面無人艇局部危險避障算法研究
Local Risk Obstacle Avoidance Algorithm of USV
博主 的碩士畢業論文
第2章 無人艇局部危險避障算法研究
2.1 無人艇局部危險避障概述
作為一種無人操作的海洋自主運載器,水面無人艇既然具備自主能力,就需要與外界環境進行交互,從而需要能夠進行全局路徑規劃,以及進行局部危險狀況下的避障。
水面無人艇的全局路徑規劃,為無人艇規劃出了一條在已知靜態海洋環境信息下的最優路徑。無人艇在航行過程中,處在不可預見和高度動態的海洋環境中,障礙物很可能出現在已經規劃好的全局路徑上。無人艇必須對這些不可預測的事件以某種方式做出反應,使之仍然能順利到達目標、完成任務,而可靠的避障算法正是提高無人艇智能化的主要障礙 [6] 。因此,在全局路徑規劃的基礎上,還需要進行實時的局部危險避障,才能滿足無人艇順利執行任務的需求。目前,無人艇動態目標及危險區域的相關避障方法的研究,正是水面無人艇研究的熱點和重要方向,也是一項實現無人艇智能化的關鍵技術 [2] 。
在無人艇航行過程中,無人艇必須對一些不可預知的事件(避障、風浪等)做出反應,根據傳感器探測的數據調整航向和航速,進行局部危險避障,使無人艇仍能順利到達目標。因此,局部危險避障必須速度快、實時和效率高 [18] ,但是如果缺乏全局路徑規劃的指導,局部危險避障將無法指導無人艇到達目的地,甚至很容易失去目標,掉入局部陷阱區域。然而如果沒有局部危險避障,無人艇無法躲避未知危險事件,無法順利到達目標點,全局路徑規劃的結果也將是徒勞的。因而對于無人艇的全局路徑規劃和局部危險避障來說,兩者有著非常強的互補性,只有兩者互相結合才能順利可靠的完成無人艇的任務需要。
所謂水面無人艇的局部危險避障,是指以全局路徑為指導,通過傳感器信息確定無人艇的實時位置,及得到局部范圍內障礙物的分布情況;尋找一種滿足一定評價標準的運動方案,調整航向和航速,高度智能化、自適應地避開海面上的靜動態障礙物。
處在海洋中進行自主航行的水面無人艇,在進行全局路徑規劃及局部危險避障時,需要滿足一定的約束條件才可以規劃出一條快速、穩定、可靠的無人艇避障路徑。這些約束條件包括無人艇自身的航行機動約束、障礙物約束以及符合國際海上避碰規則公約的約束。
1) 航行機動約束
水面無人艇在海面高速航行時不僅需要考慮無人艇的最小回轉半徑,還要考慮其與障礙物直接的安全距離約束和航行時無人艇較大的慣性。
在復雜的海面環境中,無人艇處于無限流場中運動,因為自身的慣性較大,會導致無人艇在避障過程中出現較大的誤差,導致避障失敗。如果規劃出的避障策略忽略了其最小回旋半徑,則會導致輸出角速度過大,從而出現側滑甚至側翻的事故;如果沒有考慮與障礙物之間的安全距離約束,則無人艇微小的誤差以及各種不確定性因素的出現,都可能造成無法彌補的損失。
2) 障礙物約束
處在復雜海洋環境中做任務的水面無人艇,會遇到各種外在障礙物以及海風、海浪、海流的影響。而這些外在障礙物包括:海岸、湖岸、河岸,船只,淺水障礙(暗礁、沙洲、魚類等),水面障礙物(浮標、橋梁等)。
3) 國際海上避碰規則公約的約束
水面無人艇在海面航行過程中,為了避免對海上其它船只、人員的人身和財產安全及無人艇自身的安全造成威脅,在進行避障的過程中必須滿足一定的規則。國際海上避碰規則公約(International Regulations for Preventing Collisions At Sea,1972 / COLREGS)的13、14、15條,分別對無人艇在航行過程中可能出現的碰撞局面:追越、正面相遇和交叉相遇做出了規定,詳見第4.2節。
在滿足了各種約束的前提下可得到的避碰策略包括:
①不改變速度,但修改原路徑;
②減速,在原軌跡上航行;
③速度大小和方向同時改變。
2.2 自主移動機器人危險避障算法
國內對水面無人艇局部危險避障算法的研究雖然較少,但對自主移動機器人的研究較為廣泛,在避障方面的研究也有不少成果,很多危險避障方法都可以經過改動引入到水面無人艇局部危險避障中來。
在自主移動機器人領域里,局部危險避障充分體現了機器人的智能化。自主移動機器人的局部危險避障是指在機器人移動期間,接到傳感器接收到的外界環境信息時,為了避免和真實環境中的障礙物碰撞,而改變機器人已規劃的運行軌跡 [19] 。最終機器人的移動路徑,即與最終目標位置和距最終目標的相對位置有關,又與傳感器接到的當前或者最近信息有關。到目前為止,各國的研究者提出了許多避障算法,這些算法都不同程度的依賴于全局路徑規劃及地圖和對于全局地圖的精確定位,如Bug算法、向量場直方圖法、氣泡帶法、曲率速度法、動態窗口法、Schlegel避障法等。下面簡單的介紹幾種典型的機器人避障方法。
1) Bug算法
Bug算法 [20] 是避障算法中較為簡單的一種,其基本思想就是在機器人前進的路途中遇到障礙物時,沿著障礙物的輪廓并繞開障礙物行進。在Bug算法的基本思想上,存在Bug1算法、Bug2算法、正切Bug算法這三種擴展方法。
2) 向量場直方圖法
針對使用Bug算法進行避障時,機器人的行為在每時刻都只與最近的傳感器的讀數有關,1991年Borenstein, J和Koren, Y提出了向量場直方圖法 [21] (VFH,Vector Field Histogram)。該方法通過創建局部地圖來描述圍繞機器人的環境信息,以克服Bug算法的不足。VFH法雖然使得機器人可以在多障礙物中穿梭,但該方法并沒有將機器人的動力學和運動學考慮進去,最終導致機器人在現實中很難完成該算法計算出的路徑。后來在VFH算法的基礎上,Ulrich和Borenstein又提出了VFH+ [22] 和VFH* [23] 。
中國海洋大學的馬闖等 [24] 也提出了一種改進的 VFH,實現了USV在三維空間內的實時避障。
3) 曲率速度法
1996年Simmons提出了曲率速度法(CVM) [25] ,該方法可將機器人的運動學約束和某些動力學約束同時進行考慮。CVM法在剛開始就把機器人和環境中的物理約束考慮到速度空間中,而速度空間由轉動速度ω和平移速度ν組成,且假定機器人是沿著曲率為c=ω/ν的圓弧前進。但正是因為該方法將障礙物的形狀簡化為圓形,會導致發生局部極小的現象。
為了解決CVM法的不足,Ko和Simmons在1998年對CVM法進行了改進,提出了道路曲率法(LCM, Lane curvature method) [26] 。實驗證明該方法比CVM法有更好的性能,但對于目標函數參數的選擇要求較高。
4) 動態窗口法
Fox,Burgard和Thrun在1996年首先提出了動態窗口法 [27] ,該方法將運動學約束考慮到了機器人的危險避障中。由于該方法沒有全局的思考,又被稱之為局部動態窗口法。該方法結合機器人的當前速度,將機器人的加速能力及時間周期考慮進去,選擇能在下一周期內到達的速度空間(ν,ω)的動態窗口。然后將動態窗口收縮,保存那些確保機器人在碰到障礙之前能夠停住的速度空間(ν,ω)。最后,將目標函數施加到動態窗口中被留下來的容許的速度元素,就可以選擇新的運動方向,確定機器人下一步的速度和角速度,從而實現避障。
然而局部動態窗口法并沒有進行全局的考慮,所以Brock和Khatib于1999年提出了全局動態窗口法 [28] 。該方法可以無需完整的環境先驗知識,使得動態窗口法具有了全局規劃的優勢。
2008年,浙江大學電氣工程學院的李國陽 [29] 等在動態窗口方法的基礎上,提出了復雜環境下有導向動態窗口方法。并通過機器人進行實際的聲吶導航實驗,證明了該算法能夠使機器人適應于非結構化、密集、復雜環境下的局部導航控制。
哈爾濱工程大學的唐平鵬等 [30,31] 采用分層策略將動態窗口引用到了USV局部危險避障中,在艏向窗口和線速度窗口中分別利用切線法和弧線法求出避障角速度和線速度。并將角速度緩沖模型引入,以提升避障過程中艇體的穩定性。
5) 接近圖法
針對VFH在較為雜亂的空間中使得機器人不能較好避障的缺點,Minguez等提出了接近圖法(nearness diagram,ND)。之后,Minguez等在ND算法的基礎上加入了全局推理,得到了全局接近圖法(global nearness diagram,GND)。
哈爾濱工程大學的王敏捷等 [32,33] 便采用了近域圖(ND)法進行局部避障,并引入模糊理論平滑速度輸出,和將結合混沌思想的 Q 學習機制引入,來提高USV的自適應性。
6) ASL算法
ASL算法 [34] 最先是為大型展覽會機器人開發的避障算法,由瑞士聯邦理工大學提出,使得機器人可以在十分擁擠的展覽會中穿行。該算法將NF1、彈性帶和動態窗口三種方法合并起來,通過不斷的規劃,可以得到使機器人平滑移動的路徑。
上面描述的方法都是非常經典的局部危險避障方法。然而,在自主移動機器人領域里,還有很多非常好的避障方法,如梯度法、加上動態約束法等。當然,隨著智能算法的發展,如遺傳算法、模糊邏輯算法、神經網絡算法、蟻群算法、粒子群算法等,越來越多的學者也將一些智能算法引入機器人乃至USV的局部危險避障中來,也得到了不錯的避障效果。
如哈爾濱工程大學的祖偉 [35] ,就將粒子群優化算法(PSO)應用到了水下潛器在線實時路徑規劃,充分利用了該算法的全局尋優能力強和求解速度快的優點,很好的提高了路徑規劃的效率和性能。江蘇科技大學的莊肖波,齊亮 [36] 將蟻群算法(ACA)引入避碰規劃中,實現了USV對運動目標的避碰。
2.3 無人艇局部危險避障算法研究現狀
2.3.1 國外無人艇局部危險避障算法研究現狀
國外對水面無人艇的研究起步較早,在局部危險避障方面世界各地也都展開了相應的研究,研究成果也頗為豐富。
美國麻省理工學院海洋工程中心的Benjamin M R 等 [37] 提出了一種新的USV移動規劃方法;該方法是基于行為控制框架的間隔規劃多目標最優化算法,并依據國際海上避碰規則公約中的相關條例對避障動作進行選擇;該方法能夠很好的滿足USV航行約束條件,并且實現多任務的同步。馬里蘭大學帕克分校的Svec P 等 [38] 提出了一種基于軌跡規劃的可預見性算法,提到了三種基于路徑規劃的障礙物避障方法:方法一采用圍繞各個障礙物的邊緣前進,這種保守的方法來進行軌跡規劃;方法二通過一個可預見的規劃模塊進行計算,該規劃模塊可通過預測海浪對當前路徑的影響,來重新規劃最新的軌跡;方法三是將啟發式的A*算法與局部邊界最優結合進行避碰。維拉諾瓦大學的Soltan R A 等 [39] 提出了基于非線性滑模控制的方法,該方法將軌跡規劃、跟蹤和協調控制結合起來進行考慮;但其限制因素是,只有當USV的初始化條件在期望的軌跡上時才能保證位置跟蹤。美國海軍圣地亞哥空間和海戰系統中心Larson J等 [40] 采用Morphin算法 [41] 處理局部危險避障,將遠場協商避障模塊與近場反應式避障模塊相結合來實現避障;但未考慮無人艇的運動特性和當前運動狀態,使得其避障性能受到影響。
意大利熱那亞大學的Casalino G 等 [42] 將無人艇路徑規劃分為三層結構:第一層采用A*算法,根據當前環境下的靜態障礙物計算得到全局路徑;第二層通過對周圍的運動障礙物信息進行分析,采用基于行為的方法來實現反應式危險避障,并局部修改第一層所設計的路徑;第三層為當運動障礙物的信息不可用時,進行反應式危險避障。Caccia M等 [43] 提出了基于視線(1ine-of-sight,LOS)的規劃算法,并應用在了“Sesamo”號USV上。
英國普利茅斯大學的Naeem W等 [44] 提出了遺傳算法非線性預測控制思想,應用在了“Springer”號雙體USV上,進行實時避障。
法國的Petres C等 [45] 采用人工勢場法進行自動駕駛帆船的實時避障。
韓國國立昌原大學的Lee S等 [46] 利用了模糊邏輯結合虛擬力場的方法,并滿足國際海上避碰行為規則公約的相關約束實現了海上自動駕駛船舶的避碰。
2.3.2 國內無人艇局部危險避障算法研究現狀
國內在無人艇局部危險避障方面起步較晚,但目前也有所進展。
哈爾濱工程大學的莊佳園等 [47] 設計了一種基于航海雷達圖像處理的規劃方法,采用Dijkstra算法搜索局部最佳路徑。之后設計了一種符合國際海上避碰行為規則公約的相對坐標系動態避障方法,以處理USV的應激避障問題 [48] 。王敏捷等 [32,33] 便采用了近域圖(ND)法進行局部避障,并引入模糊理論平滑速度輸出,和將結合混沌思想的 Q 學習機制引入,來提高USV的自適應性。唐平鵬等 [30,31] 采用分層策略將動態窗口引用到了USV局部危險避障中,在艏向窗口和線速度窗口中分別利用切線法和弧線法求出避障角速度和線速度。并將角速度緩沖模型引入,以提升避障過程中艇體的穩定性。盧艷爽 [18] 采用了融合海事規則和障礙物信息不確定性建模的速度避障法,實現了USV的局部危險避障;其局限性在于USV航行路徑要保證與已經規劃好的路徑非常近或處在該路徑上,當已經規劃好的路徑穿過事先未知障礙物較多時,此方法會表現得很不理想。
大連海事大學的王哲 [49] 建立了評判碰撞危險度的模型,深入分析了航速及航向改變對DCPA與TCPA的影響,建立了USV避碰系統的知識庫。該方法適用于寬敞的海面,但不適用于狹水道及交通繁忙水域;且研究中只考慮了一個障礙物的情況,并未針對多個障礙物進行相關,具有一定的局限性。
中國海洋大學的馬闖等 [24] 在通過在USV上布置水上水下兩層聲納來獲取現實環境中障礙物的三維信息,提出了一種改進的 VFH算法,實現了USV在三維空間內的實時在線避障;但采用VFH法會出現局部最小的情況,并產生震蕩軌跡。
江蘇科技大學的莊肖波,齊亮 [36] 將蟻群算法(ACA)引入避碰規劃中,實現了USV對運動目標的避碰;但該方法容易出現停滯現象,收斂速度得不到保證。
總的來說,國外在無人艇局部危險避障方面研究比較深入,也提出了各種危險避障方法,有些技術已經較為成熟并得到了實際應用。而國內這方面的研究起步較晚,相關的實際應用產品也較少,很多技術僅處在理論研究階段 [33] 。
博主 的碩士畢業論文
===========文檔信息============
版權聲明:非商用自由轉載-保持署名-注明出處
署名(BY) :dkjkls(dkj卡洛斯)
文章出處:http://my.csdn.net/dkjkls
總結
以上是生活随笔為你收集整理的第2章无人艇局部危险避障算法研究的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序入门与实战之阅读列表与setD
- 下一篇: 【Nginx 快速入门】反向代理、负载均