slam特征点深度 svd_SLAM初探:关于视觉SLAM的一些常识
視覺slam從根本上其實就是為了回答兩個問題,機器人在哪,機器人所處的環境是什么樣的。這其實和人進入一個陌生的環境時所思考的問題非常相似。
比如我們被拉進了一個陌生的屋子,我們會首先觀察這個屋子,觀察我們處在一個什么樣的環境之中,接下來我們就會思考我們這是在哪。機器人同樣如此,我們是通過眼睛、大腦來完成,而機器人就是利用攝像頭和處理器來實現。
SLAM(simultaneous localization and mapping)也叫即時定位與導航,最早由Hugh Durrant-Whyte 和 John J.Leonard提出。SLAM主要用于解決移動機器人在未知環境中運行時定位導航與地圖構建的問題。
典型的slam系統硬件組成主要由測距傳感器,odometry 里程計,處理器,IMU,運動機器人等。最簡單的結構為可以移動的機器人平臺并且至少包含一個測距單元。其過程包括特征提取,數據關聯,狀態估計,狀態更新以及特征更新等。對于其中每個部分,均存在多種實現方法。
視覺slam與激光slam及多線激光雷達有啥區別呢?視覺SLAM建立的是三維點云圖,多線激光雷達也可以建立三維點云圖。而激光slam是建立點云圖,比單純的視覺slam受空間亮度影響比較小,激光slam價格花費比較大,視覺slam硬件花費比較少,各有優劣。
視覺SLAM分為三大主要模塊:前端的視覺里程計,后端優化,回環檢測。做完這些,就可以進行建圖的工作了,也就是我們常說的三維點云圖。前端視覺里程計的作用,簡而言之,第一是要根據攝像頭回傳的圖像計算相機的幀間運動,第二就是估計路標點大致的空間位置坐標。后端優化的作用就是根據前端在不同時刻計算的相機位姿計算最大后驗概率估計,可以起到狀態預測的作用。
回環檢測的作用顯而易見,當攝像頭在環境中到達了自己曾經先前到達過的位置后,因為傳感器和計算過程存在誤差,所以通常建立出的點云圖都不能做到曲線閉合。回環檢測的功能便是判斷相機是否回到過先前位置,從而修正誤差,保證點云圖與實際空間的理想。
視覺slam框架:
1. 傳感器信息讀取。在視覺 SLAM 中主要為相機圖像信息的讀取和預處理。如果在機器人中,還可能有碼盤、慣性傳感器等信息的讀取和同步。
2. 視覺里程計 (Visual Odometry, VO)。視覺里程計任務是估算相鄰圖像間相機的運動, 以及局部地圖的樣子。VO 又稱為前端(Front End)。簡而言之,第一是要根據攝像頭回傳的圖像計算相機幀間運動的旋轉矩陣R和平移向量t(相機是怎么運動的);第二就是估計路標點大致的空間位置坐標(深度信息)。
3. 后端優化(Optimization)。后端接受不同時刻視覺里程計測量的相機位姿,以及回環檢測的信息,對它們進行優化,得到全局一致的軌跡和地圖。由于接在 VO 之后, 又稱為后端(Back End)。
4. 回環檢測(Loop Closing)。回環檢測判斷機器人是否曾經到達過先前的位置。如果檢測到回環,它會把信息提供給后端進行處理。當攝像頭在環境中到達了自己曾經先前到達過的位置后,因為傳感器和計算過程存在誤差,所以通常建立出的點云圖都不能做到曲線閉合。回環檢測的功能便是判斷相機是否回到過先前位置,從而修正誤差,保證點云圖與實際空間的理想。
5. 建圖(Mapping)。它根據估計的軌跡,建立與任務要求對應的地圖。?
圖像用什么攝像頭獲取??1. 單目相機? ? ?
優點:便宜??
缺點:初始化非常不精確,容易Tracking Lost;? 存在尺度不確定的問題,比如丟失深度信息的相片中,我們能見到“手捏太陽”“借位拍照”這樣的現象。
2. 雙目相機? ? ? ?
優點:被動測量深度,即可以通過計算獲得物體的深度(距離相機的前后距離)? ??
缺點:計算量大,在特征少的白墻、沙漠等環境很容易Tracking Lost。
3.RGB-D相機? ??
優點:利用傳感器主動測量深度,TOF相機更是被稱為相機的未來。建圖準確,不易Tracking Lost ???
缺點:受陽光,墻面反光等影響
相機的幀間運動用什么描述?旋轉矩陣、平移矢量、四元數、歐拉角? ?
這些都是描述剛體在三維空間中運動的方式,具體有什么運算規則或者幾何意義,參考slam十四講
怎么通過圖像計算幀間運動?? ? ? ?1. 相機模型:針孔相機模型
2.視覺里程計中最基本的問題就是給定兩個已經成功匹配的空間點在相機平面內投影的坐標,如何計算相機在這兩個觀察點之間的運動狀態? 怎么進行點的匹配?
每幀圖像包含的信息:關鍵點、描述子。關鍵點是圖像信息最集中的部分。描述子是用于區別每個特征點的信息,用于不同幀圖像間同一對特征點的匹配。
特征點匹配算法:ORB、SIFT、SURF 等。
怎么計算兩點間的運動狀態?①. 計算方法:對極幾何方法、PnP方法、ICP方法。
對極幾何方法:知道兩組像素的位置,估計相機運動狀態。? 每兩個成功匹配的點可以 提供一對對極約束,提供八個點就可以計算出本質矩陣(八點法).對本質矩陣進行SVD分解就可以解出相機運動的旋轉矩陣R和平移矢量t。
PnP方法:知道一組匹配點的空間位置和在相機平面的投影位置,估計相機運動狀態。
ICP方法:知道兩組點的空間位置,估計相機運動狀態。
②. 優化方法:BA優化。BA優化是利用迭代法(牛頓迭代、列文伯格-馬克爾特迭代法等)對R,t的值進行多次迭代使得誤差值最小化。
后端優化部分(多為一些比較成熟的算法)
主要方法:
1、基于濾波器? :KF、EKF
2、基于非線性優化:圖優化、因子圖
EKF:將系統線性化,用高斯分布近似觀測噪聲,并利用卡爾曼濾波進行狀態更新。
圖優化:給定初值后不斷迭代更新圖,主要利用的是g2o庫
回環檢測部分作用:當相機在空間中運動的時候,很有可能出現相機所在的點在之前到達過的情況。此時三維重建的點云圖上,相機的運動軌跡應該是閉合的曲線。但是由于傳感器存在誤差,計算過程也有很大的誤差,所以點云圖上,相機的軌跡通常不閉合。詞袋檢測可以判斷相機是否在曾經到達過當前點,如果到達過,則讓點云圖軌跡閉合。
實現方法:創建詞袋,可以理解為一個袋子,這個袋子里裝著每一幀圖像中的特征元素。利用詞袋比較每兩幀圖像的相似度,當相似度大于某一個閾值的時候,就認為這兩幅圖像是在同一點觀測到的,相機回到了曾經到達過的位置。
你的每一個“在看”,我都認真當成了喜歡 : )
總結
以上是生活随笔為你收集整理的slam特征点深度 svd_SLAM初探:关于视觉SLAM的一些常识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wxpython设置listctrl选中
- 下一篇: vivo手机解锁工具_屏幕指纹优势凸显,