SLAM: SLAM基本流程—VSLAM扫盲之旅
?????? 在很多機器人的論文和書籍里面,劈頭第一頁即是,經典的SLAM視覺框架是過去十幾年前已經成熟的研究結果,這個框架和算法本身已經沒有太多理論可以操作的空間。封殺了很多人的SLAM科研之路,把SLAM當一個工程看待。
?????? 在《機器人手冊》 第2卷,這本書里面,第23章講述了:三維視覺和基于視覺的實時定位于地圖重建。在第37章里面,講述了 同時定位與建圖。指出了SLAM的三種基本方法。
???????
? ?? ? 一種是EKF的方法,但由于性能的約束,逐漸變得非主流;第二種基于圖表示,成功使用稀疏非線性優化方法解決SLAM問題,成為主要方法;第三種也是成為粒子濾波器的非參數統計濾波技術,是在線SLAM的一種主流方法。
?????? 線性濾波器方法又稱為極大似然方法,圖方法使用最小二乘方法,粒子濾波為隨機方法。
?
VSLAM掃盲之旅
????? ? 作為三維重建-SLAM的入門資料匯總:?VSLAM掃盲之旅; ICCV研討會:實時SLAM的未來以及深度學習與SLAM的比較:?http://blog.csdn.NET/qq_18661939/article/details/51919329
????? The Future of Real-time SLAM[ZZ]: https://zhuanlan.zhihu.com/p/21738966
????? SLAM 開發學習資源與經驗分享:https://github.com/GeekLiB/Lee-SLAM-source?utm_source=tuicool&utm_medium=referral
??????? 此文涉及到硬件的討論,還是值得看一下的,可以大致瀏覽一下, 速感CEO:? SLAM的前世今生 終于有人說清楚了
?
最近流行的結構光和TOF
結構光原理的深度攝像機通常具有激光投射器、光學衍射元件(DOE)、紅外攝像頭三大核心器件。
這個圖(右圖)摘自primesense的專利。
可以看到primesense的doe是由兩部分組成的,一個是擴散片,一個是衍射片。先通過擴散成一個區域的隨機散斑,然后復制成九份,投射到了被攝物體上。根據紅外攝像頭捕捉到的紅外散斑,PS1080這個芯片就可以快速解算出各個點的深度信息。
這兒還有兩款結構光原理的攝像頭。
第一頁它是由兩幅十分規律的散斑組成,最后同時被紅外相機獲得,精度相對較高。但據說DOE成本也比較高。
還有一種比較獨特的方案(最后一幅圖),它采用mems微鏡的方式,類似DLP投影儀,將激光器進行調頻,通過微鏡反射出去,并快速改變微鏡姿態,進行行列掃描,實現結構光的投射。(產自ST,ST經常做出一些比較炫的黑科技)。
ToF(time of flight)也是一種很有前景的深度獲取方法。
傳感器發出經調制的近紅外光,遇物體后反射,傳感器通過計算光線發射和反射時間差或相位差,來換算被拍攝景物的距離,以產生深度信息。類似于雷達,或者想象一下蝙蝠,softkinetic的DS325采用的就是ToF方案(TI設計的),但是它的接收器微觀結構比較特殊,有2個或者更多快門,測ps級別的時間差,但它的單位像素尺寸通常在100um的尺寸,所以目前分辨率不高。以后也會有不錯的前景,但我覺得并不是顛覆性的。
?
SLAM系統研究點介紹
?? ? ? ? 本文主要談談SLAM中的各個研究點,為研究生們(應該是博客的多數讀者吧)作一個提綱挈領的摘要。然后,我們再就各個小問題,講講經典的算法與分類。
?????? ? 文章鏈接:http://www.cvrobot.net/research-points-introduction-of-slam-system/
SLAM系統基本流程
?? ? ? ? 三維重建和SLAM側重點不一樣,三維重建側重于世界地圖的重建,把世界地圖準確度和量化標準放在第一位;而SLAM作為simultaneous localization and mapping,側重于定位,更多應用于機器人生產和應用環境。不管是三維重建和SLAM,都存在使用單目相機和雙目相機作為數據源的區別,三維相機可以直接得到圖像的深度信息,得到三維點云。
??????? SLAM的地圖重建根據過程和結果的不同,分為稀疏重建和稠密重建,不加后續處理的稠密重建的結果為較為密度均勻稠密的點集,即surface;稀疏重建結果為散布在三維笛卡爾空間中的稀疏點集。單目相機的重建結果一般只能得到稀疏地圖。
???????? 應用環境一般先對硬件參數進行測量,經過標定過程,可以測得相機的一些內參,作為工程的初始化參數。相機可以標定的參數為相機內參,在SLAM公式序列中稱為“內參矩陣”K、“本質矩陣”E和“基本矩陣”F。
???????? 基于特征點法單目SLAM的基本流程分為幾個階段:
1.視覺里程-基本計算
??????? 1.1 單幀圖像特征點提取
????????????? 在圖像中提取特征點,作為待選點。使用的檢測方法一般為fast 角點檢測方法,檢測顯著點,得到特征點位置;根據后續需要,對顯著點附近的圖像,進行處理,得到一個特征描述子向量(SLAM中一般選用Fast、star、Brief等,少數情況下使用freak、sift );
??????? 1.2 相鄰幀圖像特征點關系匹配
????????????? 對相鄰幀圖像的特征描述子進行匹配,得到內點(匹配點)和外點(未匹配點),內點的匹配關系。 匹配算法一般使用機器學習中的最近鄰或者ANN搜索,匹配結果的準確性直接影響到后續相機里程和地圖構建過程。
???????? 1.3 計算相機里程R和t
?????????????? SLAM的開始,開始使用到相機參數。根據匹配關系,得到相機的旋轉和平移變化。
?????????????? 根據透射模型(針孔相機模型),同一個三維點p在兩幅圖像中的二維位置p1(x1,y1)p2(x2,y2)關系,結合內參矩陣E或F,得出相機的旋轉R和和平移t。
??????????????? 公式1:p2^t * K^-T * t . R *K^-1 *p1=0
??????????????? 可形式化為2: E = t R 、 F=K^-T *E*K^-1 、x2^T *E*x1 = p2^T *F *p1=0;
??????????????? 根據公式1,根據匹配關系和位置,求出E或者F。根據公式2,根據E或F解出R、t。
???????? 1.4 根據相機t計算點深度信息
???????????????? 三角測量:在不同位置觀察同一個點,根據透射關系和平移距離,計算點到相機的距離-深度(世界坐標系)。
???????????????? 三角測量公式:
?????? 在理想狀態下,視覺里程可以獲取兩幀圖像間隔的相機六自由度變換(x、y、z平移和 xy、yz、zx旋轉(歐拉角計量)),并計算出點在世界坐標系中的三維位置(相對尺度)。
?????? 關鍵點:特征點檢測位置要準確、特征點匹配要精準、相機平移和點的深度要合適(三角測量的角度要合適,不然容易造成計算矩陣病態,造成深度不確定性)。
?????? 解決方法:增加分辨率、使用復雜描述子、使用深度濾波器等。
???????
2.視覺里程-連續幀
? ? ??? 累計誤差問題: 相鄰幀計算,因各種硬件、算法原因造成一定誤差,連續幀會造成更大的誤差累積。具有噪聲的軌跡積分不可避免的有可能嚴重偏離真實軌跡。
??????? 著重于重建環境的方法論為典型三維重建,重點在于環境地圖的匹配,一般重建的模型為稠密表面模型;離線重建并附帶恢復機器人/相機軌跡的過程被稱為SFM,一般同時處理所有數據;而機器人領域最實用的則是導航,即機器人我在哪兒(地圖)、我在地圖的哪個方位(六位姿),重點在于計算機器人在世界地圖中的當前位姿。
?????? SFM問題為完全SLAM問題,導航重建問題被稱為在線SLAM問題。
一、經典濾波器算法
?????? 在線SLAM問題必定使用在線算法,每一刻處理一個數據項,被稱為濾波器算法,是第一個經典的SLAM算法。SLAM問題最先是由Smith?Self?和Cheeseman?在1988年提出來的,被認為是實現真正全自主移動機器人的關鍵。 由?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. ????
????? 基于統計的濾波器思路,把SLAM寫成一個運動方程和觀測方程,以最小化這兩個方程中的噪聲項為目的,使用典型的濾波器思路來解決SLAM問題。
????? ?具體方法:當一個幀到達時,我們能(通過碼盤或IMU)測出該幀與上一幀的相對運動,但是存在噪聲,是為運動方程。同時,通過傳感器對路標的觀測,我們測出了機器人與路標間的位姿關系,同樣也帶有噪聲,是為觀測方程。通過這兩者信息,我們可以預測出機器人在當前時刻的位置。同樣,根據以往記錄的路標點,我們又能計算出一個卡爾曼增益,以補償噪聲的影響。于是,對當前幀和路標的估計,即是這個預測與更新的不斷迭代的過程。
????? ? 隨后的時間里,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.中使用了卡爾曼濾波的方法。
????? ? 使用EKF的方法是一段時間內的SLAM主流方法。EKF算法使用了貝葉斯準則,是一個作了一階線性化高斯假設的EM算法。 多線程程序崛起之后,SFM方法引入在線SLAM,作為在線SLAM的補充方法。有些方法摒棄了濾波算法,直接使用VO+SFM方法,仍然能比EKF算法取得更好的結果。
???????
二、SFM算法-圖模型
???????? 從全局來看SLAM的Agent 位姿和傳感器觀測序列,和這些狀態變量之間的有向關系,可以用一個有向圖來描述。因此,SLAM的狀態優化問題可以引入圖方法優化工具。
??????? EKF方法是假設了有向圖為一階馬爾科夫過程的濾波器方法。方法對運動函數g和狀態函數f用泰勒公式展開線性化,取其一階,為一階模型。EKF方法使用協方差矩陣描述誤差,具有二次型,隨著觀測點的個數增大呈現平方增長。
??????? 后期一些研究人員把一個可能增加的大地圖拆為多個子圖覆蓋,獲得了顯著的擴展性。
??????? 隨著算力的提升,階段性完全SLAM獲得更大的進展。PTAM方法等大量涌現。
?
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.
?????
? 聲明:
本文編撰和轉載自:http://www.cnblogs.com/gaoxiang12/p/4395446.html
如果轉載了本文編撰的版本,也請注明轉載出處:http://www.cvrobot.net/research-points-introduction-of-slam-system/
如果您對該機器學習、圖像視覺算法技術感興趣,可以關注新浪微博:視覺機器人? 或者加入 QQ群:101371386
?
?
總結
以上是生活随笔為你收集整理的SLAM: SLAM基本流程—VSLAM扫盲之旅的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021充电桩龙头股一览表 2021充电
- 下一篇: 支付宝每天转账限额多少