2025年4月9日 星期三

視覺 SLAM 是什麼?一文帶你快速了解視覺 SLAM

 視覺 SLAM 是什麼?一文帶你快速了解視覺 SLAM

近年來,SLAM 技術取得了驚人的發展,領先一步的雷射 SLAM 已成熟地應用於各大場景中。視覺 SLAM 雖在落地應用上不及雷射 SLAM,但也是目前研究的一大熱點。今天我們就來詳細聊聊視覺 SLAM 的那些事兒。

視覺 SLAM 是什麼?

視覺 SLAM 主要是基於相機來完成環境的感知工作。相對而言,相機成本較低,容易放到商品硬體上,且圖像資訊豐富,因此視覺 SLAM 也備受關注。

目前,視覺 SLAM 可分為單目、雙目(多目)、RGBD 這三類,另還有魚眼、全景等特殊相機,但目前在研究和產品中還屬於少數。此外,結合慣性測量器件(Inertial Measurement Unit,IMU)的視覺 SLAM 也是現在研究熱點之一。從實現難度上來說,大致將這三類方法排序為:單目視覺 > 雙目視覺 > RGBD。

單目相機 SLAM 簡稱 MonoSLAM,僅用一支攝影鏡頭就能完成 SLAM。最大的優點是感測器簡單且成本低廉,但同時也有個大問題,就是不能確切地得到深度。

一方面是由於絕對深度未知,單目 SLAM 不能得到機器人運動軌跡及地圖的真實大小。如果把軌跡和房間同時放大兩倍,單目看到的像是一樣的,因此,單目 SLAM 只能估計一個相對深度。另一方面,單目相機無法依靠一張圖像獲得圖像中物體離自己的相對距離。為了估計這個相對深度,單目 SLAM 要靠運動中的三角測量,來求解相機運動並估計像素的空間位置。也就是說,它的軌跡和地圖,只有在相機運動之後才能收斂,如果相機不進行運動時,就無法得知像素的位置。同時,相機運動還不能是純粹的旋轉,這就給單目 SLAM 的應用帶來了一些麻煩。

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

RGBD 相機是 2010 年左右開始興起的一種相機,它最大的特點是可以通過紅外結構光或 TOF 原理,直接測出圖像中各像素離相機的距離。因此,它比傳統相機能夠提供更豐富的資訊,也不必像單目或雙目那樣費時費力地計算深度。

視覺 SLAM 框架解讀

  1. 感測器數據 在視覺 SLAM 中主要為相機圖像資訊的讀取和預處理。如果在機器人中,還可能有碼盤、慣性感測器等資訊的讀取和同步。

  2. 視覺里程計 視覺里程計的主要任務是估算相鄰圖像間相機運動以及局部地圖的樣子,最簡單的是兩張圖像之間的運動關係。計算機是如何通過圖像確定相機的運動的?在圖像上,我們只能看到一個個的像素,知道它們是某些空間點在相機的成像平面投影的結果。所以必須先了解相機跟空間點的幾何關係。

    Vo(又稱為前端)能夠通過相鄰幀間的圖像估計相機運動,並恢復場景的空間結構,稱它為里程計。被稱為里程計是因為它只計算相鄰時刻的運動,而和再往前的過去資訊沒有關聯。相鄰時刻運動串聯起來,就構成了機器人的運動軌跡,從而解決了定位問題。另一方面,根據每一時刻的相機位置,計算出各像素對應的空間點的位置,就得到了地圖。

  3. 後端優化 後端優化主要是處理 SLAM 過程中雜訊的問題。任何感測器都有雜訊,所以除了要處理「如何從圖像中估計出相機運動」,還要關心這個估計帶有多大的雜訊。

    前端給後端提供待優化的數據,以及這些數據的初始值,而後端負責整體優化的過程,它往往面對的只有數據,不必關係這些數據來自哪裡。在視覺 SLAM 中,前端和計算更與視覺研究領域相關,比如圖像的特徵提取與匹配等,後端則主要是濾波和非線性優化演算法。

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

  5. 建圖 建圖主要是根據估計的軌跡建立與任務要求對應的地圖。在機器人學中,地圖的表示主要有柵格地圖、直接表徵法、拓撲地圖以及特徵點地圖這 4 種。而特徵點地圖是用有關的幾何特徵(如點、直線、面)表示環境,常見於視覺 SLAM 技術中。這種地圖一般通過如 GPS、UWB 以及攝影鏡頭配合稀疏方式的 vSLAM 演算法產生,優點是相對數據儲存量和運算量比較小,多見於最早的 SLAM 演算法中。

視覺 SLAM 工作原理

大多數視覺 SLAM 系統的工作方式是通過連續的相機幀,追蹤設置關鍵點,以三角演算法定位其 3D 位置,同時使用此資訊來逼近推測相機自己的姿態。簡單來說,這些系統的目標是繪製與自身位置相關的環境地圖。這個地圖可以用於機器人系統在該環境中導航。與其他形式的 SLAM 技術不同,只需一個 3D 視覺攝影鏡頭,就可以做到這一點。

通過追蹤攝影鏡頭影片幀中足夠數量的關鍵點,可以快速了解感測器的方向和周圍物理環境的結構。所有視覺 SLAM 系統都在不斷地工作,以使重新投影誤差 (Reprojection Error) 或投影點與實際點之間的差異最小化,通常是通過一種稱為捆集調整 (Bundle Adjustment, BA) 的演算法解決方案。vSLAM 系統需要即時操作,這涉及到大量的運算,因此位置數據和地圖數據經常分別進行捆集調整,但同時進行,便於在最終合併之前加快處理速度。

視覺 SLAM 與雷射 SLAM 有什麼區別?

在業界,視覺 SLAM 與雷射 SLAM 誰更勝一籌,誰將成為未來主流趨勢這一問題,成為大家關注的熱點,不同的人也有不同的看法及見解,以下將從成本、應用場景、地圖精度、易用性幾個方面來進行詳細闡述。

  1. 成本 從成本上來說,雷射雷達普遍價格較高,但目前國內也有低成本的雷射雷達解決方案,而 VSLAM 主要是通過攝影鏡頭來採集數據資訊,跟雷射雷達一對比,攝影鏡頭的成本顯然要低很多。但雷射雷達能更高精度地測出障礙點的角度和距離,方便定位導航。

  2. 應用場景 從應用場景來說,VSLAM 的應用場景要豐富很多。VSLAM 在室內外環境下均能開展工作,但是對光的依賴程度高,在暗處或者一些無紋理區域是無法進行工作的。而雷射 SLAM 目前主要被應用在室內,用來進行地圖構建和導航工作。

  3. 地圖精度 雷射 SLAM 在構建地圖的時候,精度較高,思嵐科技的 RPLIDAR 系列構建的地圖精度可達到 2 公分左右;VSLAM,比如常見的,大家也用得非常多的深度攝影機 Kinect(測距範圍在 3-12 公尺之間),地圖構建精度約 3 公分;所以雷射 SLAM 構建的地圖精度一般來說比 VSLAM 高,且能直接用於定位導航。

視覺 SLAM 的地圖建立

  1. 易用性 雷射 SLAM 和基於深度相機的視覺 SLAM 均是通過直接獲取環境中的點雲數據,根據生成的點雲數據,測算哪裡有障礙物以及障礙物的距離。但是基於單目、雙目、魚眼攝影鏡頭的視覺 SLAM 方案,則不能直接獲得環境中的點雲,而是形成灰色或彩色圖像,需要通過不斷移動自身的位置,通過提取、匹配特徵點,利用三角測距的方法測算出障礙物的距離。

總體來說,雷射 SLAM 相對更為成熟,也是目前最為可靠的定位導航方案,而視覺 SLAM 仍是今後研究的一個主流方向,但未來,兩者融合是必然趨勢。

沒有留言:

張貼留言