Robotic Navigation and Exploration
這個筆記對應成功大學 Robotic Navigation and Exploration (CS562000) 的課程。目標為了解自駕車原理,最終能夠使用影像辨識技術操縱 NVIDIA JetBot。 你還可以到我的 Github Repository - Robotic-Navigation 查看課程中每個專案的成果與程式碼。
Overview
🗃️ 1 - Kinetic Model and Vehicle Control
3 個項目
🗃️ 2 - Motion Planning
5 個項目
📄️ 3 - SLAM Problem
SLAM (Simultaneous localization and mapping) 問題可以分為前端 (Prediction, Tracking, Mapping) 以及後端 (Filter-based, Graph-based)。SLAM 問題的目標是在不知道自己位置的情況下,能夠做到同時定位自己並且建構地圖。
📄️ 4 - SLAM Back-end I
本文介紹了 SLAM 的後端技術,主要涵蓋 Kalman Filter、Extended Kalman Filter 和 EKF-SLAM,它們都是用來預測未知環境並更新位置的算法。Kalman Filter 是一種基於線性和高斯分布的演算法,而 Extended Kalman Filter 則是在原本的 Kalman filter 上加入線性近似的概念,最後結合 EKF 用於 SLAM 的技術就是 EKF-SLAM,它將 pose 和 landmark 整合起來定義成狀態,並重新定義 prediction 以及 observation model。
📄️ 5 - SLAM Back-end II
本文接續 SLAM Back-end I,主要介紹了 Filter-based Back-end、Grid-based Back-end 以及 Graph-based Back-end。 第一部分主要介紹 Particle Filter、Sampling 以及 Sequential Importance Sampling (SIS) 和 Sequential Importance Resampling (SIR),以及由此衍生出的 Fast-SLAM 方法。 第二部分主要介紹 Occupancy Grid Map,以及如何利用 Laser Beam Model 更新地圖狀態以及 Particle weighting,最後介紹了 Grid map 套用 Fast-SLAM 的完整過程。 第三部分主要介紹 Graph Optimization 的方法,以及用 ICP algorithm 找出兩個 scan 之間的對應關係。接著介紹 Map & Pose 以及 Grid-based SLAM。
📄️ 6 - Multi-view Geometry
本文介紹了三維圖學中的 Structure from Motion (SfM) 和 SIFT 等方法,以及如何將 camera calibration、Perspective-n-point (PnP),以及 Unknown Structure Initialization 等方法應用在多視圖技術上。
📄️ 7 - Lie group and Lie algebra
本文介紹了 Lie Group 和 Lie Algebra,他們可以用來解決 3D 時的最佳化問題,特別是計算 Rotation Matrix。Lie Group 是把所有合法的 Rotation Matrix 集合起來稱為 Special Orthogonal Group (SO),以及如果想描述 Translation 時就要加入 t 來組成 Special Euclidean group (SE)。而 Lie Algebra 由 $\Phi$ 組成,與 Lie Group 的切線空間對應。
📄️ 8 - SLAM Front-end
SLAM FrontEnd 主要負責採樣和優化,本文介紹 SLAM FrontEnd 的基本概念,例如辨識影像資料,定義目標函數,以及 ORB SLAM 的結構。ORB SLAM 主要可以分成三大部分,Tracking,Local Mapping 和 Loop Closing。Tracking 負責接收影像資料,並且將影像資料轉換成地圖資料,Local Mapping 負責將地圖資料優化,Loop Closing 負責檢查是否有環路,並且將環路優化。