視覺SLAM十四講——筆記+習題解


參考教材——《視覺SLAM十四講》高翔著

第一講 前言

筆記

  • SLAM
    • Simultaneous Localization And Mapping——同時定位與地圖構建
    • 搭載特定傳感器的主體,在沒有環境先驗信息的情況下,在運動過程中建立環境的模型,同時估計自己的運動
    • 本質——對運動主體自身和周圍環境空間不確定性的估計
    • 模塊體系
      • 視覺里程計
      • 后端優化
      • 建圖
      • 回環檢測

習題

第二講 初識SLAM

筆記

  • 單目SLAM

    • 估計的軌跡和地圖,將與真實的軌跡、地圖,相差一個因子,也就是所謂的尺度(scale)
    • 由於單目SLAM無法僅憑圖像確定這個真實尺度,所以又稱為尺度不確定性
  • 雙目SLAM——Stereo

    • 通過視差來測量物體與相機的距離,克服單目無法檢測距離的缺點
    • 由兩個單目相機組成,兩個相機之間的距離(基線baseline)是已知的,我們可以通過基線來估計每個像素的空間位置
    • 對雙目相機進行擴展可以得到多目相機,本質沒有區別
    • 雙目相機測量到的深度范圍與基線相關,基線距離越大,能測量到的就越遠,因此一般雙目相機體積較大
    • 缺點:
      • 配置和標定均較為復雜,其深度量程和精度受雙目的基線與分辨率限制,而且視差的計算非常消耗計算資源,需要使用GPU&FPGA設備加速后才能實時輸出整張圖像的距離信息
      • 因此當先雙目的主要問題是計算量無法解決
  • 深度相機(RGB-D相機)

    • 通過紅外結構光或者Time-of-Flight(ToF)原理,像激光傳感器那樣,通過主動向物體發射光並接受返回的,測出物體離相機的距離
    • 相較於雙目相機,通過物理測量手段,可以節省大量的計算量
    • 在SLAM方面主要用於室內
    • 缺點:測量范圍窄,噪聲大,視野小,易受日光干擾,無法測量投射材質
  • 傳統視覺SLAM流程

    graph a[傳感器數據]-->b[視覺里程計]-->c[非線性優化]-->d[建圖] a[傳感器數據]-->e[回環檢測]-->c[非線性優化]
    • 視覺里程計(Visual Odometry,VO)
      • VO又稱為前端(Front End)
      • 估算相鄰圖像間相機的運動,以及局部地圖的樣子
      • 只計算相鄰時刻的運動而和其他數據沒有關系,可以想象成一條金魚
      • 僅通過VO來估計軌跡會不可避免地出現累計漂移(Accummulating Drift),當一個時刻的角度出現誤差時,之后的不管之后的數據多么精確,都會不可避免地產生誤差。因此為了解決累計漂移問題,需要引入后端優化和回環檢測兩種技術,回環檢測負責把“機器人是否走回原位”的事情檢測出來,后端優化則根據此信息校正整個軌跡的形狀
    • 優化(Optimization)
      • 又稱為后端(Back End)
      • 接受不同時刻視覺里程計測量的相機位姿,以及回環檢測的信息,對他們進行優化,得到全局一致的軌跡和地圖
      • 主要處理SLAM過程中噪聲的問題,即如何從這些帶有噪聲的數據中,估計整個系統的狀態,以及這個狀態估計的不准確性有多大————這被稱作最大后驗概率估計(Mazimum-a-Posteriori,MAP)
      • 視覺SLAM中,前端和計算機視覺研究領域更加相關,比如圖像特征提取與匹配,而后端主要時濾波和非線性優化算法
    • 回環檢測(Loop Closing)
      • 又稱閉環檢測(Loop Closure Detection)
      • 解決位置估計隨時間漂移的問題
      • 判斷機器人是否曾經到達過先前的位置
      • 可以通過圖像間的相似性來完成回環檢測,如果檢測到回環,會把信息提供給后端進行處理
    • 建圖(Mapping)
      • 根據估計的軌跡,建立與任務要求對應的地圖
      • 度量地圖(Metric Map)
        • 強調精確地表示地圖中物體的位置關系
        • 通常用稀疏(Sparse)和稠密(Dense)對其進行分類
          • 稀疏地圖進行了一定程度的抽象,並不需要表達所有物體,在地圖當中選取具有代表性的地標(Landmark)用於表示地圖,其他元素則全部忽略
          • 稠密地圖着重於建模所有看到的東西
        • 二維度量地圖時許多小格子(grid),三維度量地圖則是許多小方塊(Voxel),一個單位含有占據、空閑、未知三狀態,以表達格內是否由物體
      • 拓撲地圖(Topological Map)
        • 強調地圖元素之間的關系
        • 數據結構為圖(Graph),由點、邊組成,只考慮節點間的連通性
        • 放松了地圖對精確位置的需要,去掉地圖細節問題,是更為緊湊的表達方式
        • 不擅長表達具有復雜結構的地圖
    • 如果將工作環境限定在靜態、剛體、光照變化不明顯、沒有人為干擾的場景,那么SLAM系統應該是相當成熟的
  • SLAM問題的數學表述

    • 相機主要處理離散時刻的問題\(t = 1,...,k\),用x表示機器人自身的位置。各個時刻的位置標記為\(x_{1},...,x_{k}\),這些位置構成了軌跡
    • 設地圖由多個路標(Landmark)組成,每個時刻,傳感器會測量到一部分路標點,得到它們的觀測數據
    • 不妨設路標點共有N個,用\(y_{1},...,y_{N}\)表示
    • 在此前提下可以描述
      • 運動 —— 從k-1~k時刻,位置x如何變化
        • 由此抽象出運動方程
          • \(x_{k}=f(x_{k-1},u_{k},w_{k})\)
          • \(u_{k}\)是運動傳感器讀數(輸入)
          • \(w_{k}\)為噪聲
      • 觀測 —— 機器人在k時刻,於\(x_{k}\)處探測到某個路標\(y_{j}\)
        • 由此觀測方程
          • 機器人在\(x_{k}\)位置上看到某個路標點\(y_{j}\),產生了觀測數據\(z_{k,j}\)
          • \(z_{k,j}=h(y_{j},x_{k},v_{k,j})\)
          • \(v_{k,j}\)為觀測噪音
    • 還可以使用參數化描述問題
      • 位姿 —— 由兩個位置和一個轉角來描述
        • \(x_{k}=[x,y,\theta]_{k}^{T}\)
        • 運動傳感器能夠檢測到每兩個時間間隔位置和轉角的變化量\(u_{k}=[\varDelta_{x},\varDelta_{y},\varDelta_{\theta}]_{k}^{T}\)
      • 則運動方程就可以具體化為\( \left[ \begin{array}{c} x\\ y\\ \theta\\ \end{array} \right] _k=\left[ \begin{array}{c} x\\ y\\ \theta\\ \end{array} \right] _{k-1}+\left[ \begin{array}{c} \varDelta x\\ \varDelta y\\ \varDelta \theta\\ \end{array} \right] _k+w_k \)
      • 二維激光傳感器觀測一個2D路標點時,能夠觀測兩個量:路標點與機器人本體之間的距離r和夾角\(\phi\)
        • 我們記路標點為\(y=[p_{x},p_{y}]^{T}\),觀測數據為\(z=[r,\phi]^{T}\)
        • 為保持簡潔,省略下標
      • 則觀測方程可以具體化為\( \left[ \begin{array}{c} r\\ \phi\\ \end{array} \right] =\left[ \begin{array}{c} \sqrt{\left( p_x-x \right) ^2+\left( p_y-y \right) ^2}\\ \arctan \left( \frac{p_y-y}{p_x-x} \right)\\ \end{array} \right] +v \)
    • 最終,SLAM過程可以總結為兩個基本方程:\( \left\{ \begin{array}{c} x_k=f\left( x_{k-1},u_k,w_k \right)\\ z_{k,j}=h\left( y_j,x_k,v_{k,j} \right)\\ \end{array} \right. \)
    • 這兩個方程描述了最基本的SLAM問題:當我們知道測量讀數u,以及傳感器讀數z,如何求解定位問題(估計x)和建圖問題(估計y)
    • 此時我們將SLAM問題建模成一個狀態估計問題:如何通過帶有噪聲的測量數據,估計內部的、隱藏的狀態變量?
      • 問題的求解與兩個方程的具體形式以及噪聲服從哪種分布有關
        • 運動和觀測方程是否為線性
        • 噪聲是否服從高斯分布
      • 可以分為
        • 線性/非線性和高斯/非高斯系統
        • 線性高斯系統(LG系統)是最簡單的,其無偏最優估計可以由卡爾曼濾波器(KF)給出
        • 復雜的非線性非高斯系統(NLNG系統),我們會使用擴展卡爾曼濾波器(EKF)和非線性優化兩大類方法去求解

習題

第三講 三維空間剛體運動

筆記

習題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM