SLAM算法解析:抓住視覺SLAM難點,了解技術發展大趨勢

2020-12-06 機器之心Pro

機器之心專欄作者:閱面科技趙季

SLAM(Simultaneous Localization and Mapping) 是業界公認視覺領域空間定位技術的前沿方向,中文譯名為「同步定位與地圖構建」,它主要用於解決機器人在未知環境運動時的定位和地圖構建問題。本次閱面科技資深研究員趙季也將從 SLAM 方向著手,為大家展現更深層次的技術乾貨。

趙季:閱面科技資深研究員。2012 年獲華中科技大學博士學位,2012 年至 2014 年在 CMU 機器人研究所做博士後。曾在三星研究院從事深度相機、SLAM、人機互動方面的研究。目前專注於空間感知技術的研發。

目前科技發展速度飛快,想讓用戶在 AR/VR、機器人、無人機、無人駕駛領域體驗加強,還是需要更多前沿技術做支持,SLAM 就是其中之一。實際上,有人就曾打比方,若是手機離開了 WIFI 和數據網絡,就像無人車和機器人,離開了 SLAM 一樣。

SLAM 主要解決的是相機在空間中的定位、以及創建環境的地圖。在當前比較熱門的一些創業方向中,都可以看到它的身影:

在 VR/AR 方面,根據 SLAM 得到地圖和當前視角對疊加虛擬物體做相應渲染,這樣做可以使得疊加的虛擬物體看起來比較真實,沒有違和感。在無人機領域,可以使用 SLAM 構建局部地圖,輔助無人機進行自主避障、規劃路徑。在無人駕駛方面,可以使用 SLAM 技術提供視覺裡程計功能,然後跟其他的定位方式融合。機器人定位導航方面,SLAM 可以用於生成環境的地圖。基於這個地圖,機器人執行路徑規劃、自主探索、導航等任務。

SLAM 技術的發展距今已有 30 餘年的歷史,涉及的技術領域眾多。由於本身包含許多步驟,每一個步驟均可以使用不同算法實現,SLAM 技術也是機器人和計算機視覺領域的熱門研究方向。

SLAM 技術大解析

SLAM 的英文全程是 Simultaneous Localization and Mapping,中文稱作「同時定位與地圖創建」。SLAM 試圖解決這樣的問題:一個機器人在未知的環境中運動,如何通過對環境的觀測確定自身的運動軌跡,同時構建出環境的地圖。SLAM 技術正是為了實現這個目標涉及到的諸多技術的總和。

SLAM 技術涵蓋的範圍非常廣,按照不同的傳感器、應用場景、核心算法,SLAM 有很多種分類方法。按照傳感器的不同,可以分為基於雷射雷達的 2D/3D SLAM、基於深度相機的 RGBD SLAM、基於視覺傳感器的 visual SLAM(以下簡稱 vSLAM)、基於視覺傳感器和慣性單元的 visual inertial odometry(以下簡稱 VIO)。

基於雷射雷達的 2D SLAM 相對成熟,早在 2005 年,Sebastian Thrun 等人的經典著作《概率機器人學》將 2D SLAM 研究和總結得非常透徹,基本確定了雷射雷達 SLAM 的框架。目前常用的 Grid Mapping 方法也已經有 10 餘年的歷史。2016 年,Google 開源了雷射雷達 SLAM 程序 Cartographer,可以融合 IMU 信息,統一處理 2D 與 3D SLAM 。目前 2D SLAM 已經成功地應用於掃地機器人中。

2006 年使用雷射雷達生成的實驗室地圖

基於深度相機的 RGBD SLAM 過去幾年也發展迅速。自微軟的 Kinect 推出以來,掀起了一波 RGBD SLAM 的研究熱潮,短短幾年時間內相繼出現了幾種重要算法,例如 KinectFusion、Kintinuous、Voxel Hashing、DynamicFusion 等。微軟的 Hololens 應該集成了 RGBD SLAM,在深度傳感器可以工作的場合,它可以達到非常好的效果。

視覺傳感器包括單目相機、雙目相機、魚眼相機等。由於視覺傳感器價格便宜,在室內室外均可以使用,因此 vSLAM 是研究的一大熱點。早期的 vSLAM 如 monoSLAM 更多的是延續機器人領域的濾波方法。現在使用更多的是計算機視覺領域的優化方法,具體來說,是運動恢復結構(structure-from-motion)中的光束法平差(bundle adjustment)。在 vSLAM 中,按照視覺特徵的提取方式,又可以分為特徵法、直接法。當前 vSLAM 的代表算法有 ORB-SLAM、SVO、DSO 等。

視覺 SLAM

視覺傳感器對於無紋理的區域是沒有辦法工作的。慣性測量單元(IMU)通過內置的陀螺儀和加速度計可以測量角速度和加速度,進而推算相機的姿態,不過推算的姿態存在累計誤差。視覺傳感器和 IMU 存在很大的互補性,因此將二者測量信息進行融合的 VIO 也是一個研究熱點。按照信息融合方式的不同,VIO 又可以分為基於濾波的方法、基於優化的方法。VIO 的代表算法有 EKF、MSCKF、preintegration、OKVIS 等。Google 的 Tango 平板就實現了效果不錯 VIO。

總的來說,相比於基於雷射雷達和基於深度相機的 SLAM,基於視覺傳感器的 vSLAM 和 VIO 還不夠成熟,操作比較難,通常需要融合其他傳感器或者在一些受控的環境中使用。

Visual SLAM 為什麼比較難?

我們通過分析傳感器的測量信息做個定性的分析。雷射雷達或者 RGBD 相機可以直接獲取環境的點雲。對於點雲中的一個點,它告訴我們在某個方位和距離上存在一個障礙點。而視覺傳感器獲取的是灰度圖像或者彩色圖像。對於圖像中的一個像素,它只能告訴我們在某個方位有障礙點、障礙點周圍的表觀(local appearance)如何,但它不能告訴我們這個障礙點的距離。要想計算該點的距離,需要把相機挪動一個位置再對它觀察一次,然後按照三角測量的原理進行推算。

原理上很清晰,實際做起來並不簡單。首先需要在兩幅圖像中尋找點的對應,這涉及到特徵點的提取和匹配、或者準稠密點之間的匹配。計算機視覺發展到今天,其實還不存在性能和速度上很好滿足 vSLAM 的特徵提取和匹配算法。常見的特徵點提取算法,性能上大致可以認為 SIFT>SURF>ORB>FAST,效率上可以認為 FAST>ORB>SURF>SIFT(大於號左邊代表更優。性能主要包括匹配精度、特徵點的數量和空間分布等)。為了在性能和效率上取得折中,通常採用 FAST 或者 ORB,只能捨棄性能更好的 SIFT、SURF 等。

其次,匹配點的圖像坐標與空間坐標之間的關係是非線性的,例如 2D-2D 點的對應滿足對極幾何、2D-3D 點的對應滿足 PnP 約束。這些匹配數量較多,前後兩幀圖像中一般有幾十至數百的匹配。這些匹配會引入眾多約束關係,使得待估計變量的關係錯綜複雜。為了得到一個較優的估計,通常需要建立優化問題,整體優化多個變量。說起來這無非是一個非線性最小二乘優化問題,但實現起來並不簡單,因為存在非線性約束、約束數量很多、存在誤差和野值點,並且要將計算時間控制在允許範圍。目前廣泛採用關鍵幀技術,並且通過很多方法來控制問題規模、保持問題的稀疏性等。

非線性優化問題的形象圖示。圓餅代表待優化的變量(相機姿態、特徵點的空間坐標),杆子代表約束(對線幾何、PnP 等)。圖片來源自 https://www.pinterest.com/81chevycowper/70s-80s-toys/

前面分析了 vSLAM 的兩個困難。前者導致了前端的特徵跟蹤不易,後者導致了後端的優化不易。想做出一個高效率、魯棒的 vSLAM 系統還是一個非常有挑戰的任務。效率方面,SLAM 必須是實時運行的。如果不能做到實時,就不能稱作 SLAM。不考慮實時性,採用從運動恢復結構(structure-from-motion)效果會更好。魯棒性方面,一個脆弱的系統會導致用戶體驗很差,功能有限。

使用 structure-from-motion 對玲瓏塔進行三維重建

vSLAM 的核心算法

預備階段,包括傳感器的選型和各種標定。Visual SLAM 自 PTAM 算法以來,框架基本趨於固定。通常包括 3 個線程,前端 tracking 線程、後端 mapping 優化線程、閉環檢測(loop closure)線程。

前端 tracking 線程主要涉及到:

特徵的提取、特徵的匹配;多視圖幾何的知識,包括對極幾何、PnP、剛體運動、李代數等。

後端優化線程涉及到非線性最小二乘優化,屬於數值優化的內容。閉環檢測線程涉及到地點識別,本質上是圖像檢索問題。對於 VIO,還涉及到濾波算法、狀態估計等內容。

將 SLAM 算法拆解了看,用到的技術是偏傳統的。與當前大熱的深度學習「黑箱模型」不同,SLAM 的各個環節基本都是白箱,能夠解釋得非常清楚。但 SLAM 算法並不是上述各種算法的簡單疊加,而是一個系統工程,裡面有很多 tradeoff。如果僅僅跑跑開源程序,沒有什麼核心競爭力。不論是做產品還是做學術研究,都應當熟悉各種技術,才能有所創造。

SLAM 的未來發展趨勢

VSLAM 的發展感覺是中規中矩,各個環節在前人的基礎上一點點優化,同時不斷吸收其他方向的最新成果。短期內肯定會在現有框架下不停地改進。至於長遠一些的趨勢,IEEE TRO 2016 有一篇綜述文章 Past, present, and future of SLAM: towards the robust-perception age。幾位有聲望的學者在文中對 SLAM 的趨勢做了非常好的總結。這裡僅就自己感興趣的點提一些個人感想。

新型傳感器的出現會不停地為 SLAM 注入活力。如果我們能夠直接獲取高質量的原始信息,SLAM 的運算壓力就可以減輕很多。舉例來說,近幾年在 SLAM 中逐漸有使用低功耗、高幀率的 event camera(又稱 dynamic vision system, DVS)。如果這類傳感器的成本能降下來,會給 SLAM 的技術格局帶來許多變化。

自從深度學習在諸多領域所向披靡,不少研究者試圖用深度學習中 end-to-end 的思想重構 SLAM 的流程。目前有些工作試圖把 SLAM 的某些環節用深度學習代替。不過這些方法沒有體現出壓倒性優勢,傳統的幾何方法依然是主流。在深度學習的熱潮之下,SLAM 涉及的各個環節應該會逐漸吸收深度學習的成果,精度和魯棒性也會因此提升。也許將來 SLAM 的某些環節會整體被深度學習取代,形成一個新的框架。

SLAM 原本只關注環境的幾何信息,未來跟語義信息應該有更多的結合。藉助於深度學習技術,當前的物體檢測、語義分割的技術發展很快,可以從圖像中可以獲得豐富的語義信息。這些語義信息是可以輔助推斷幾何信息的,例如已知物體的尺寸就是一個重要的幾何線索。

相關焦點

  • SLAM軌跡全局誤差計算
    SLAM軌跡全局誤差計算一、umeyama算法 SLAM結果輸出之後,我們需要對其進行測量,判斷定位的精確度如何
  • 學習SLAM需要哪些預備知識?
    他包含了上述在視覺slam需要的所有基礎知識,真是造福大眾啊。詳細研讀此書,以後讀各種論文就不會顯得那麼吃力了吧。最後列舉一些玩slam的一些必備工具和相關資源。1. ubuntu,  cmake, bash, vim, qt(optional).2.
  • 最強戰隊 | 三維視覺、SLAM方向全球頂尖實驗室匯總
    他們還在tango項目上與谷歌合作,負責視覺慣導的裡程計,基於視覺的定位和深度重建算法。代碼地址:https://github.com/tum-vision/lsd_slam實驗室主要成果(http://robots.unizar.es/slamlab/?
  • 無人機視覺slam給你答案
    大多數視覺SLAM系統的工作方式是通過連續的相機幀,跟蹤設置關鍵點,以三角算法定位其3D位置,同時使用此信息來逼近推測相機自己的姿態。簡單來說,這些系統的目標是繪製與自身位置相關的環境地圖。這個地圖可以用於機器人、無人機等系統在該環境中導航作用。與其他形式的SLAM技術不同,只需一個3D視覺攝像頭,就可以做到這一點。
  • 移動機器人的幾種視覺算法 | 雷鋒網公開課
    它們能和人一樣能夠在特定的環境下自由行走/飛行,都依賴於各自的定位導航、路徑規劃以及避障等功能,而視覺算法則是實現這些功能關鍵技術。雷鋒網雷鋒網(公眾號:雷鋒網)雷鋒網如果對移動機器人視覺算法進行拆解,你就會發現獲取物體深度信息、定位導航以及壁障等都是基於不同的視覺算法,本期硬創公開就帶大家聊一聊幾種不同但又必不可少的視覺算法組成。
  • 視覺SLAM技術以及其應用詳解
    智慧機器人技術在世界範圍內得到了大力發展。、傳感器之視覺SLAM 視覺SLAM是21世紀SLAM研究熱點之一,一方面是因為視覺十分直觀,不免令人覺得:為何人能通過眼睛認路,機器人就不行呢?另一方面,由於CPU、GPU處理速度的增長,使得許多以前被認為無法實時化的視覺算法,得以在10 Hz以上的速度運行。硬體的提高也促進了視覺SLAM的發展。
  • SLAM 領域國內外優秀實驗室匯總(一)
    📜 語義 SLAM 概率數據關聯:Doherty K, Fourie D, Leonard J.Multimodal semantic slam with probabilistic data association[C]//2019 international conference on robotics and automation (ICRA).
  • 基於RFID系統的有效SLAM算法解析
    射頻識別(RFID)技術是近年來興起的一門自動識別技術。與傳統的條形碼系統、接觸式卡等不同,射頻識別系統是利用無線射頻方式非接觸供電,並進行非接觸雙向數據通信,以達到識別並交換數據的目的。識別工作無須人工幹預,可工作於各種惡劣環境。將RFID技術應用於機器人中,可以更好地發揮其技術特點,使機器人更多地獲取外在信息。
  • 速感科技CTO張一茗:視覺SLAM的技術現狀和應用趨勢
    主講人:張一茗 | 速感科技CTO陳銘林 屈鑫 編輯整理量子位 出品 | 公眾號 QbitAI5月31日晚,量子位·吃瓜社邀請到速感科技CTO張一茗,從傳感器的角度、算法實現等角度詳細講解了SLAM的實現和應用,同時跟大家探討了SLAM未來的發展和應用。
  • 【泡泡一分鐘】Flydar:在陀螺儀飽和狀態下基於磁力計的SLAM高角速度估計
    Paris, France編譯:王春穎審核:柴毅,王靖淇這是泡泡一分鐘推送的第 649 篇文章,歡迎個人轉發朋友圈;其他機構或自媒體如需轉載,後臺留言申請授權本文提出了一種用於飛行雷射雷達(Flydar)的同時定位和建圖(SLAM)的高角速度估計算法。
  • 機器人的雙眸:視覺SLAM是如何實現的?
    SLAM技術。從博士一年級開始對這個方向產生興趣,到現在為止,也算是對這個領域有了大致的了解。然而越了解,越覺得這個方向難度很大。總體來講有以下幾個原因:    1. 入門資料很少。雖然國內也有不少人在做,但這方面現在沒有太好的入門教程。《SLAM for dummies》可以算是一篇。中文資料幾乎沒有。    2. SLAM研究已進行了三十多年,從上世紀的九十年代開始。
  • 一文看懂SLAM導航技術分類、典型應用及國內發展現狀
    國內的科沃斯、塔米以及最新面世的嵐豹掃地機器人都可以通過用SLAM算法結合雷射雷達或者攝像頭的方法,讓掃地機高效繪製室內地圖,智能分析和規劃掃地環境,從而成功讓自己步入了智能導航的陣列。VR/AR方面:輔助增強視覺效果。SLAM技術能夠構建視覺效果更為真實的地圖,從而針對當前視角渲染虛擬物體的疊加效果,使之更真實沒有違和感。
  • 紐勱科技詳解視覺感知:視覺模型上線是一個閉環迭代過程
    >在車載感知技術和產品矩陣中,相較於雷射雷達,攝像頭傳感器和視覺技術因其低成本和較好的適用性成為所有公司重視的領域。據雷鋒網(公眾號:雷鋒網)了解,紐勱科技計算機視覺研發總監成二康,早前於美國Temple University獲得計算機博士學位,師從凌海濱教授;期間曾在美國西門子任職,主要做計算機視覺和醫學圖像分析方面的工作;之後加入矽谷Broncus medical 公司,開發了超大規模通用機器學習庫,用於圖像分割、目標檢測等;2017年10月加入紐勱科技,負責視覺相關的研發工作
  • 大牛講堂|SLAM最終話:視覺裡程計
    Simultaneous Localization and Mapping,即時定位與地圖構建技術。無論在室內、野外、空中還是水下,SLAM是機器人進入未知環境遇到的第一個問題。本期將給大家介紹SLAM的視覺裡程計。
  • 大牛講堂|SLAM第一篇:基礎知識
    Simultaneous Localization and Mapping,即時定位與地圖構建技術。無論在室內、野外、空中還是水下,SLAM是機器人進入未知環境遇到的第一個問題。本期將給大家介紹SLAM的基礎知識:傳感器與視覺SLAM框架。
  • 北京大學查紅彬:基於數據流處理的SLAM技術
    北京大學查紅彬教授為大家帶來報告《基於數據流處理的SLAM技術》。查紅彬,北京大學信息科學技術學院智能科學系教授,機器感知與智能教育部重點實驗室主任。主要從事計算機視覺與智能人機互動的研究,在三維視覺幾何計算、三維重建與環境幾何建模、三維物體識別等方面取得了一系列成果。
  • 凌感手勢追蹤算法與詮視視覺模組結合,加速手勢識別在VR/AR中的應用
    凌感手勢追蹤算法與詮視視覺模組結合,加速手勢識別在VR/AR中的應用 佚名 發表於 2020-06-06 09:46:50 近日,計算機視覺(手勢識別+slam)開發公司杭州凌感科技宣布和
  • ORB-SLAM3 單目地圖初始化(終結篇)
    來源:公眾號|計算機視覺工坊(系投稿)作者:喬不思「3D視覺工坊」技術交流群已經成立,目前大約有12000人,方向主要涉及3D視覺、CV&深度學習、SLAM、三維重建、點雲後處理、自動駕駛、CV入門、三維測量、VR/AR、3D人臉識別、醫療影像、缺陷檢測、行人重識別、目標跟蹤、視覺產品落地、視覺競賽、車牌識別、硬體選型、學術交流、求職交流、ORB-SLAM系列源碼交流