1. 前言
讀者朋友們大家好!(很久很久)之前,我們為大家介紹了SLAM的基本概念和方法。相信大家對SLAM,應該有了基本的認識。在忙完一堆寫論文、博士開題的事情之後,我準備回來繼續填坑:為大家介紹SLAM研究的方方面面。如果前兩篇文章算是"初識",接下來幾篇就是"漸入佳境"了。在第三篇中,我們要談談SLAM中的各個研究點,為研究生們(應該是部落格的多數讀者吧)作一個提綱挈領的摘要。然後,我們再就各個小問題,講講經典的演算法與分類。我有耐心講,你是否有耐心聽呢?
在《SLAM for Dummy》中,有一句話說的好:"SLAM並不是一種演算法,而是一個概念。(SLAM is more like a concept than a single algorithm.)"所以,你可以和導師、師兄弟(以及師妹,如果有的話)說你在研究SLAM,但是,作為同行,我可能更關心:你在研究SLAM中的哪一個問題。有些研究者專注於實現一個具體的SLAM系統,而更多的人則是在研究SLAM裡某些方法的改進。做應用和做理論的人往往彼此看不起,不過二者對科研都是有貢獻的。作為研究生,我還是建議各位抓住SLAM中一個小問題,看看能否對現有的演算法進行改進或者比較。不要覺得這種事情膚淺,它是對研究有實際幫助和意義的。同時,我也有一些朋友,做了一個基於濾波器/圖優化的SLAM實現。程式是跑起來了,但他/她不知道自己有哪些貢獻,鑽研了哪個問題,寫論文的時候就很頭疼。所以,作為研究生,我建議你選擇SLAM中的一個問題,改進其中的演算法,而不是先找一堆程式跑起來再說。
那麼問題來了:SLAM方面究竟有哪些可以研究的地方呢?我為大家上一個腦圖。
這個圖是從我筆記本上拍下來的(請勿吐槽字和對焦)。可以看到,以SLAM為中心,有五個圈連線到它。我稱它為Basic Theory(基礎理論)、Sensor(感測器)、Mapping(建圖)、Loop Detection(迴環檢測)、Advanced Topic(高階問題)。這可以說是SLAM的研究方向。下面我們"花開五朵,各表一枝"。
2. 基本理論
SLAM的基本理論,是指它的數學建模。也就是你如何用數學模型來表達這個問題。為什麼說它"基本"呢?因為數學模型影響著整個系統的效能,決定了其他問題的處理方法。在早先的研究中(86年提出[1]至21世紀前期[2]),是使用卡爾曼濾波器的數學模型的。那裡的機器人,就是一個位姿的時間序列;而地圖,就是一堆路標點的集合。什麼是路標點的集合?就是用$(x,y,z)$表示每一個路標,然後在濾波器更新的過程中,讓這三個數慢慢收斂。
那麼,請問這樣的模型好不好?
好處是可以直接套用濾波器的求解方法。卡爾曼濾波器是很成熟的理論,比較靠譜。
缺點呢?首先,濾波器有什麼缺點,基於它的SLAM就有什麼缺點。所以EKF的線性化假設啊,必須儲存協方差矩陣帶來的資源消耗啊,都成了缺點(之後的文章裡會介紹)。然後呢,最直觀的就是,用$(x,y,z)$表示路標?萬一路標變了怎麼辦?平時我們不就把屋裡的桌子椅子挪來挪去的嗎?那時候濾波器就掛了。所以啊,它也不適用於動態的場合。
這種侷限性就是數學模型本身帶來的,和其他的演算法無關。如果你希望在動態環境中跑SLAM,就要使用其他模型或改進現有的模型了。
SLAM的基本理論,向來分為濾波器和優化方法兩類。濾波器有擴充套件卡爾曼濾波(EKF)、粒子濾波(PF),FastSLAM等,較早出現。而優化方向用姿態圖(Pose Graph),其思想在先前的文章中介紹過。近年來用優化的逐漸增多,而濾波器方面則在13年出現了基於Random Finite Set的方法[3],也是一個新興的浪潮[4]。關於這些方法的詳細內容,我們在今後的文章中再進行討論。
作為SLAM的研究人員,應該對各種基本理論以及優缺點有一個大致的瞭解,儘管它們的實現可能非常複雜。
3. 感測器
感測器是機器人感知世界的方式。感測器的選擇和安裝方式,決定了觀測方程的具體形式,也在很大程度上影響著SLAM問題的難度。早期的SLAM多使用鐳射感測器(Laser Range Finder),而現在則多使用視覺相機、深度相機、聲吶(水下)以及感測器融合。我覺得該方向可供研究點有如下幾個:
- 如何使用新興感測器進行SLAM。 要知道感測器在不斷髮展,總有新式的東西會出來,所以這方面研究肯定不會斷。
- 不同的安裝方式對SLAM的影響。 舉例來說,比如相機,頂視(看天花板)和下視(看地板)的SLAM問題要比平視容易很多。為什麼容易呢?因為頂/下視的資料非常穩定,不像平視,要受各種東西的干擾。當然,你也可以研究其他的安裝方式。
- 改進傳統感測器的資料處理。 這部分就有些困難了,因為經常感測器已經有很多人在使用,你做的改進,未必比現有的成熟方法更好。
4. 建圖
建圖,顧名思議,就是如何畫地圖唄。其實,如果知道了機器人的真實軌跡,畫地圖是很簡單的一件事。不過,地圖的具體形式也是研究點之一。比如說常見的有以下幾種:
- 路標地圖。
地圖由一堆路標點組成。EKF中的地圖就是這樣的。但是,也有人說,這真的是地圖嗎(這些零零碎碎的點都是什麼啊喂)?所以路標圖儘管很方便,但多數人對這種地圖是不滿意的,至少看上去不像個地圖啊。於是就有了密集型地圖(Dense map)。
- 度量地圖(Metric map)
通常指2D/3D的網格地圖,也就是大家經常見的那種黑白的/點雲式地圖。點雲地圖比較酷炫,很有種高科技的感覺。它的優點是精度比較高,比如2D地圖可以用0-1表示某個點是否可通過,對導航很有用。缺點是相當吃儲存空間,特別是3D,把所有空間點都存起來了,然而大多數角角落落裡的點除了好看之外都沒什麼意義……
- 拓撲地圖(Topological map)
拓撲地圖是比度量地圖更緊湊的一種地圖。它將地圖抽象為圖論中的"點"和"邊",使之更符合人類的思維。比如說我要去五道口,不知道路,去問別人。那人肯定不會說,你先往前走621米,向左拐94.2度,再走1035米……(這是瘋子吧)。正常人肯定會說,往前走到第二個十字路口,左拐,走到下一個紅綠燈,等等。這就是拓撲地圖。
- 混合地圖。
既然有人要分類,就肯定有人想把各類的好處揉到一起。這個就不多說了吧。
5. 迴環檢測
迴環檢測,又稱閉環檢測(Loop closure detection),是指機器人識別曾到達場景的能力。如果檢測成功,可以顯著地減小累積誤差。
迴環檢測目前多采用詞袋模型(Bag-of-Word),研究計算機視覺的同學肯定不會陌生。它實質上是一個檢測觀測資料相似性的問題。在詞袋模型中,我們提取每張影象中的特徵,把它們的特徵向量(descriptor)進行聚類,建立類別資料庫。比如說,眼睛、鼻子、耳朵、嘴等等(實際當中沒那麼高階,基本上是一些邊緣和角)。假設有10000個類吧。然後,對於每一個影象,可以分析它含有資料庫中哪幾個類。以1表示有,以0表示沒有。那麼,這個影象就可用10000維的一個向量來表達。而不同的影象,只要比較它們的向量即可。
迴環檢測也可以建成一個模型識別問題,所以你也可以使用各種機器學習的方法來做,比如什麼決策樹/SVM,也可以試試Deep Learning。不過實際當中要求實時檢測,沒有那麼多時間讓你訓練分類器。所以SLAM更側重線上的學習方法。
6. 高階話題
前面的都是基礎的SLAM,只有"定位"和"建圖"兩件事。這兩件事在今天已經做的比較完善了。近幾年的RGB-D SLAM[5], SVO[6], Kinect Fusion[7]等等,都已經做出了十分炫的效果。但是SLAM還未走進人們的實際生活。為什麼呢?
因為實際環境往往非常複雜。燈光會變,太陽東昇西落,不斷的有人從門裡面進進出出,並不是一間安安靜靜的空屋子,讓一個機器人以2cm/s的速度慢慢逛。論文中看起來酷炫的演算法,在實際環境中往往捉襟見肘,處處碰壁。向實際環境挑戰,是SLAM技術的主要發展方向,也就是我們所說的高階話題。主要有:動態場景、語義地圖、多機器人協作等等。
7. 小結
本文向大家介紹了SLAM中的各個研究點。我並不想把它寫成綜述,因為不一定有人願意看一堆的參考文獻,我更想把它寫成小故事的形式。
最後,讓我們想象一下未來SLAM的樣子吧:
有一天,小蘿蔔被領進了一家新的實驗樓。在短暫的自我介紹之後,他飛快地在樓裡逛了一圈,記住了哪裡是走廊,哪兒是房間。他刻意地觀察各個房間特有的物品,以便區分這些看起來很相似的房間。然後,他回到了科學家身邊,協助他的研究。有時,科學家會讓他去各個屋裡找人,找資料,有時,也帶著他去認識新安裝的儀器和裝置。在閒著沒事時,小蘿蔔也會在樓裡逛逛,看看那些屋裡都有什麼變化。每當新的參觀人員到來,小蘿蔔會給他們看樓裡的平面圖,向他們介紹各個樓層的方位與狀況,為他們導航。大家都很喜歡小蘿蔔。而小蘿蔔明白,這一切,都是過去幾十年裡SLAM研究人員不斷探索的結果。
References:
[1]. Smith, R.C. and P. Cheeseman, On the Representation and Estimation of Spatial Uncertainty. International Journal of Robotics Research, 1986. 5(4): p. 56--68.
[2]. Se, S., D. Lowe and J. Little, Mobile robot localization and mapping with uncertainty using scale-invariant visual landmarks. The international Journal of robotics Research, 2002. 21(8): p. 735--758.
[3]. Mullane, J., et al., A Random-Finite-Set Approach to Bayesian SLAM. IEEE Transactions on Robotics, 2011.
[4]. Adams, M., et al., SLAM Gets a PHD: New Concepts in Map Estimation. IEEE Robotics Automation Magazine, 2014. 21(2): p. 26--37.
[5]. Endres, F., et al., 3-D Mapping With an RGB-D Camera. IEEE Transactions on Robotics, 2014. 30(1): p. 177--187.
[6]. Forster, C., M. Pizzoli and D. Scaramuzza, SVO: Fast semi-direct monocular visual odometry. 2014, IEEE. p. 15--22.
[7]. Newcombe, R.A., et al., KinectFusion: Real-time dense surface mapping and tracking. 2011, IEEE. p. 127--136.