SLAM常見面試題

單目

  1. 單目SLAM流程【稀疏】
    單目SLAM流程是:初始化–PnP–PnP……。具體方法是依賴對極幾何的相關知識,根據2D-2D匹配點對計算本質矩陣(或基本矩陣),並對其進行分解得到相機運動,再依據三角化原理計算特徵點距離。至此即得到3D-2D匹配點對,後續的相機位姿的估計就是PnP問題了。

  2. 初始化
    初始化的意義是求取兩個圖像間的運動和特徵點距離,初始化之後的運動都以初始化時的平移作爲單位1,這稱爲單目的不確定性問題(Scale Ambiguity)。且在初始化時,要保證兩幀圖片之間的運動必須包括平移(不能只旋轉),否則將導致求得的本質矩陣E爲0,也就無法分解得到相機位姿。

  3. 尺度漂移問題
    根本原因:單目slam產生尺度漂移的根本原因是單目相機無法根據一張圖片得出圖中物體的大小,這是尺度漂移的根源;在使用單目估計相機位姿和3D點座標時,需要通過對極幾何、三角化進行估計,在這個過程中會產生誤差(特徵點精度誤差、計算誤差),這些誤差經過多幀累積後會變得特別大,進而導致尺度的不一致性,造成尺度漂移。
    解決辦法:1、視覺與IMU融合,藉助IMU測得的高幀率的角速度、加速度對視覺進行修正、補充;後端優化時,把尺度作爲一個優化變量進行優化,可以減小尺度漂移問題。
    補充:由於初始化時存在尺度不確定性,因此單目相機估計的目標物體距離與真實世界裏的距離存在比例上的差異,這個比例被稱作尺度。而且,受到噪聲的影響,導致這個尺度會逐漸漂移、改變,這被稱爲單目SLAM的尺度漂移問題。從理論上來說,只靠單目相機(不借助其他傳感器)是無法確定這個尺度具體是多少的,比較好的解決方法是使用迴環檢測,但是要求相機的整個運動過程存在迴環。

  4. 單目SLAM流程【稠密】
    深度高斯濾波器

  5. 基礎矩陣
    概述:基礎矩陣FF對極約束的代數表示,並且這種約束關係獨立與場景的結構,只依賴與相機的內參和外參(相對位姿)。
    求解方法:求解基礎矩陣時,如果匹配特徵點對較少,則使用8點法進行求解;爲提高求解精度,或者如果匹配點對很多且可能存在外點,則通常使用RANSAC方法篩選出內點,再進行求解;爲進一步提高精度,還可以根據所有內點對F做非線性優化,通常使用L-M算法求解該優化目標函數。目標函數常採用兩種距離度量:辛普森距離(Sampson distance)、對稱極線距離(symmetric epipolar distance)。
    參考:RANSAC求基本矩陣流程:SLAM入門之視覺里程計(4):基礎矩陣的估計,該博客中博主使用的內點判斷標準是對稱極線距離,也可以使用辛普森距離。

  6. 本質矩陣EE、基本矩陣FF、單應性矩陣HH區別?
    基本矩陣:描述的是不同幀之間同一空間點像素座標的幾何約束關係,將圖像歸一化座標替換爲像素點座標,得到基本矩陣約束,基本矩陣描述的約束又稱爲極線約束。基本矩陣和相機內參,外參都有關係。
    本質矩陣:描述空間點在不同幀之間的歸一化座標的約束關係,是相機座標系層面。本質矩陣和相機外參有關係,和內參無關。本質矩陣則是基本矩陣的一種特殊情況,是在歸一化圖像座標下的基本矩陣,可以理解爲本質矩陣對應的座標位於相機座標系,基礎矩陣對應的座標位於圖像平面座標系。
    單應性矩陣:在相機只有旋轉而沒有平移的情況,此時t爲0,E也將爲0,導致無法求解R,這時可以使用單應矩陣H求旋轉,但僅有旋轉,無法三角化求深度。

  7. 濾除匹配外點
    方法1:先求出所有匹配點最小距離min_dist(Hamming距離嗎?),處於這個範圍內的點認爲是內點:30<匹配點距離<=2*min_dist;
    方法2:基於KNN,設置k=2,即取最近鄰與次近鄰距離(.distance(),該距離類似於歐式距離,用於表徵匹配質量,距離越小,匹配效果越好)的比值,比值<0.8則爲內點;
    方法3:RANSAC方法。

  8. 什麼是閉環檢測?
    在視覺SLAM問題中,位姿的估計往往是由上一幀位姿解算當前幀位姿,這麼遞增求解,因此相鄰兩幀之間的誤差就會產生累計。如我們在求解第五幀位姿的時候,一般是根據第四幀計算的,但是如果我們發現第5幀還可以由第2幀計算出來,就減少了誤差的累計。這種與之前的某一幀(非相鄰幀)建立位姿約束關係就叫做迴環。找到可以建立這種位姿約束的歷史幀,就是迴環檢測。迴環通過減少約束數,起到了減小累計誤差的作用。
    方法:特徵匹配,提取當前幀與過去所有幀的特徵,並進行匹配,這種方式假設了過去所有幀都有可能出現迴環,匹配十分耗時、計算量大。基於詞袋模型,詞袋模型就是把特徵看成是一個個單詞,通過比較兩張圖片中單詞的一致性,來判斷兩張圖片是否屬於同一場景。詞袋模型需要訓練字典(K-means聚類),但通常字典內單詞數量巨大,在確定某個特徵時需要與字典內每個單詞進行匹配,效率低下。爲提高匹配效率,字典在訓練的過程中構建了一個有k個分支,深度爲d的樹(K叉樹),類似於層次聚類,可容納k^d個單詞,保證了對數級別的查找效率。
    參考:淺談SLAM的迴環檢測技術

  9. 講一下Gaussian-Newton法和LM法?
    爲什麼用這兩種算法:在SLAM中求解相機位姿時,常構建待優化位姿的誤差函數(光度誤差或重投影誤差),通過使得這個誤差函數取最小值,得出最優的相機位姿。如果這個誤差函數是線性的,則可以直接求導數等於0處的極值即可,但該誤差函數通常是關於待優化位姿的非線性多元函數,這實際上是一個非線性無約束最優化問題,常用的解法是G-N、LM算法。
    兩者均是非線性最小二乘求解方法, 都是通過泰勒展開進行線性化,並利用導數確定最優迭代方向,進行逐步迭代求出最優解的優化算法。
    梯度下降法:在尋找目標函數極小值時,是沿着反梯度方向進行尋找的。梯度的定義就是指向標量場增長最快的方向,在尋找極小值時,先隨便定初始點(x0,y0)然後進行迭代不斷尋找直到梯度的模達到預設的要求。但是梯度下降法的缺點之處在於:在遠離極小值的地方下降很快,而在靠近極小值的地方下降很慢,靠近的時候可能成zig-zag下降。
    高斯牛頓法:其利用了目標函數的泰勒展開式把非線性函數的最小二乘化問題化爲每次迭代的線性函數的最小二乘化問題。高斯牛頓法的缺點在於:若初始點距離極小值點過遠,迭代步長過大會導致迭代下一代的函數值不一定小於上一代的函數值。
    LM算法:在高斯牛頓法中加入了因子μ,當μ大時相當於梯度下降法μ小時相當於高斯牛頓法。在使用Levenberg-Marquart時,先設置一個比較小的μ值,當發現目標函數反而增大時,將μ增大使用梯度下降法快速尋找,然後再將μ減小使用牛頓法進行尋找。
    LM算法在高斯牛頓法中加入了因子μ,當μ大時相當於梯度下降法,μ小時相當於高斯牛頓法。在使用Levenberg-Marquart時,先設置一個比較小的μ值,當發現目標函數反而增大時,將μ增大使用梯度下降法快速尋找,然後再將μ減小使用牛頓法進行尋找。

  10. 參考:
    LM算法-講解詳細
    高斯牛頓(Gauss Newton)、列文伯格-馬夸爾特(Levenberg-Marquardt)最優化算法與VSLAM
    概率角度解釋:高斯-牛頓法(Guass-Newton Algorithm)與萊文貝格-馬夸特方法(Levenberg–Marquardt algorithm)求解非線性最小二乘問題
    單目SLAM在移動端應用的實現難點有哪些?

ORB-SLAM

  1. ORB-SLAM在估計相機位姿時,爲什麼同時計算基礎矩陣F和單應性矩陣H?
    當特徵點共面或相機間發生了純旋轉時,基礎矩陣自由度下降,即發生了所謂的退化,此時如果仍採用八點法估算F矩陣,基礎矩陣多出來的自由度將會由噪聲決定,對結果造成極大誤差。爲避免退化現象造成的影響,通常會同時估計基礎矩陣F和單應矩陣H,選擇重投影誤差較小的那個作爲最終的運動估計矩陣。

雙目、RGBD

  1. 雙目SLAM流程
  2. RGBD-SLAM流程

光流法、直接法、特徵點法

  1. 光流法如何估計相機位姿?
    光流法通過跟蹤圖像像素點,得出兩幀間角點的匹配關係,當存在一系列匹配點之後,即可使用三角測量、PnP、ICP等方法估計相機位姿。
  2. 光流法與直接法的區別是什麼?
    光流法:是基於像素的光度不變性假設,跟蹤圖像像素點的方法,描述了像素在圖像中的運動。當使用光流法跟蹤圖像特徵點得出匹配點對之後,即可以用匹配的特徵點,使用ICP、PnP或對極幾何估計相機運動。光流法本質上還應該劃分到特徵點法中,只不過把提取特徵點、計算描述子、特徵匹配替換成了光流跟蹤而已,之後求解R和t的過程是一樣的。
    直接法
    (1).是由光流法演變而來的,也是基於灰度不變性假設,通過最小化光度誤差(或稱爲測量誤差)來優化R和t。直接法將獲取匹配點對(數據關聯關係)與計算相機位姿放到同一個非線性最小二乘問題中,而特徵點法是先得出匹配點,再進行非線性優化得出相機位姿,是分步進行的。
    (2).區別:光流僅估計了像素間平移,但沒有用到相機本身的幾何結構、沒有考慮到相機的旋轉和圖像的縮放、對於邊界上的點,光流不好追蹤,但直接法則考慮了這些信息;
    (3).直接法流程:假設有兩個幀,運動未知,但有初始估計R,t(通過經驗值設定);第一幀上看到了點P,投影爲P1;按照初始估計,將P1轉到第二幀,得出P在第二幀上投影P2;通過最小化P1與P2點的灰度誤差來優化初始估計R、t。以上是定位過程,建圖過程如下:當確定最優的R、t後,即可重投影得出3D點座標。
    特徵點法
    特徵點法通過特徵匹配得出2D-2D匹配點,使用對極幾何即可計算相機位姿R、t,進一步通過最小化重投影誤差優化R、t,得出最優的相機位姿。不同與直接法的地方在於,特徵點法使用對極幾何(或PnP、ICP)計算出的R、t作爲位姿初值,最小化重投影誤差進行優化,而直接法則使用經驗值設定的R、t作爲初值,使用最小化灰度誤差進行優化。

視覺SLAM

  1. 視覺SLAM存在的問題
    雖然雙目和RGBD不存在初始化化和尺度漂移問題,但是視覺SLAM仍然存在很多共性問題。相機運動太快會導致圖像模糊、相機視野不夠會導致匹配特徵點少、計算量太大(特徵提取和匹配)、遮擋、特徵缺失、動態物體或光源干擾等。

IMU

  1. 使用IMU優點
    IMU能幫助單目確定尺度;
    IMU能測量快速的運動;
    IMU在相機被遮擋時亦能提供短時間的位姿估計;
    視覺SLAM相鄰兩幀之間沒有約束關係,優化誤差函數是重投影誤差;IMU增加了相鄰幀之間的約束關係,

圖像處理

  1. 什麼是ORB特徵,ORB特徵的旋轉不變性是如何做的,BRIEF算子是怎麼提取的。
    ORB特徵是對FAST特徵點檢測方法與BRIEF特徵描述子進行結合和改進的特徵點檢測方法;FAST特徵點不具備方向,ORB使用矩表示特徵點的主方向,有了主方向就可以解決了BRIEF描述子不具備旋轉不變性的問題了。方式:關鍵在於其建立座標系的方式,ORB在計算BRIEF描述子時是以關鍵點爲圓心、以關鍵點和取點區域的形心的連線爲X軸建立2維座標,這種方式保證了在不同的旋轉角度下,當以同一個取點模式取出的點是相同的,這就解決了旋轉不變性的問題???
    ORB並未解決尺度不變性,OpenCV上的實現使用了高斯金字塔來保證其尺度不變性。
    參考:圖像特徵點—ORB特徵點

旋轉&點雲

  1. 機器人學中表示旋轉的方式有哪些?區別是什麼?
    表示旋轉的方式有4種:旋轉矩陣、旋轉向量、歐拉角、四元數;
    區別:
    旋轉矩陣:用9個變量描述3個自由度,具有冗餘,不夠緊湊;
    旋轉向量:3維,使用向量描述旋轉,向量的方向與旋轉軸一致、向量長度等於旋轉角,即李代數。
    歐拉角:3維,比較直觀,將一個旋轉拆分成了繞3個座標軸的旋轉,如RPY指橫滾、俯仰、偏航角度,指繞固定軸XYZ、繞旋轉之後的軸:ZYX。
    四元數:4維,旋轉向量與歐拉角雖然緊湊但具有奇異性,四元數緊湊、沒有奇異性;使用1個實部、3個虛部表示。
  2. 有哪些點雲匹配算法?原理是什麼?
    點雲匹配算法:ICP、

其他

  1. 你還有什麼問題?
    可以從以下方面進行提問:(1) 部門(2) 業務範圍(3) 培養方式(4) 工作模式(5) 後續通知時間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章