三维重建:SLAM算法的考题总结
?????? 參考英文維基:https://en.wikipedia.org/wiki/Slam 。參考文檔:視覺slam研究分析的一點認識
一、四大簡述
1、?請簡單描述您對機器人的SLAM的概念理解?
答: 機器人需要在自身位置不確定的條件下,在完全未知環境中創建地圖, 同時利用地圖進行自主定位和導航。這就是移動機器人的同時定位與地圖創建(simultaneous localization and mapping (SLAM)? )?問題。
????? 算法上一般分為 相機定位跟蹤 和 場景地圖構建 兩個高度相關的部分。場景地圖構建是指 構建相機所在場景的三維地圖;相機定位跟蹤是指 利用相機自身姿態的估計值和通過傳感器得到的觀測值來確定相機在環境中的位置。
?????? 參考:SLAM:使用G2O-ORB-SLAM
?
2、?請描述常見的SLAM算法及原理?
答:常見的SLAM方法有單目SLAM方法和雙目SLAM方法.
?????? 單目SLAM方法用幀與幀之間的運動距離和運動角度來估算深度信息,傳統的視覺SLAM方法多采用特征提取 匹配和數據關聯的方式來完成。
??????? 根據單目SLAM方法在是否引入概率框架方面 劃分為 基于概率框架的方法和基于非概率框架的方法。基于概率框架的方法把SLAM問題描述為濾波問題/最大似然方法,代表方法有基于kalman濾波的方法等;? 非概率框架的方法 主要方法為使用關鍵幀和稀疏綁定調整優化(BA),使用的數值優化-最小二乘方法 直觀描述形式為圖優化。此外,基于粒子濾波的方法為隨機優化方法,尋找系統狀態的最小方差估計。
??????? 參考:SLAM:使用G2O-ORB-SLAM
?
3、?SLAM的常用概率解法有哪幾類?分別有什么優缺點?
答:采用概率框架的方法的思路大致為:假設從初始時刻到當前 時刻的觀測數據和控制輸入已知,那么就可以聯合后驗概率來構建一個后驗概率密度函數,這個函數用來描述相機姿態 和 地圖中的特征的空間位置,進而通過遞歸的貝葉斯濾波算法 來對構建的概率密度函數進行估計,從而完成SLAM問題的解決。
??????? 在基于KF的方法中,假設滿足高斯分布并且系統的非線性較小時可以得到不錯的效果,另外從后驗概率的不同可以分為EKF-SLAM方法、擴展信息濾波(EIF)方法、UKF-SLAM方法、SEIF方法等,例如,Davison等提出的單目視覺SLAM系統(MonoSLAM)和Roussillon[提出的實時單目視覺SLAM系統(RTSLAM)就是建立在擴展卡爾曼濾波(EKF)的基礎上的。
??????? 再基于PF的方法中,主要有Doucet[7]提出的基于Rao-Blackwellized粒子濾波器(RBPF)的方法 和在此基礎上Montemerlo[8]提出的 FastSLAM方法等,其中FastSLAM方法可以用于非線性的系統。
??????? 優點: 基于概率框架的方法的計算框架類似,其中基于EKF的單目視覺,一般可以分為運動模型和觀測模型并在HMM 的假設下可以實現系統狀態的預測和觀測更新。地圖也可以在線更新。
??????? 缺點:但是這種方法多采用增量式的地圖創建方法,故在系統不穩定和觀測的不確定性的影響下造成誤差的累積,在大規模場景時會導致最終地圖的不一致性,難于保持準確度和魯棒性。
?
4、?SLAM中回環檢測(閉環檢測)的目的是什么?簡述一下SLAM中可以使用的回環檢測方法?
答:參考維基:Loop closure :Loop closure is the problem of recognizing a previously-visited location and updates the beliefs accordingly. This can be a problem because model or algorithm errors can assign low priors to the location. Typical loop closure methods apply a second algorithm to measure some type of sensor similarity, and re-set the location priors when a match is detected. For example, this can be done by storing and comparingbag of words vectors of SIFT features from each previously visited location.
??????? 回環檢測/閉環檢測 是一個 場景識別的問題,若slam完成閉環檢測,則可以大大得減少檢測誤差。因此,SLAM中的閉環檢測則是為了減少SLAM中的累積誤差。
?? 參考文章:SLAM系統的研究點介紹
??????? 閉環檢測一般使用詞袋模型作為場景匹配方法。而作為一個場景識別問題,閉環檢測可以看做是一個視覺系統的模式識別問題。所以可以使用各種機器學習的方法來做,比如什么決策樹/SVM,也可以試試CNN方法。不過實際當中要求實時檢測,沒有那么多時間訓練分類器。所以SLAM更側重在線的學習方法。
??? ?? 在線的視覺機器學習方法有在線SVM和在線隨機森林 等工具。
?
5、?SLAM算法中的機器人“綁架”問題是什么?可以用哪些方法解決這樣的問題?
答:機器人的“綁架”問題是指在缺少它之前的位置信息情況下,去確定機器人的當前位姿,即重定位。例如當機器人被安置在一個已經構建好地圖的環境中,但是并不知道它在地圖中的相對位置,或者在移動過程中,由于傳感器的暫時性功能故障或相機的快速移動,都導致機器人先前的位置信息的丟失,就像人質的眼睛被蒙上黑布條,拉上集裝箱被運送到了未知的地方,此時,人質就無法給自己定位了。
? 解決方案: 暫時沒有詳細考慮結果!!!
?
? 方案一:使用替代傳感器,比如在 視覺機器人中 使用 慣導系統。
????? 參考知乎文章:http://www.zhihu.com/question/29453727
?
二、關于VO
1.什么是極線約束?
?? A:也叫核面約束。相機經過位姿轉換,通過對同一個物體和同一組點觀察得到兩幅圖像,同一組點在兩幅圖片中位置和順序不同,但滿足相機透視的 核面約束。又稱基本矩陣約束。
????? 公式: p^T *F*p=0;
????? 同一個點P在兩幅圖像上的映射,已知映射點p1,那么另一幀映射點p2一定在相對于p1的極線上,這樣可以減少待匹配的點數量。
?
2.相機的E矩陣和F矩陣的區別?
A:基本矩陣F和E只差了一個相機內參??
???????? ? F = K^(-T) *E *K^(-1) ;
?
3.什么是BA?
A:Bundle Adjustment,光束法平差。
??? 有兩層釋義:1.對場景中任意三維點P,由從每個視圖所對應的的攝像機的光心發射出來并經過圖像中P對應的像素后的光線,都將交于P這一點,對于所有三維點,則形成相當多的光束(bundle);2. 實際過程中由于噪聲等存在,每條光線幾乎不可能匯聚與一點,因此在求解過程中,需要不斷對待求信息進行調整(adjustment),來使得最終光線能交于點P。調整過程即為光束法平差。
?
4.實現相機Agent定位的PNP方法?
A:利用二維視野內的圖像,求出三維圖像在場景中的位姿,這是一個三維透視投影的反向求解問題。常用方法是PNP方法,需要已知三維點集的原始模型。
??? 應用場景:給定物體3D點集與對應的圖像2D點集,之后進行姿態計算(即求旋轉與位移矩陣)。
??? PNP解法:直接線性變換,求最小二乘,求解t具有12維,至少需要6個匹配點。P3P方法:使用世界坐標系中的3個點,把問題轉化為了一個3D-3D的剛性變換問題。PNP的BA方法:最小化重投影誤差,通用BA方法。
?
5.本質矩陣求解R和t?
A:R和t被稱為相機外參。E= t ^ R 為3*3的矩陣,奇異值為 [ u, u, 0] ^ T 的形式。為本質矩陣的內在性質。
????? 性質:理論上綜合旋轉、平移共有6個自由度,因尺度等價,E有5個自由度。
????? 求解:一般使用8點法,直接通過SVD分解,恢復出R,t 。
?
6.LM方法對高斯牛頓法的改進?
A:LM方法又被稱為阻尼牛頓法,在高斯牛頓法的二階泰勒展開的△x處添加一個信賴區域約束,使其不能太大。
????? 求解線性方程(H+λI)△x=b;提供更穩定,更準確的增量。
將二次偏導省略,于是:
為了避免GN方法發散,有兩種方法:
λ→+∞時:Δ/λ→JTr,即方向和梯度方向一樣,變成了梯度下降法。相反,如果λ為0,就變成了高斯牛頓法。
Levenberg-Marquardt方法的好處在于可以調節:
如果下降太快,使用較小的λ,使之更接近高斯牛頓法
如果下降太慢,使用較大的λ,使之更接近梯度下降法
?
7.單目SLAM的尺度問題?
A:單目SLAM是可以求出一個真實尺度的,但計算結果會產生漂移。三角測量計算具有不穩定性,逐幀累計不做優化會產生更大的誤差。
?
8.三角測量不穩定性緩解方法?
A:使用可信的位移t值,使角度變換限制在一個可信范圍。
??? 使用深度濾波器。假設特征點誤差分布符合高斯分布,多次觀測方差會不斷縮小,即進行濾波。
?
?
總結
以上是生活随笔為你收集整理的三维重建:SLAM算法的考题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何从 iOS 中的表情符号键盘上删除
- 下一篇: latch的产生和消除