機器人想要實現自主移動,始終離不開定位、建圖與導航問題,而SLAM與路徑規劃就是其中的關鍵。SLAM可讓機器人在未知環境中實時了解自身位置,同步繪制環境地圖,在機器人定位與路徑規劃中扮演了重要角色,可以說,SLAM是機器人實現路徑規劃的前提。
SLAM實現機器人的定位與地圖構建問題
SLAM一詞最早出現在機器人領域,意為同步定位與建圖,包含了定位與建圖兩大部分,其中又以定位更為核心,建圖實際上是在定位的基礎上進行的,將獲取的數據進行融合的過程。
通常SLAM包含了特征提取,數據關聯,狀態估計以及狀態更新等多個部分,不僅可以應用于2D運動領域,同時還可應用于3D運動領域。針對室內環境中運行的機器人來說,當機器人想到達某地時,首先需要利用傳感器(如激光雷達)來感知周圍環境,比如在機器人的前方出現一個障礙物,機器人想繞開這個障礙物,就得知道障礙物的大小及離自身的位置,該問題便可通過SLAM來解決。
路徑規劃可使機器人實現最優行走路徑
那機器人在解決障礙物感知問題后,又該如何實現自主行走呢?一般來說會出現以下兩種情況:一種是離障礙物很遠走過去,還有一種是離障礙物的安全距離繞過去,在這時就需要涉及到路徑規劃了,路徑規劃可以使機器人實現最優路徑行走,避免繞路問題。就像下圖中,a的路徑明顯優于b的行走路徑。
當然,根據對環境信息的掌握程度不同,路徑規劃又可分為全局路徑規劃及局部路徑規劃,其中又以局部路徑規劃更為關鍵。
全局路徑規劃是在已知的環境中,為機器人規劃一條路徑,路徑規劃的精度取決于環境獲取的準確度,全局路徑規劃可以找到最優解,但是需要預先知道環境的準確信息,當環境發生變化,如出現未知障礙物時,該方法就無能為力了。它是一種事前規劃,因此對機器人系統的實時計算能力要求不高,雖然規劃結果是全局的、較優的,但是對環境模型的錯誤及噪聲魯棒性差。
而局部路徑規劃則環境信息是完全未知或有部分已知的,側重于考慮機器人當前的局部環境信息,讓機器人具有良好的避障能力,通過傳感器對機器人的工作環境進行探測,以獲取障礙物的位置和幾何性質等信息,這種規劃需要搜集環境數據,并且對該環境模型的動態更新能夠隨時進行校正,局部規劃方法將對環境的建模與搜索融為一體,要求機器人系統具有高速的信息處理能力和計算能力,對環境誤差和噪聲有較高的魯棒性,能對規劃結果進行實時反饋和校正,但是由于缺乏全局環境信息,所以規劃結果有可能不是最優的,甚至可能找不到正確路徑或完整路徑。
全局路徑規劃與局部路徑規劃本質上并沒有太大區別,很多適用于全局路徑規劃的方法經過改進也可以用于局部路徑規劃,而適用于局部路徑規劃的方法同樣經過改進后也可適用于全局路徑規劃。兩者協同工作,機器人可更好的規劃從起始點到目標點的行走路徑。
SLAM推動了定位及路徑規劃等技術的發展
SLAM技術的出現推動了定位及路徑規劃等技術的發展,進而對機器人、無人駕駛等熱門領域的自主移動產生重大影響。
假設機器人沒有應用到SLAM技術,無法定位自身的位置信息,在實現自主移動中將會出現什么問題呢?結果可以想象。沒有SLAM的移動機器人,就好比智能手機離開了WIFI或移動網絡,SLAM對于機器人自主行走的重要性不言而喻。
隨著移動機器人的不斷發展,行業對SLAM技術出現了井噴式需求,另一方面,隨著傳感器技術的不斷發展,計算資源的豐富以及算法的進步,SLAM技術本身也進入了一個從算法到產品過渡的階段。
目前,行業中基于SLAM技術已相繼出現了一些產品,思嵐科技的SLAMWARE模塊化自主定位導航模塊就是其中之一,它集成了基于激光雷達的同步定位與建圖(SLAM)及配套的路徑規劃功能。
相較于開源ROS機器人操作系統,SLAMWARE內置的SLAM算法構建出的地圖更加精確,即使受到外界干擾也可以保持較高的定位精度。同時,SLAMWARE采用D*算法(即動態啟發式路徑搜索算法),機器人不預先錄入地圖,便可在陌生環境中行動自如,躲避動態障礙物。
受制于激光的特性,在遇到玻璃、純黑物體或其他平面物體時,激光雷達無法進行識別,為了讓機器人能夠“看見”這些原本看不見的東西,SLAMWARE還支持超聲波傳感器,防跌落傳感器、碰撞傳感器和深度攝像頭的數據,利用多種傳感器信息融合,實現更加智能、實用的自主運動。同時,SLAMWARE可以實現基于激光特征識別的回充對接技術,也就是說,機器人在移動后,可以認得自己的家,不會迷路。
為了幫助機器人適應多種應用環境,思嵐科技目前已對SLAM技術進行了全面升級,其全新的SLAM 3.0系統,可使機器人在復雜的大場景下也能輕松完成定位導航任務,相比傳統SLAM,思嵐科技升級版的SLAM 3.0采用了圖優化的方式進行構圖,能實現百萬平米級別的構圖能力,同時還擁有了主動式回環閉合糾正能力,能很好的消除因長時間運行導致的里程累積誤差,成為目前業內最受歡迎的定位導航方式。
關鍵字:SLAM,路径规划,SLAM与路径规划