從零開始一起學習SLAM | SLAM有什麼用?

來自專欄計算機視覺life11 人贊了文章

SLAM是 Simultaneous Localization And Mapping的 英文首字母組合,一般翻譯為:同時定位與建圖、同時定位與地圖構建。

「同時定位與地圖構建」這幾個詞,乍一聽起來非常拗口,為了不在一開始就嚇跑讀者,我們先不對其進行專業的解釋,用一個日常生活中形象的例子來進行說明。

初步認識SLAM

我們知道現在有不少家用的掃地機器人,可以代替人對室內進行自動清掃。早期的掃地機器人並不智能,它只是具有簡單的避障功能,在室內隨機遊走,遇到障礙物就轉彎,這樣會導致有很多地方會漏掉,掃地效率非常低。

而現在隨著SLAM技術在掃地機器人中的應用,現在的掃地機器人已經變的非常智能,可以通過自身的感測器對室內進行掃描建圖,根據當前的定位進行Z字形規劃清掃,還能實現自動回充、斷點續掃等高級功能。

根據前面介紹,我們總結一下,要想真正實現智能的清掃,掃地機器人至少需要知道以下幾件事情:

1、我在哪裡?也就是掃地機器人在工作過程中要知道自己在房間的具體位置。對應的術語叫:定位(Localization)

2、我周圍的環境是什麼樣子?也就是掃地機器人需要知道整個房間的地面結構信息。對應的術語叫:建圖(Mapping)

3、我怎樣到達指定地點(充電器)?當掃地機器人電量不足時,如何以最短的路徑到達充電器所在位置進行自動充電。對應的術語叫:路徑規劃(Route Planning)。

有了以上的幾個能力,掃地機器人就變的非常智能了,不再像無頭蒼蠅一樣在室內亂跑,而是可以從任意位置出發,按照建立好的地圖進行規劃清掃。當然房間裏的物品擺放也會發生變化,所以掃地機器人每次清掃也會根據當前的定位及掃描情況,在建好的地圖基礎上對進行更新。隨著使用時間的增長,掃地機器人建立的地圖會越來越準確,規劃的清掃路線越來越高效,變的越來越智能。

看明白了上面的例子,我們給出SLAM的定義。SLAM是指當某種移動設備(如機器人、無人機、手機等)從一個未知環境裏的未知地點出發,在運動過程中通過感測器(如激光雷達、攝像頭等)觀測定位自身位置、姿態、運動軌跡,再根據自身位置進行增量式的地圖構建,從而達到同時定位和地圖構建的目的。定位和建圖是兩個相輔相成的過程,地圖可以提供更好的定位,而定位也可以進一步擴建地圖。需要說明的是,上述掃地機器人例子中,定位和建圖是SLAM的基本要求,而路徑規劃是在此基礎上的高級功能,不屬於SLAM的討論範疇。

SLAM的應用

SLAM所使用的感測器主要分為激光雷達和視覺兩大類。在SLAM研究史上,早期SLAM研究幾乎全使用激光雷達作為感測器,其優點是精度高,解決方案相對成熟。但是缺點也非常明顯,比如價格貴、體積大,信息少不夠直觀等。

視覺SLAM就是用攝像頭作為主感測器,用拍攝的視頻流作為輸入來實現同時定位與建圖。視覺SLAM廣泛應用於AR、自動駕駛、智能機器人、無人機等前沿領域。我們知道SLAM的兩大核心:定位和建圖。下面分別進行說明。

1、定位相關應用

SLAM在自動駕駛中最主要的功能就是更加精確的確定汽車自身的位置(當然建圖也很重要)。說到這裡,很多人會有疑問:現在手機上的百度/高德/騰訊等地圖類App就可以定位,為什麼還需要SLAM來定位呢?

原因是這樣的:目前地圖類App在室外定位、導航方面確實做的很不錯,而且衍生出很多基於地理位置的遊戲、社交、生活類應用。不過現在的定位系統仍然存在以下兩個主要問題。

1、地圖類App背後使用的是GPS技術,但民用GPS最多也就達到幾米的定位精度,駕車的讀者應該深有體會:這些地圖類App導航時並不知道當前車輛在哪個車道上。

2、GPS只能在室外使用。而在建築物內、洞穴、海底等很多地方,GPS會失效。而往往這些地方對於定位的需求很強烈,要想解決GPS失效區域的定位,目前最有效的就是SLAM技術。

如下圖所示是著名開源演算法ORB-SLAM2使用架設在汽車上的攝像頭進行定位的結果。從圖中不難看出,演算法非常清晰的展現了汽車當前所在的車道。

同樣的,對於室內使用的自主移動機器人來說,定位也完全依賴SLAM技術。如下圖是單目SLAM的過程。此外像京東,阿里這種大型的電商已經在自己的倉庫配備了倉儲機器人,也稱AGV(Automated Guided Vehicle),可以根據建立的地圖確定自身的位置,然後根據任務需求進行路徑規劃來搬運貨物。

2、建圖相關應用

比如使用手機上的單目攝像頭可以對物體進行掃描,生成對應的三維模型。這稱為小尺度下的三維建模。當然,也可以對較大尺度的場景進行三維重建,比如下圖下就是Google project tango利用魚眼攝像頭對室外的大場景進行的三維重建。

最近幾年,隨著消費級RGB-D相機的普及,室內場景的三維重建也是一個非常熱門的方向。利用重建的結果可以實現很多 功能,比如室內移動機器人可以根據重建結果判斷障礙物距離、識別理解環境,進行導航;比如可以根據重建結果在家裡玩增強現實遊戲;還可以將二維圖片和重建結果進行融合實現三維漫遊等。

討論

SFM(structure from motion)是一種和SLAM非常類似的演算法,關於SFM和SLAM的異同,下面說法錯誤的是?

A. SFM和SLAM基本討論的是同一問題,不過SFM最早來自計算機視覺領域,而SLAM則是來自於機器人領域。SFM的structure對應SLAM的mapping,SFM的camera pose對應SLAM的location。

B. SFM一般是離線處理,而SLAM更強調實時性,一般在線處理。

C. SFM處理的圖片一般沒有要求,可以是不同時間不同相機拍攝的同一個場景,而SLAM一般要求是同一相機拍攝的序列圖像或連續視頻。

D. 目前SFM主要是要完成3D reconstuction,而SLAM主要是要完成localization。

E. SFM通常使用攝像機作為感測器,而SLAM在感測器選擇方面,除了攝像機,通常還包括慣導、激光雷達等感測器。

F. 如果想要快速對自由女神像進行3D重建,在沒有特殊硬體的情況下,最好的方式是選擇SLAM。

歡迎留言討論,或者進入知識星球「從零開始學習SLAM」(菜單欄回復 「星球」 瞭解詳情)一起學習交流~

相關閱讀

從零開始一起學習SLAM | 為什麼要學SLAM??

mp.weixin.qq.com

從零開始一起學習SLAM | 學習SLAM到底需要學什麼??

mp.weixin.qq.com

零基礎小白,如何入門計算機視覺??

mp.weixin.qq.com


推薦閱讀:
查看原文 >>
相關文章