Visual SLAM整體框架
來自專欄探討深度學習在SLAM中的應用13 人贊了文章
Visual SLAM大致可以翻譯為基於視覺(Visual)的同步攝像機定位與地圖重建(Simultaneously Localization and Mapping),屬於SLAM技術的一個分支。早期的SLAM技術大多應用在機器人領域,通過機器人上的雷達和GPS等定位、測距感測器,構建2D地圖的同時完成機器人自身的定位。而如今隨著各類感測器的出現和發展,基於視覺的SLAM技術因為圖像信息方便、豐富、精準等原因成為主流之一,應用場景包括增強現實/虛擬現實頭部跟蹤、機器人導航、無人駕駛車、無人飛行器等等。SLAM這一技術的主要難點就在「同時」這個詞上。在系統初始階段,場景和系統姿態都是為未知信息。地圖信息來源於相機姿態和場景特徵,同時相機姿態有需要用地圖信息來計算。有些類似雞生蛋蛋生雞的悖論(註:也挺像太極的(′?ω?`),見圖1)。SLAM技術的核心就在與提取建立場景和系統之間的約束,通過解這些約束逐步恢復場景和系統姿態。
圖1
早期的Visual SLAM技術並沒有明確的前端和後端概念,系統姿態估計和場景標記(Landmark)維護都會在一幀內完成。結果就是要麼約束優化時引入無用的標記,每一幀的效率比較低;要麼只使用新建立的標記,系統誤差不斷累積下去。
近十幾年起,Visual SLAM技術經過逐漸的打磨,系統框架逐漸穩定了下來。一般的Visual SLAM系統大致上會有前端和後端之分。前端主要負責每一幀的姿態估計(Pose Estimation),並且在姿態估計完成後不斷地往地圖(Map)中添加約束;後端主要負責把收集到的約束進行(圖)優化,並把優化完的結果反饋給前端。一般意義上的實時Visual SLAM系統指得都是前端實時,但是後端因為計算量龐大,所以一般都是隔幾幀更新一次。平時大家說的Visual SLAM前端通常都有特徵提取,特徵匹配等過程,後端一般是聯合優化(Bundle Adjustment)以及相機姿態圖優化(Pose Graph Optimization)。但實際上前後端的技術們有各種各樣的分類方法。我會在之後的文章里進行一一介紹。
接下來談一些個人心得。Visual SLAM這個行業入門門檻高,可以說對新人非常非常不友好(? ??_??)?┻━┻。相機姿態和地圖構建這一對雞生蛋蛋生雞的高耦合冤家決定了整個系統的每一個環節都必須全力以赴不能馬虎。比如,前端因為計算力不足,演算法不夠優化導致幀率不高,那給後端的約束數量和質量就會下降,反過來給前端的姿態估計帶來更多麻煩。因此,要從事Visual SLAM這個行業就需要比較好的工程能力和經驗,願意去打磨一些細節。如果要從事Visual SLAM的研究,雖然可以有諸多開源框架可以使用(比如ORBSLAM),但是如果對一些細節不了解的話,很難找到合適的研究點。真·細節決定成敗(?(????))。
最後祝您和Visual SLAM玩的愉快,與諸君共勉。
推薦閱讀:
※玩轉Jetson TX2 Part4 (TX2 Benchmark)
※《中國智能製造綠皮書(2017)》揭示智能製造發展總體處於早期探索階段 | 獨家
※OPEN AI LAB 發布Tengine大幅提升Inference性能
※驍龍845全新AI架構,三倍AI性能提升
※我們離「電腦幹掉作家」還有多遠?| 韓少功談人工智慧和基因技術
TAG:人工智慧 | 同時定位和地圖構建SLAM |