探究機器人是如何實現自主移動的——淺談機器人的定位導航技術(一)
在智能服務機器人逐漸成為行業風口浪尖的今天,移動機器人的身影越來越多地出現在人們身邊。目前移動機器人技術已經獲得了可喜的進展,研究成果令人鼓舞,但對於完全解決實際應用中需求還有待長時間的發展,相信隨著感測技術、智能技術和計算技術等的不斷提高,智能移動機器人一定能夠在生產和生活中融入人類生活中。其中,在自主定位導航技術中扮演著關鍵角色的SLAM 技術也成為關注的焦點。那麼,究竟是什麼是SLAM 技術?SLAM技術究竟是如何實現的?它的核心步驟和難點是什麼?今天,小編就來和大家聊聊在機器人自主移動過程中有著重要作用的SLAM技術。
什麼是SLAM技術?
SLAM 是同步定位與地圖構建 (Simultaneous Localization And Mapping) 的縮寫,最早是由 Hugh Durrant-Whyte 和 John J.Leonard 在1988年提出的。SLAM與其說是一個演算法不如說它是一個概念更為貼切,它被定義為解決「機器人從未知環境的未知地點出發,在運動過程中通過重複觀測到的地圖特徵(比如,牆角,柱子等)定位自身位置和姿態,再根據自身位置增量式的構建地圖,從而達到同時定位和地圖構建的目」的問題方法的統稱。
SLAM技術的核心步驟
大體上而言,SLAM包含了:感知、定位、建圖這三個過程。
感知——機器人能夠通過感測器獲取周圍的環境信息。
定位——通過感測器獲取的當前和歷史信息,推測出自身的位置和姿態。
建圖——根據自身的位姿以及感測器獲取的信息,描繪出自身所處環境的樣貌。
舉個例子,有天張三和朋友們一起喝酒,張三喝高了,李四送他回家,但是沒有張三的鑰匙啊,怎麼辦,只好送回自己的家裡面。那麼問題來了,第二天早上張三醒來後,如何知道自己是在誰家裡呢?
這個問題很簡單,看看房子周圍的環境就知道了。沒錯,張三觀察房屋信息的過程就是感知的過程,這時候張三需要提取房子裡面對自己有效的信息,例如:房子的面積、牆壁的顏色、傢具的特徵等等,運氣好的話,看到了李四本人,基本上就知道自己是在誰家裡了。這個確定是在誰家裡的過程,就是定位。那麼建圖呢,張三在意識到自己在李四家之後,自然地就把「李四家」和李四家觀察到的特徵關聯起來了,這個就是建圖。酒醒後,張三從李四家出來,在回家的路上,張三一路觀察周圍的環境,估算自己走了多少個街區(定位),一路在腦海里生成這一路走來周圍的環境(建圖)。
以上就是SLAM的核心步驟。從上面的例子可以發現,感知是SLAM的必要條件,只有感知到周圍環境的信息才能夠可靠地進行定位以及構建環境的地圖。而定位和建圖則是一個相互依賴的過程:定位依賴於已知的地圖信息,張三隻有知道李四家的位置,才知道自己離開李四家的距離;建圖依賴於可靠地定位,知道自己離開多遠後,才知道左邊的建設銀行離李四家的距離。當然定位和建圖的數據必然包含了張三一路上觀察感知到的自己的相對位移以及對位移的修正。
說了這麼多廢話,感覺SLAM其實也不是很複雜嘛,是的,這是因為人的大腦很聰明,在潛意識中解決了SLAM中的核心問題——特徵提取和追蹤、以及最優後驗估計。
SLAM的核心問題
大體而言,SLAM問題基本上可以分為前端和後端兩個部分。前端主要處理感測器獲取的數據,並將其轉化為相對位姿或其他機器人可以理解的形式;後端則主要處理最優後驗估計的問題,即位姿、地圖等的最優估計。
機器人所擁有地感測器主要有:深度感測器(超聲波、激光雷達、立體視覺等),視覺感測器(攝像頭、信標),慣性感測器(陀螺儀、編碼器、電子羅盤)以及絕對坐標(WUB,GPS)等。不像人對環境的感知,機器人從這些感測器中獲取的信息非常有限,不能充分地表徵機器人周圍地環境。例如常用的2D激光雷達僅能獲取一個平面的深度信息;攝像頭獲得的圖像數據機器人不能像人腦那樣充分地分辨出每個物體的屬性、特徵甚至其他聯想。
正如上圖所示,在人的視野里看到的情況如圖(1)所示,但對於只裝配了2D激光雷達的機器人而言,它看到的世界卻是圖(2)中的樣子。因此,前端如何充分可靠地的獲取更多的有效信息一直是眾多SLAM研究者所研究的一個話題。
同時,感測器均會存在雜訊,無論是感測器本身固有的雜訊還是獲取的錯誤數據,均會對SLAM造成影響。故SLAM的另一個核心問題是:如何從這些帶有雜訊的信息中,最優地估計出機器人的位姿以及地圖信息。目前SLAM處理後端的方法可大致分為兩類:基於概率模型的方法和基於優化的方法。基於概率模型的SLAM是2D-SLAM中比較主流的方法,比較具有代表性的有EKF、UKF以及PF等,這方面的研究已經相對比較成熟,也逐漸地被應用在了商業場景中;基於優化是近些年SLAM研究地主流方向,大多應用在VSLAM領域,比較具有代表性的有TORO、G2O等。
SLAM技術的實現方法
正如上文所述,SLAM後端優化的主流方法目前主要分為基於概率模型的方法和基於優化方法兩種。作為SLAM「古典時期「的經典方法,基於概率模型的SLAM有著一套十分完備的理論體系,並以其優良的性能,至今仍活躍在SLAM應用領域中。作為SLAM入門必學經典,小編下面就跟大致大家介紹下基於概率模型的SLAM方法。
基於概率模型的SLAM基本上都可以源自貝葉斯估計,通俗的說,貝葉斯估計就是通過基於假設的先驗概率、給定假設下觀察到的不同數據的概率以及觀察到的數據本身求出後驗概率的方法。其公式如下:
看到這裡可能會有點懵,讓我們再次請出張三同學為大家現場示範。張三從李四家走出來沒多久,由於酒還沒怎麼醒,有點不記得自己到底走了幾個街區了。這時候張三發現自己右邊有個建設銀行,這樣走過多少個街區就可以推測出個八九不離十了。接下來,張三祭出了傳說中的「貝葉斯估計「大法,來算算自己看到右手邊有個建設銀行後,自己處在第各個街區的概率,標記為p(A|B)。
張三用於估計自身位置的有效信息是右手邊有個建設銀行這個事件,假設張三看到右手邊有個建設銀行的概率記為p(B),那麼條件概率p(B|Ai)的含義就是假設張三處在第i街區,看到自己右手邊是建設銀行的概率。p(Ai)的含義是張三處在第i街區的概率。從張三到李四家共十個街區,在第三街區的概率p(A3)=10%。但是觀察到右手邊有個建設銀行了就不一樣了:一路上總共有兩個建設銀行,那麼這一路看到建行的概率p(B)=2/10=20%,但假設自己在第三街區,那麼看到建行的概率就是p(B|A3)=100%了。那麼在觀察到建行的情況下,張三處在第三街區的概率就提升到了100%×10%/20%=50%了。如果張三比較確信沒觀察到建行之前自己處在第三街區的概率為50%,其餘街區的概率均勻分布,那麼一路看到建行的概率p(B)=100%×50%+100%×5.55%+0%×5.55%×8=55.55%,則在觀察到建行的結果下,張三處於第四街區的概率上升為:100%×50%/55.55%=90%了。由此可見,貝葉斯估計提供了一種通過先驗估計結合觀測信息來獲得後驗估計的方法。
說了這麼多,貝葉斯估計究竟是如何應用在SLAM方法中的呢?對於一個經典的SLAM問題,假設xt是t時刻的狀態量,z1:t為時刻的觀測量,u1:t是1:t時刻的控制量,m是地圖,則SLAM需要求解的是在已知控制量、觀測量概率分布的情況下,機器人的位姿狀態以及地圖最優估計的問題。即:
由於p(zt|z1:t-1,u1:t)不依賴於x,對任何後驗概率p(zt|z1:t-1,u1:t)都是相同的,可以看作一個常量。在這裡假設系統模型的狀態轉移服從一階馬爾科夫模型,即當前狀態xt僅與上一狀態xt-1有關,故有:
根據式(2)和式(3)可知,在一階馬爾科夫模型的假設下,通過貝葉斯估計可以將當前狀態和地圖的最優後驗估計轉化為觀測數據的假設條件概率和狀態轉移方程以及上一狀態後驗估計的函數。因此對狀態和地圖的最優後驗估計可以通過迭代求解。
以上為一個經典SLAM問題的例子,對於這類問題的解答,有很多方法,比如經典的卡爾曼濾波(KF)、擴展卡爾曼濾波(EKF),無跡卡爾曼濾波(UKF),R-B粒子濾波器(FastSLAM)以及信息濾波(SEIF)等等。他們均是基於概率模型的SLAM問題的求解方法,本質是求出最優後驗估計。
以上就是本期關於SLAM演算法的初步內容,實際上,要通過 SLAM演算法實現到機器人在實際中的運動功能,還是有非常多的工作要做的。下面幾期小編會給大家介紹「基於概率模型的SLAM方法」中幾個比較具有代表性的方法。
推薦閱讀:
※FoolNLTK中文詞法分析工具
※這麼牛掰的智能電話機器人你不用就out了
※有關AI的利弊,李開復真的說對了嗎?(芥子說物聯 第十二期)
※栗子的Vlog丨三亞試駕全新奧迪A8L
※我喜歡思考