視覺SLAM SLAM面試專題

2021-10-25 11:30:20 字數 3565 閱讀 5887

1. 什麼是閉環檢測

回環檢測的意義?

slam前端使用相鄰幀估計位姿,導致整個slam出現累計誤差。回環檢測能夠提供除相鄰幀之外的跟多的約束,如0-n幀的位姿變換。通過這些約束進行優化減小累計誤差,構建全域性一致的軌跡和地圖。

常用的方法有哪些?

回環檢測的關鍵是如何高效的檢測出相機經過同乙個地方這件事,方法如下:

[1] 對任意兩幅影象都做特徵匹配 ——計算量大

[2] 隨機抽取歷史資料進行回環檢測——抽到回環的概率小,檢測效率低

[1]和[2]過於盲目,我們至少希望有乙個「**可能出現回環」的**,方法歸類如下:

[1] 基於里程計的幾何關係:當發現機械人運動到之前某個位置時,檢測是否出現回環。

[2] 基於外觀:僅根據兩幅影象的相似性確定是否出現回環,核心問題是如何計算影象間的相似性。詞袋法(bag of word)

你用的哪種方法?

詞袋法:根據特徵點的匹配確定影象的相似性,詞袋法加速特徵匹配。

有沒有創新?

重新生成字典

2. 描述gauss-netwon和lm
對於用迭代法求解最優化問題,都涉及到最迭代的步長和方向。高斯牛頓和列文伯格_馬誇爾特都是用來確定步長的方法。

高斯牛頓對目標函式做二階泰勒展開,展開項對增量?x求導,令導數為0求出最優的增量得到xk+1。高斯牛頓存在鋸齒現象,lm再gn的基礎上新增係數,計算最優的步長。解決了鋸齒現象,加快了收斂的速度。

3. ceres庫

熟悉ceres優化庫嗎?說一下。

4. 濾波方法

描述(擴充套件)卡爾曼濾波與粒子濾波,你自己在用卡爾曼濾波時遇到什麼問題沒有?

5. 除了視覺感測,還用過其他感測嗎?

比如gps,雷射雷達。。

6. 緊耦合、松耦合

什麼是緊耦合、松耦合?優缺點。

6. 你認為室內slam與自動駕駛slam有什麼區別?

7. 地圖點的構建方法有哪些?

8. 當前幀新提取的特徵點,如何恢復3d點?

畫素座標由內參矩陣得到相機座標,相機座標由r|t得到世界座標

9. 如何對匹配好的點做進一步的處理,更好保證匹配效果 ?
(1)確定匹配最大距離,漢明距離小於最小距離的兩倍

(2)使用knn-matching演算法,令k=2。則每個match得到兩個最接近的descriptor,然後計算最接近距離和次接近距離之間的比值,當比值大於既定值時,才作為最終match。

(3)ransac(使用ransac找到最佳單應性矩陣。由於這個函式使用的特徵點同時包含正確和錯誤匹配點,因此計算的單應性矩陣依賴於二次投影的準確性)

10. 單目相機,f和h矩陣有何不同,e和f矩陣有何不同,只旋轉不平移能不能求f,只旋轉不平移能不能求h
e=t^r

[公式]

h=r-t*nt/d

在相機只有旋轉而沒有平移的情況,此時t為0,e也將為0,導致無法求解r,這時可以使用單應矩陣h求旋轉,但僅有旋轉,無法三角化求深度。

11. 描述ba
**ba的本質是乙個優化模型,其目的是最小化重投影/光度誤差,用於優化相機位姿和世界點。**區域性ba用於優化區域性的相機位姿,提高跟蹤的精確度;全域性ba用於全域性過程中的相機位姿,使相機經過長時間、長距離的移動之後,相機位姿還比較準確。ba是乙個圖優化模型,一般選擇lm(levenberg-marquardt)演算法並在此基礎上利用ba模型的稀疏性進行計算;可以直接計算,也可以使用g2o或者ceres等優化庫進行計算。

bundle adjustment : 從視覺重建中提煉出最優的3d模型和相機引數(內參和外參),好似每乙個特徵點都會反射幾束光線,當把相機位姿和特徵點位置做出最優的調整後,這些光線都收束到相機相機光心。也就是根據相機的投影模型構造構造代價函式,利用非線性優化(比如高斯牛頓或列文伯格馬誇而爾特)來求最優解,利用雅克比矩陣的稀疏性解增量方程,得到相機位姿和特徵點3d位置的最優解。

ba可以分為基於濾波器的ba和基於迭代的ba

12.描述pnp
perspective-n-points, pnp(p3p)提供了一種解決方案,它是一種由3d-2d的位姿求解方式,即需要已知匹配的3d點和影象2d點。目前遇到的場景主要有兩個,其一是求解相機相對於某2維影象/3維物體的位姿;其二就是slam演算法中估計相機位姿時通常需要pnp給出相機初始位姿。

在場景1中,我們通常輸入的是物體在世界座標系下的3d點以及這些3d點在影象上投影的2d點,因此求得的是相機座標系相對於世界座標系(twc)的位姿

在場景2中,通常輸入的是上一幀中的3d點(在上一幀的相機座標系下表示的點)和這些3d點在當前幀中的投影得到的2d點,所以它求得的是當前幀相對於上一幀的位姿變換,如圖所示:

兩種情況本質上是相同的,都是基於已知3d點和對應的影象2d點求解相機運動的過程。

13. 如何處理關鍵幀
關鍵幀選取的指標主要有:

(1)跟蹤質量(主要根據跟蹤過程中搜尋到的點數和搜尋的點數比例)/共視特徵點

(2)距離最近關鍵幀的距離是否足夠遠(空間)/運動

(3)距離上一關鍵幀的幀數是否足夠多(時間)

14. 為什麼要引入李群李代數
旋轉矩陣自身是帶有約束的,正交且行列式為1,他們作為優化變數時,會引入額外的約束,時優化變的困難,通過李群李代數的轉換關係,把位姿估計變成無約束的優化問題。

15. 什麼是極限約束
所謂極線約束就是說同乙個點在兩幅影象上的對映,已知左圖對映點p1,那麼右圖對映點p2一定在相對於p1的極線上,這樣可以減少待匹配的點數量。(畫**釋)

16. 單目視覺slam中尺寸漂移是怎麼產生的
單目相機根據一張無法得出一張中物體的實際大小,同理也就無法得出運動的尺度大小,這是產生尺度漂移的根源。而在優化過程中,單目相機使用對極幾何中的三角測量原理,而三角測量中,極小的角度誤差在累積之後深度不確定都會變得很大,從而無法保證尺度一致性。

17. slam中的綁架問題
綁架問題就是重定位,是指機械人在缺少之前位置資訊的情況下,如何去確定當前位姿。例如當機械人被安置在乙個已經構建好地圖的環境中,但是並不知道它在地圖中的相對位置,或者在移動過程中,由於感測器的暫時性功能故障或相機的快速移動,都導致機械人先前的位置資訊的丟失,在這種情況下如何重新確定自己的位置。

參考blog

[1] slam、3d vision求職經歷

[2] 2019 最新slam、定位、建圖求職分享,看完感覺自己就是小菜雞!

[3] 乾貨總結 | slam 面試常見問題及參考解答

[4] orb_slam2易忘知識點總結,改**關掉區域性ba,全域性ba

[5] 2021屆找slam感測器融合方向的工作需要達到什麼水平?

[6] slam十四講重要公式定理整理(上)

[7] icra20中的slam**彙總(二)

Kafka面試專題

1.kafka 的設計時什麼樣的呢?kafka 將訊息以 topic 為單位進行歸納 將向 kafka topic 發布訊息的程式成為 producers.將預訂 topics 並消費訊息的程式成為 consumer.kafka 以集群的方式執行,可以由乙個或多個服務組成,每個服務叫做乙個 brok...

深度學習專題 計算機視覺一

缺點有提取了全域性的特徵而丟了細節。特徵提取 索引技術 相關反饋 重排序 簡單的特徵變換包括了 中心化,變數減去它的均值,相當於平移之後,所有資料覺得中心是 0,0 歸一化,指的是,所有資料減去均值再除以標準差 去相關,消除或減弱多光譜影象波段之間的相關性 kl變換 his 色度 亮度 飽和度 變換...

leetcode 面試題專題

面試題51.陣列中的逆序對 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。利用歸併排序,將陣列分成兩部分,前面一部分和後面一部分,進行歸併的時候,需要比較兩個陣列的數值大小,如果第二個陣列的值小的話,代表前乙個陣列剩下的都...