Curve Interpolation I
Curve Interpolation 將會用一個曲線函數連接節點,使得路徑變得平滑。 這個章節會介紹幾種曲線函數,例如 Explicit、Implicit 和 Parametric,並針對 Parametric Cubic Polynomial Curves 和 Cubic Interpolating Curves 進行了深入解釋。
Curve Interpolation 將會用一個曲線函數連接節點,使得路徑變得平滑。 這個章節會介紹幾種曲線函數,例如 Explicit、Implicit 和 Parametric,並針對 Parametric Cubic Polynomial Curves 和 Cubic Interpolating Curves 進行了深入解釋。
本文探討了三種不同的曲線插值技術,分別是 Hermite Curves、Bezier Curves 和 Cubic B-spline Curves,它們都可以使用控制點來產生出曲線,但本文突出了 Cubic B-spline Curves 的優點,它可以讓兩個區段在接點處,一階微分的值是相同的,甚至可以滿足接點處的二階微分也相同,為了更加平滑的曲線。
Motion planning 是一種解決移動問題的技術,它志在找出一連串動作序列,讓車子移動到終點,要求動作序列需要避免撞到障礙物、動作限制(如最大速度等)、移動路徑需要平滑以及最短路徑。Motion planning 可以分成三部分:Path Planning、Curve Interpolation 和 Trajectory Planning。
本文涵蓋了動力學模型以及不同車輛活動模型、Pure Pursuit Control 的原理,以及 bicycle model 的應用。動力學模型用來描述車子的狀態變化,而 Pure Pursuit Control 則是根據速度和角速度來畫圓弧,將車子移動到前方某個點的位置。bicycle model 則是一個根據方向盤轉角來描述車子原點運動的模型。
第一章將會講述控制理論 (Control Theory) 的基本概念,包括開閉環控制 (Open Loop Control, Close Loop Control)、線性時不變系統 (Linear Time Invariant System) 及 PID 控制的概念。第二章將分析基本的動力學模型及 Differential Drive Vehicle 的動力學模型,並且探討 Kinematic Bicycle Model 的動力學模型,以及 LQR Control 的控制算法,從而對汽車的控制有更多的了解。
本文介紹了 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 的切線空間對應。
這個章節將會介紹 Motion Planning,包括 Path Planning、Curve Interpolation 和 Trajectory Planning 三部份:Path Planning 是將地圖轉換成以交叉點為節點或離散網格為節點的動作,以便在地圖上的行走;Curve Interpolation 是用一個 curve function 來連接 weight points 以達到路徑的平滑與光滑,同時也可以改變路徑的參數,如起點、終點、坡度等;Trajectory Planning 是考慮時間資訊,根據預測 obstacle 的未來行動來規劃每個時間點的動作,以及尋找最佳路徑,使得機器人可以安全且有效地完成任務。
本文介紹了三維圖學中的 Structure from Motion (SfM) 和 SIFT 等方法,以及如何將 camera calibration、Perspective-n-point (PnP),以及 Unknown Structure Initialization 等方法應用在多視圖技術上。
本文介紹 Path Planning,它是為了讓機器人知道如何從一個起點到達另一個終點的策略。它讓我們可以用 Graph G 來表示地圖,其中 G = (V, E),V 是一組點,E 是一組邊。而另外也會有 weights 來求解 single-source shortest path,即給定起點的最短路徑。
這個筆記對應成功大學 Robotic Navigation and Exploration (CS562000) 的課程。目標為了解自駕車原理,最終能夠使用影像辨識技術操縱 NVIDIA JetBot。 你還可以到我的 Github Repository - Robotic-Navigation 查看課程中每個專案的成果與程式碼。
本文介紹了 SLAM 的後端技術,主要涵蓋 Kalman Filter、Extended Kalman Filter 和 EKF-SLAM,它們都是用來預測未知環境並更新位置的算法。Kalman Filter 是一種基於線性和高斯分布的演算法,而 Extended Kalman Filter 則是在原本的 Kalman filter 上加入線性近似的概念,最後結合 EKF 用於 SLAM 的技術就是 EKF-SLAM,它將 pose 和 landmark 整合起來定義成狀態,並重新定義 prediction 以及 observation model。
本文接續 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。
SLAM FrontEnd 主要負責採樣和優化,本文介紹 SLAM FrontEnd 的基本概念,例如辨識影像資料,定義目標函數,以及 ORB SLAM 的結構。ORB SLAM 主要可以分成三大部分,Tracking,Local Mapping 和 Loop Closing。Tracking 負責接收影像資料,並且將影像資料轉換成地圖資料,Local Mapping 負責將地圖資料優化,Loop Closing 負責檢查是否有環路,並且將環路優化。
SLAM (Simultaneous localization and mapping) 問題可以分為前端 (Prediction, Tracking, Mapping) 以及後端 (Filter-based, Graph-based)。SLAM 問題的目標是在不知道自己位置的情況下,能夠做到同時定位自己並且建構地圖。
本文主要介紹 Stanley Control 和 LQR Control,Stanley Control 是漸進穩定的控制方法,透過計算當前最近目標點的切線、法線做為新的座標系,並利用誤差對時間的變化做為誤差穩定的漸進方法。LQR Control 則是利用 cost function 中的 state 和 control 重要性,並利用 dynamic programming 求得最佳控制。
本文將描述如何使用 State lattice planning 和 Frenet Coordinate 來計算自駕車的軌跡。State lattice planning 透過結合空間和時間,採樣軌跡並計算成本,再檢查軌跡是否可用,並選擇成本最低的軌跡。Frenet Coordinate 將車子位置投影到二維路徑,求取一階、二階微分和最低成本。最後,Trajectory Planning 考慮動態障礙物,計算每個時間點的運動資訊,找出最低成本的軌跡。
本文闡述了控制理論 (Control Theory) 的基本概念,包括開閉環控制 (Open Loop Control, Close Loop Control)、線性時不變系統 (Linear Time Invariant System) 及 PID 控制的概念。