VSLAM方法框架:
整個SLAM大概可以分爲前端和後端 ,前端相當於VO(視覺里程計),研究幀與幀之間變換關係。首先提取每幀圖像特徵點,利用相鄰幀圖像,進行特徵點匹配,然後利用RANSAC去除大噪聲,然後進行匹配,得到一個pose信息(位置和姿態),同時可以利用IMU(Inertial measurement unit慣性測量單元)提供的姿態信息進行濾波融合
後端則主要是對前端出結果進行優化,利用濾波理論(EKF、UKF、PF)、或者優化理論TORO、G2O進行樹或者圖的優化。最終得到最優的位姿估計。
後端這邊難點比較多,涉及到的數學知識也比較多,總的來說大家已經慢慢拋棄傳統的濾波理論走向圖優化去了。
因爲基於濾波的理論,濾波器穩度增長太快,這對於需要頻繁求逆的EKF(擴展卡爾曼濾波器),PF壓力很大。而基於圖的SLAM,通常以keyframe(關鍵幀)爲基礎,建立多個節點和節點之間的相對變換關係,比如仿射變換矩陣,並不斷地進行關鍵節點的維護,保證圖的容量,在保證精度的同時,降低了計算量。
列舉幾個目前比較有名的SLAM算法:PTAM,MonoSLAM, ORB-SLAM,RGBD-SLAM,RTAB-SLAM,LSD-SLAM。
所以大家如果想學習SLAM的話,各個高校提高的素材是很多的,比如賓大、MIT、ETH、香港科技大學、帝國理工等等都有比較好的代表作品,還有一個比較有前景的就是三維的機器視覺,普林斯頓大學的肖劍雄教授結合SLAM和Deep Learning做一些三維物體的分類和識別, 實現一個對場景深度理解的機器人感知引擎。
http://robots.princeton.edu/talks/2016_MIT/RobotPerception.pdf 這是他們的展示。
這個是occipital團隊出的一個產品,是個很有意思的應用,國內賣4000+,大概一個月1000出貨量吧(雖然不是很多,但是效果不錯,pad可玩)虛擬家居、無人飛行/駕駛、虛擬試衣、3D打印、刑偵現場記錄、沉浸式遊戲、增強現實、商場推送、設計輔助、地震救援、工業流水線、GIS採集等等,都等待着vSLAM技術一展宏圖
SLAM的今生——還存在着問題
多傳感器融合、優化數據關聯與迴環檢測、與前端異構處理器集成、提升魯棒性和重定位精度都是SLAM技術接下來的發展方向,但這些都會隨着消費刺激和產業鏈的發展逐步解決。就像手機中的陀螺儀一樣,在不久的將來,也會飛入尋常百姓家,改變人類的生活。
不過說實話,SLAM在全面進入消費級市場的過程中,也面對着一些阻力和難題。比如Sensor精度不高、計算量大、Sensor應用場景不具有普適性等等問題。
多傳感器融合、優化數據關聯與迴環檢測、與前端異構處理器集成、提升魯棒性和重定位精度都是SLAM技術接下來的發展方向,但這些都會隨着消費刺激和產業鏈的發展逐步解決。就像手機中的陀螺儀一樣,在不久的將來,也會飛入尋常百姓家,改變人類的生活。
提問:
雷鋒網 : 激光雷達和攝像頭兩種 SLAM 方式各有什麼優缺點呢,有沒有一種綜合的方式互補各自的缺點的呢?
張一茗: 激光雷達優點是可視範圍廣,但是缺點性價比低,低成本的雷達角分辨率不夠高,影響到建模精度。vSLAM的話缺點就是FOV通常不大,50-60degree,這樣高速旋轉時就容易丟,解決方案有的,我們公司就在做vSLAM跟雷達還有IMU的組合。
雷鋒網 : 請問目前基於視覺的SLAM的計算量有多大?嵌入式系統上如果要做到實時30fps,是不是隻有Nvidia的芯片(支持cuda)纔可以?
張一茗: 第一個問題,雖然基於視覺的SLAM計算量相對較大,但在嵌入式系統上是可以跑起來的,Sparse的SLAM可以達到30-50hz(也不需要GPU和Cuda),如果dense的話就比較消耗資源,根據點雲還有三角化密度可調,10-20hz也是沒有問題。
並不一定要用cuda,一些用到cuda和GPU的算法主要是用來加速SIFT、ICP,以及後期三角化和mesh的過程,即使不用cuda可以採用其他的特徵點提取和匹配策略也是可以的。