SLAM簡介
視覺SLAM,主要指的是利用相機完成建圖和定位問題。如果傳感器是激光,那么就稱為激光SLAM。
定位(明白自身狀態(即位置))+建圖(了解外在環境)。
視覺SLAM中使用的相機與常見的單反攝像頭并不是一個東西,它更簡單,不攜帶昂貴的鏡頭,以一定速率拍攝周圍環境,形成一個連續的視頻流。
在SLAM(同時定位與地圖構建)中,常用的相機種類包括以下幾種:
RGB相機
:RGB相機是最常用的相機類型之一,它可以捕獲彩色圖像。通常使用標準的RGB傳感器來獲取圖像,并可以通過軟件處理來提取深度信息。深度相機
:深度相機也被稱為RGB-D相機,它不僅可以捕獲彩色圖像,還可以獲取每個像素點到相機的距離信息。這些相機通常使用結構光、時間飛行或雙目視覺等技術來測量物體和場景的深度。最大的特點是通過紅外結構或ToF原理,像激光傳感器那樣,主動向物體發射光并接收返回的光。單目相機
:單目相機只有一個鏡頭,可以捕獲二維圖像(只是三維空間的二維映射)。由于只有一個視角,需要使用其他傳感器或算法來估計深度信息。它以二維的形式記錄了三維的世界,但是丟掉了場景中深度(距離)這一維度。雙目相機
:雙目相機具有兩個鏡頭,可以模擬人眼的立體視覺。通過比較兩個鏡頭捕獲的圖像之間的差異,可以計算得到場景的深度信息。多目相機
:多目相機包含三個或更多的鏡頭,可以提供更豐富的視角和深度信息。多目相機可以用于構建更精確和穩健的SLAM系統。
這些相機種類在SLAM中的選擇取決于應用場景、需要的精度和實時性等因素。不同的相機類型有不同的優勢和限制,選擇合適的相機是設計SLAM系統時需要考慮的重要因素之一。
SLAM可以用來做什么:自主機器人+三維重建+AR
常用工具
htop
相當于windows任務管理器
直接輸入htop即可運行
vim
文本編輯工具
terminator
超級終端
支持分欄和同時操作
ros
機器人操作系統,去官網選擇對應版本去裝即可
經典視覺SLAM框架
視覺里程計
視覺里程計關心相鄰圖像之間的相機運動,視覺里程計能夠通過相鄰幀間的圖像估計相機運動,并恢復場景的空間結構。
僅通過視覺里程計來估計軌跡,將不可避免的出現累積漂移,為了解決這個問題出現了后端優化(校正整個軌跡的形狀)和回環檢測(把“機器人回到原始位置”的事情檢測出來)
后端優化:
主要指處理SLAM過程中的噪聲問題。后端優化要考慮的問題就是如何從帶有噪聲的數據中估計整個系統的狀態,以及這個狀態估計的不確定性有多大–這叫做最大后驗概率估計。
在SLAM中,前端給后端提供待優化的數據,后端負責整體的優化過程。前端和計算機視覺研究領域更為相關,比如圖像的特征提取與匹配,后端主要是濾波與非線性優化算法。。
回環檢測(閉環檢測)
主要解決位置估計隨時間漂移的問題。視覺回環檢測實質上是一種計算圖像數據相似性的算法。檢測完后,會將信息告訴后端優化算法,然后后端優化算法根據這些新的信息,把軌跡和地圖調整到符合回環檢測結果的樣子。
建圖
根據不同的應用構建不同的地圖。總體上可以分為:
度量地圖
:強調精確地表示地圖中物體的位置關系,通常用稀疏和稠密對其分類。稀疏圖進行一定程度的抽象,并不需要表達所有物體,通常適用于定位。稠密地圖著重于建模看到的所有東西,適用于導航。
拓撲地圖
:更加強調地圖元素之間的關系。由節點和邊組成,只考慮節點間的連通性。
SLAM問題數學表示
xk代表在k時刻與xk處探測到某一個路標yi。uk是運動傳感器的讀數或者輸入。wk為該過程加入的噪聲。
運動方程
:
觀測方程:
在xk位置看到某個路標點yi,產生了一個觀測數據zk,j
vk,j是這次觀測里的噪聲。
針對不同的傳感器,方程有不同的參數化形式。
總結為兩個基本方程: