乾貨 | 機器人自主定位導航技術(一)

智能服務機器人正成為行業的風口浪尖,從清掃機器人開始,家庭陪伴機器人、送餐機器人等陸續進入公眾視線。

  在討論這類機器人是否能解決實際問題時,自主定位導航技術作為機器人智能化的第一步正不斷引起行業內的重視。同時,作為自主定位導航技術的重要突破口,SLAM技術也成為關注焦點。

  正如圖中所示,機器人自主定位導航技術中包括定位、地圖創建與路徑規劃(運動控制),而SLAM本身只是完成機器人的定位和地圖構建兩件事情,兩者並不是完全等價的。

  那麼,SLAM技術究竟是如何實現的?它有哪些難點?機器人如何實現路徑規劃和自動導航?到底什麼樣的掃地機器人才算智能?

  這些問題,我們將為你一一解答,帶領大家了解機器人自主移動的秘密。

  今天,我們先從SLAM說起。SLAM是同步定位與地圖構建(Simultaneous Localization And Mapping)的縮寫,最早由Hugh Durrant-Whyte 和 John J.Leonard提出。

  其實,SLAM更像是一個概念而不是一個演算法,它本身包含許多步驟,其中的每一個步驟均可以使用不同的演算法實現。SLAM主要用於解決移動機器人在未知環境中運行時即時定位與地圖構建的問題。

  當你身處異地,怎麼準確找到想去的地方?在戶外迷路時,怎麼找到回家的路?沒錯,我們有導航軟體和戶外地圖。

  和人類繪製地圖一樣,機器人描述環境、認識環境的過程主要就是依靠地圖。它利用環境地圖來描述其當前環境信息,並隨著使用的演算法與感測器差異採用不同的地圖描述形式。

  機器人學中地圖的表示方法有四種:柵格地圖、特徵點地圖、直接表徵法以及拓撲地圖。

  1. 柵格地圖

  機器人對環境地圖的描述的方式最常見的為柵格地圖(Grid map)或者稱為Occupancy Map。柵格地圖就是把環境劃分成一系列柵格,其中每一柵格給定一個可能值,表示該柵格被佔據的概率。

  這種地圖看起來和人們所認知的地圖沒什麼區別,它最早由NASA的Alberto Elfes在1989年提出,在火星探測車上就用到過,其本質是一張點陣圖圖片,但其中每個「像素」則表示了實際環境中存在障礙物的概率分布。

  一般來說,採用激光雷達、深度攝像頭、超聲波感測器等可以直接測量距離數據的感測器進行SLAM時,可以使用該地圖。這種地圖也可以通過距離測量感測器、超聲波(早期)、激光雷達(現在)繪製出來。

  2.特徵點地圖

  特徵點地圖,是用有關的幾何特徵(如點、直線、面)表示環境,常見於vSLAM(視覺SLAM)技術中。

  相比柵格地圖,這種地圖看起來就不那麼直觀了。它一般通過如GPS、UWB以及攝像頭配合稀疏方式的vSLAM演算法產生,優點是相對數據存儲量和運算量比較小,多見於最早的SLAM演算法中。

  3.直接表徵法

  直接表徵法中,省去了特徵或柵格表示這一中間環節,直接用感測器讀取的數據來構造機器人的位姿空間。

  上圖就是直接記錄了屋子內天花板畫面的圖像地圖。這種方法就像衛星地圖一樣,直接將感測器原始數據通過簡單處理拼接形成地圖,相對來說更加直觀。

  4.拓撲地圖

  拓撲地圖,是一種相對更加抽象的地圖形式,它把室內環境表示為帶結點和相關連接線的拓撲結構圖,其中結點表示環境中的重要位置點(拐角、門、電梯、樓梯等),邊表示結點間的連接關係,如走廊等。這種方法只記錄所在環境拓撲鏈接關係,這類地圖一般是由前幾類地圖通過相關演算法提取得到。

  比如掃地機器人要進行房間清掃的時候,就會建立這樣的拓撲地圖:

  5. 總結

  在機器人技術中,SLAM的地圖構建通常指的是建立與環境幾何一致的地圖。

  一般演算法中建立的拓撲地圖只反映了環境中的各點連接關係,並不能構建幾何一致的地圖。因此,這些拓撲演算法不能被用於SLAM。

  直接表徵法類似衛星地圖,它是直接使用感測器(一般是圖像感測器)構建得到。這種方法的信息冗餘度最大,對於數據存儲是很大的挑戰,同時,機器人要從中提取出有用的數據也要耗費一番周折,因此在實際應用中很少使用直接表徵法。

  特徵點地圖又是另一個極端,雖然數據量少,但是它往往不能反應所在環境的一些必須的信息,比如環境中障礙物的位置。vSLAM技術中,多採用這種地圖來解決機器人定位問題。想讓機器人進行自主避障和路徑規劃,還需要額外配置距離感測器,如激光雷達、超聲波來完成。

  柵格地圖,或者Occupancy Map(佔據地圖)恰好介於其中,一方面它能表示空間環境中的很多特徵,機器人可以用它來進行路徑規劃,另一方面,它又不直接記錄感測器的原始數據,相對實現了空間和時間消耗的最優。因此,柵格地圖是目前機器人所廣泛應用的地圖存儲方式。

  思嵐科技的SLAMWARE系統內部也採用該地圖方式。

  當你打開手機中的導航軟體,在選擇前往目的地的最佳路線之前,首先要做的動作是什麼呢?沒錯,就是定位。我們要先知道自己在地圖中的位置,才可以進行後續的導航和路徑規劃。

  在機器人實時定位問題中,由於通過機器人運動估計得到的機器人位置信息通常具有較大的誤差,我們還需要使用測距單元得到的周圍環境信息更正機器人的位置。

  目前,常見的測距單元包括激光測距、超聲波測距以及圖像測距三種。其中,憑藉激光良好的指向性和高度聚焦性,激光雷達已經成為移動機器人的核心感測器,同時它也是目前最可靠、最穩定的定位技術。

  SLAM自1988年被提出以來,理論研究發展十分迅速。在實際應用時,除配備激光雷達外,還需要機器人具有IMU(慣性測量單元)、里程計來為激光雷達提供輔助數據,這一過程的運算消耗是巨大的,傳統上需要PC級別的處理器,這也成為限制SLAM廣泛應用的瓶頸之一。

  那麼,實現SLAM的過程中,都會遇到哪些坑呢?下期,我們再見。

推薦閱讀:

TAG:同時定位和地圖構建SLAM | 機器人 | 機器人控制 |