大牛講堂|SLAM第一篇:基礎知識

2020-11-26 雷鋒網

雷鋒網註:本文作者高翔博士。Simultaneous Localization and Mapping,即時定位與地圖構建技術。無論在室內、野外、空中還是水下,SLAM是機器人進入未知環境遇到的第一個問題。本期將給大家介紹SLAM的基礎知識:傳感器與視覺SLAM框架。

傳感器與視覺SLAM框架

近來年,智慧機器人技術在世界範圍內得到了大力發展。人們致力於把機器人用於實際場景:從室內的移動機器人,到野外的自動駕駛汽車、空中的無人機、水下環境的探測機器人等等,均得到了廣泛的關注。

在大多數場合中,我們研究機器人會碰到一個基礎性的困難,那就是定位和建圖,也就是所謂的SLAM技術。沒有準確的定位與地圖,掃地機就無法在房間自主地移動,只能隨機亂碰;家用機器人就無法按照指令準確到達某個房間。此外,在虛擬實境(Virtual Reality)和增強現實技術(Argument Reality)中,沒有SLAM提供的定位,用戶就無法在場景中漫遊。在這幾個應用領域中,人們需要SLAM向應用層提供空間定位的信息,並利用SLAM的地圖完成地圖的構建或場景的生成。

傳感器

當我們談論SLAM時,最先問到的就是傳感器。SLAM的實現方式與難度和傳感器的形式與安裝方式密切相關。傳感器分為雷射和視覺兩大類,視覺下面又分三小方向。下面就帶你認識這個龐大家族中每個成員的特性。

1. 傳感器之雷射雷達

雷射雷達是最古老,研究也最多的SLAM傳感器。它們提供機器人本體與周圍環境障礙物間的距離信息。常見的雷射雷達,例如SICK、Velodyne還有我們國產的rplidar等,都可以拿來做SLAM。雷射雷達能以很高精度測出機器人周圍障礙點的角度和距離,從而很方便地實現SLAM、避障等功能。

主流的2D雷射傳感器掃描一個平面內的障礙物,適用於平面運動的機器人(如掃地機等)進行定位,並建立2D的柵格地圖。這種地圖在機器人導航中很實用,因為多數機器人還不能在空中飛行或走上臺階,仍限於地面。在SLAM研究史上,早期SLAM研究幾乎全使用雷射傳感器進行建圖,且多數使用濾波器方法,例如卡爾曼濾波器與粒子濾波器等。

雷射的優點是精度很高,速度快,計算量也不大,容易做成實時SLAM缺點是價格昂貴,一臺雷射動輒上萬元,會大幅提高一個機器人的成本。因此雷射的研究主要集中於如何降低傳感器的成本上。對應於雷射的EKF-SLAM理論方面,因為研究較早,現在已經非常成熟。與此同時,人們也對EKF-SLAM的缺點也有較清楚的認識,例如不易表示迴環、線性化誤差嚴重、必須維護路標點的協方差矩陣,導致一定的空間與時間的開銷,等等。

2. 傳感器之視覺SLAM

視覺SLAM是21世紀SLAM研究熱點之一,一方面是因為視覺十分直觀,不免令人覺得:為何人能通過眼睛認路,機器人就不行呢?另一方面,由於CPU、GPU處理速度的增長,使得許多以前被認為無法實時化的視覺算法,得以在10 Hz以上的速度運行。硬體的提高也促進了視覺SLAM的發展。

以傳感器而論,視覺SLAM研究主要分為三大類:單目、雙目(或多目)、RGBD。其餘還有魚眼、全景等特殊相機,但是在研究和產品中都屬於少數。此外,結合慣性測量器件(Inertial Measurement Unit,IMU)的視覺SLAM也是現在研究熱點之一。就實現難度而言,我們可以大致將這三類方法排序為:單目視覺>雙目視覺>RGBD。

單目相機SLAM簡稱MonoSLAM,即只用一支攝像頭就可以完成SLAM。這樣做的好處是傳感器特別的簡單、成本特別的低,所以單目SLAM非常受研究者關注。相比別的視覺傳感器,單目有個最大的問題,就是沒法確切地得到深度。這是一把雙刃劍。

一方面,由於絕對深度未知,單目SLAM沒法得到機器人運動軌跡以及地圖的真實大小。直觀地說,如果把軌跡和房間同時放大兩倍,單目看到的像是一樣的。因此,單目SLAM只能估計一個相對深度,在相似變換空間Sim(3)中求解,而非傳統的歐氏空間SE(3)。如果我們必須要在SE(3)中求解,則需要用一些外部的手段,例如GPS、IMU等傳感器,確定軌跡與地圖的尺度(Scale)。

另一方面,單目相機無法依靠一張圖像獲得圖像中物體離自己的相對距離。為了估計這個相對深度,單目SLAM要靠運動中的三角測量,來求解相機運動並估計像素的空間位置。即是說,它的軌跡和地圖,只有在相機運動之後才能收斂,如果相機不進行運動時,就無法得知像素的位置。同時,相機運動還不能是純粹的旋轉,這就給單目SLAM的應用帶來了一些麻煩,好在日常使用SLAM時,相機都會發生旋轉和平移。不過,無法確定深度同時也有一個好處:它使得單目SLAM不受環境大小的影響,因此既可以用於室內,又可以用於室外。

相比於單目,雙目相機通過多個相機之間的基線,估計空間點的位置。與單目不同的是,立體視覺既可以在運動時估計深度,亦可在靜止時估計,消除了單目視覺的許多麻煩。不過,雙目或多目相機配置與標定均較為複雜,其深度量程也隨雙目的基線與解析度限制。通過雙目圖像計算像素距離,是一件非常消耗計算量的事情,現在多用FPGA來完成。

RGBD相機是2010年左右開始興起的一種相機,它最大的特點是可以通過紅外結構光或Time-of-Flight原理,直接測出圖像中各像素離相機的距離。因此,它比傳統相機能夠提供更豐富的信息,也不必像單目或雙目那樣費時費力地計算深度。目前常用的RGBD相機包括Kinect/Kinect V2、Xtion等。不過,現在多數RGBD相機還存在測量範圍窄、噪聲大、視野小等諸多問題。出於量程的限制,主要用於室內SLAM。

視覺SLAM框架

視覺SLAM幾乎都有一個基本的框架 。一個SLAM系統分為四個模塊(除去傳感器數據讀取):VO、後端、建圖、迴環檢測。這裡我們簡要介紹各模塊的涵義,之後再詳細介紹其使用方法。

SLAM框架之視覺裡程計

Visual Odometry,即視覺裡程計。它估計兩個時刻機器人的相對運動(Ego-motion)。在雷射SLAM中,我們可以將當前的觀測與全局地圖進行匹配,用ICP求解相對運動。而對於相機,它在歐氏空間裡運動,我們經常需要估計一個三維空間的變換矩陣——SE3或Sim3(單目情形)。求解這個矩陣是VO的核心問題,而求解的思路,則分為基於特徵的思路和不使用特徵的直接方法。

特徵匹配

基於特徵的方法是目前VO的主流方式。對於兩幅圖像,首先提取圖像中的特徵,然後根據兩幅圖的特徵匹配,計算相機的變換矩陣。最常用的是點特徵,例如Harris角點、SIFT、SURF、ORB。如果使用RGBD相機,利用已知深度的特徵點,就可以直接估計相機的運動。給定一組特徵點以及它們之間的配對關係,求解相機的姿態,該問題被稱為PnP問題(Perspective-N-Point)。PnP可以用非線性優化來求解,得到兩個幀之間的位置關係。

不使用特徵進行VO的方法稱為直接法。它直接把圖像中所有像素寫進一個位姿估計方程,求出幀間相對運動。例如,在RGBD SLAM中,可以用ICP(Iterative Closest Point,迭代最近鄰)求解兩個點雲之間的變換矩陣。對於單目SLAM,我們可以匹配兩個圖像間的像素,或者像圖像與一個全局的模型相匹配。直接法的典型例子是SVO和LSD-SLAM。它們在單目SLAM中使用直接法,取得了較好的效果。目前看來,直接法比特徵VO需要更多的計算量,而且對相機的圖像採集速率也有較高的要求。

SLAM框架之後端

在VO估計幀間運動之後,理論上就可以得到機器人的軌跡了。然而視覺裡程計和普通的裡程計一樣,存在累積誤差的問題(Drift)。直觀地說,在t1和t2時刻,估計的轉角比真實轉角少1度,那麼之後的軌跡就全部少掉了這1度。時間一長,建出的房間可能由方形變成了多邊形,估計出的軌跡亦會有嚴重的漂移。所以在SLAM中,還會把幀間相對運動放到一個稱之為後端的程序中進行加工處理。

早期的SLAM後端使用濾波器方式。由於那時還未形成前後端的概念,有時人們也稱研究濾波器的工作為研究SLAM。SLAM最早的提出者R. Smith等人就把SLAM建構成了一個EKF(Extended Kalman Filter,擴展卡爾曼濾波)問題。他們按照EKF的形式,把SLAM寫成了一個運動方程和觀測方式,以最小化這兩個方程中的噪聲項為目的,使用典型的濾波器思路來解決SLAM問題。

當一個幀到達時,我們能(通過碼盤或IMU)測出該幀與上一幀的相對運動,但是存在噪聲,是為運動方程。同時,通過傳感器對路標的觀測,我們測出了機器人與路標間的位姿關係,同樣也帶有噪聲,是為觀測方程。通過這兩者信息,我們可以預測出機器人在當前時刻的位置。同樣,根據以往記錄的路標點,我們又能計算出一個卡爾曼增益,以補償噪聲的影響。於是,對當前幀和路標的估計,即是這個預測與更新的不斷迭代的過程。

21世紀之後,SLAM研究者開始借鑑SfM(Structure from Motion)問題中的方法,把捆集優化(Bundle Adjustment)引入到SLAM中來。優化方法和濾波器方法有根本上的不同。它並不是一個迭代的過程,而是考慮過去所有幀中的信息。通過優化,把誤差平均分到每一次觀測當中。在SLAM中的Bundle Adjustment常常以圖的形式給出,所以研究者亦稱之為圖優化方法(Graph Optimization)。圖優化可以直觀地表示優化問題,可利用稀疏代數進行快速的求解,表達迴環也十分的方便,因而成為現今視覺SLAM中主流的優化方法。

SLAM框架之迴環檢測

迴環檢測,又稱閉環檢測(Loop closure detection),是指機器人識別曾到達場景的能力。如果檢測成功,可以顯著地減小累積誤差。迴環檢測實質上是一種檢測觀測數據相似性的算法。對於視覺SLAM,多數系統採用目前較為成熟的詞袋模型(Bag-of-Words, BoW)。詞袋模型把圖像中的視覺特徵(SIFT, SURF等)聚類,然後建立詞典,進而尋找每個圖中含有哪些「單詞」(word)。也有研究者使用傳統模式識別的方法,把迴環檢測建構成一個分類問題,訓練分類器進行分類。

迴環檢測的難點在於,錯誤的檢測結果可能使地圖變得很糟糕。這些錯誤分為兩類:1.假陽性(False Positive),又稱感知偏差(Perceptual Aliasing),指事實上不同的場景被當成了同一個;2.假陰性(False Negative),又稱感知變異(Perceptual Variability),指事實上同一個場景被當成了兩個。感知偏差會嚴重地影響地圖的結果,通常是希望避免的。一個好的迴環檢測算法應該能檢測出儘量多的真實迴環。研究者常常用準確率-召回率曲線來評價一個檢測算法的好壞。

下期我們將具體地介紹這幾個模塊

敬請期待!

雷鋒網註:本文由大牛講堂授權雷鋒網(公眾號:雷鋒網)發布,如需轉載請聯繫原作者並註明作者和出處,不得刪減內容。如有興趣可以關注公號地平線機器人技術,了解最新消息。

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 大牛講堂|SLAM最終話:視覺裡程計
    視覺裡程計算法需要大量的幾何知識,我們將在必要的時候,以Tips的形式介紹一些背景知識。一、裡程計在裡程計問題中,我們希望測量一個運動物體的軌跡。這可以通過許多不同的手段來實現。例如,我們在汽車輪胎上安裝計數碼盤,就可以得到輪胎轉動的距離,從而得到汽車的估計。或者,也可以測量汽車的速度、加速度,通過時間積分來計算它的位移。
  • 學習SLAM需要哪些預備知識?
    /35186064學習SLAM需要哪些預備知識?他包含了上述在視覺slam需要的所有基礎知識,真是造福大眾啊。詳細研讀此書,以後讀各種論文就不會顯得那麼吃力了吧。最後列舉一些玩slam的一些必備工具和相關資源。1. ubuntu,  cmake, bash, vim, qt(optional).2.
  • 大牛講堂
    張正友博士參與了多項歐洲及法國的計算機視覺和機器人重大項目,在Siggraph等國際學術會議和國際刊物上發表論文100餘篇。人臉表情識別(FER)作為智能化人機互動技術中的一個重要組成部分,近年來得到了廣泛的關注,湧現出許多新方法。人臉表情識別(FER)系統由人臉檢測、表情特徵提取和表情分類組成。
  • 【博士講堂】天然橡膠的黏彈性之一—基礎知識
    接下來的幾篇短文中我們將著重介紹天然橡膠的黏彈性及實際應用。作者簡介:朱連超, 40歲, 青島科技大學橡膠工程學學士,中科院長春應化所高分子化學和物理博士。曾就職於山東威高,卡博特。在彈性體和輪胎應用技術和新產品開發方面擁有豐富經驗,現任上海詩董技術研發部總經理。
  • 必看篇:第一篇消防基礎知識匯總,建議收藏!(附思維導圖)
    2020年消防備考正當時,今天船船為大家獻上《技術實務》第一篇。消防基礎知識相關內容基本都已經為大家總結出來了,消防教研組老師還精心繪製了思維導圖幫助大家查缺補漏哦!第一篇《技術實務》大家掌握了多少呢,如果有遺忘的地方,船船還將消防相關知識點進行了匯總,是時候回顧下了!1、2020學年重點匯總:透析燃燒的本質與條件(附圖示)2、2020學年重點匯總:透過煤自燃學習燃燒的分類!
  • 神經網絡算法Batch Normalization的分析與展望 | 大牛講堂
    BN的結果之所以更好,可能作對了兩個地方,第一,正像我們之前講的,一堆隨機數的和()更接近一個正態分布,在這個和上來做標準化更加容易使得通過非線性之後依然保持穩定,對於使用sigmoid非線性的時候,對於一個mini batch而言大概接近68%的值在[0.27 0.73]之間,95%的值在[0.12 0.88]之間,這當然很好,基本都在sigmoid函數的線性部分,不會出現飽和的情況(這裡的梯度不會接近
  • 神經網絡算法BatchNormalization的分析與展望|大牛講堂
    BN的結果之所以更好,可能作對了兩個地方,第一,正像我們之前講的,一堆隨機數的和()更接近一個正態分布,在這個和上來做標準化更加容易使得通過非線性之後依然保持穩定,對於使用sigmoid非線性的時候,對於一個mini batch而言大概接近68%的值在[0.27 0.73]之間,95%的值在[0.12 0.88]之間,這當然很好,基本都在sigmoid函數的線性部分,不會出現飽和的情況(這裡的梯度不會接近
  • SLAM軌跡全局誤差計算
    ,將slamevo_ape tum groundTruth.txt slam.txt -va --plot 使用evo工具進行對齊需要將所有數據按照tum數據集的格式進行txt文件寫入。 我們將採集到的groundTruth數據與slam數據進行全局軌跡對齊,得到如下的軌跡誤差對比圖,相對軌跡或者單獨軌跡讀者可以自行搜索學習:
  • 大牛講堂 | 語音專題第二講,語言模型技術
    因Rnn在序列建模上有很大的優勢,Mikolov在nnlm上的基礎上,提出了rnnlm。Rnnlm將詞歷史抽象成一個state,降低了輸入維數。此外,為了解決輸出維數,將輸出層的詞進行聚類,通過因式分解,降低了計算複雜度。
  • 【泡泡一分鐘】Flydar:在陀螺儀飽和狀態下基於磁力計的SLAM高角速度估計
    Paris, France編譯:王春穎審核:柴毅,王靖淇這是泡泡一分鐘推送的第 649 篇文章,歡迎個人轉發朋友圈;其他機構或自媒體如需轉載,後臺留言申請授權本文提出了一種用於飛行雷射雷達(Flydar)的同時定位和建圖(SLAM)的高角速度估計算法。
  • 80篇Nature/Science帶你走進大牛的催化世界!
    Bell伯克利大牛的機理性探索Watching catalysts at workNATURE|Vol 456|13 November2008 Walter Leitner亞琛工大大牛關於均相催化的綠色化學內涵A greener solutionNature, VOL
  • 思維篇|如何成為一個運營大牛(二):運營立方體
    本篇的運營立方體思維,將慢慢為您解開這些疑惑:大家都知道,作為一家以盈利為基礎目標的商業型公司,構成其發展方向的三個最基本的重要條件: 產品、 客戶、 客單利潤 。等等…要成為一個運營大牛,不管目前是做一方面的運營, 我們都應建立自己的運營立方體,並且不斷的去擴大我們的立方體體積。
  • 超多學術大牛!
    超多學術大牛!>明德講堂周二講座時間:10月27日 18:30-20:30講座地點:雁棲湖校區 教二樓104>明德講堂周三講座時間:10月28日 18:30-20:30講座地點:雁棲湖校區 教一樓107
  • 傳承石油精神,弘揚石化傳統知識講堂(二)
    傳承石油精神,弘揚石化傳統知識講堂(二) 2020-11-21 07:50 來源:澎湃新聞·澎湃號·政務
  • ACTOYS鋼普拉知識小講堂 第一期 比例篇
    ACTOYS鋼普拉知識小講堂 第一期 比例篇作者:Lvkool本稿為AC模玩網官方專稿,轉載請註明出處並保留全部文字        事情是這樣開始的,有那麼一天,小編默默的站在上樓的電梯上,突然聽到有人說:「哎,你兒子也就玩玩電腦遊戲,長大就好了,你看我兒子,快三十了,現在還玩變形金剛。」
  • "行星大作戰"——物理知識小講堂 活動回顧
    但那一時刻要叫我一聲啊當人類又看到了藍天我知道已被忘卻太陽系的往事太久太久但那一時刻要叫我一聲啊當鮮花重新掛上枝頭……啊,地球,我的流浪地球……          --劉慈欣《流浪地球》由美國趣成長舉辦的「行星大作戰」,物理知識小講堂
  • 第一篇:C語言編程基礎語法
    本專欄系列分六篇,總結了C語言基礎知識的核心要點。教學視頻已上線,讀者可根據自身情況有選擇性地學習。01編程基礎C語言——貝爾實驗室、Dennis Ritchie
  • 膜拜大牛!今年第四篇Nature/Science正刊
    今年發文不到10篇,但其中有四篇是NS正刊,還有一篇Nature Chemistry。今天將為大家介紹MacMillan教授最新發表在Nature上的文章,一起來膜拜下大牛!▲第一作者
  • 自學單片機第十篇:基礎知識--萬用表的使用
    自學單片機第九篇:基礎知識--計算機基礎操作自學單片機第八篇:基礎知識--C語言基礎自學單片機第七篇:基礎知識--物理<電學部分>
  • 「名師講堂」·生物高考:找準8大主幹知識的增分點,避免不定項選擇...
    在這裡,「名師講堂」直播間預祝考生們考出好成績! 名師講堂邀請煙臺一中生物教研組長李梅老師:生物高考技巧及如何不丟分,多得分脫離了理綜模式,2020年生物高考成為以單科考試形式出現的等級考科目,將迎來那些重要變化?