跳至主要内容

Introduction

Motion planning 是一種解決移動問題的技術,它志在找出一連串動作序列,讓車子移動到終點,要求動作序列需要避免撞到障礙物、動作限制(如最大速度等)、移動路徑需要平滑以及最短路徑。Motion planning 可以分成三部分:Path Planning、Curve Interpolation 和 Trajectory Planning。

Path Planning 將地圖轉換成交叉點口或離散網格節點,Curve Interpolation 則是用一個曲線函數連接節點,使得路徑變得平滑,Trajectory Planning 則是考慮動態障礙物,並計算出每個時間點的運動資訊,找出 cost 最小的當作合適的軌跡。

Introduction to Motion Planning

Motion planning 志在找出一連串動作序列,讓車子移動到終點,動作序列必須要滿足一些要求:

  • 避免撞到障礙物
  • 動作限制 (e.g., maximum speed)
  • 移動路徑需要平滑
  • 最短路徑

Motion planning 可以分成三部分:

  • Path planning
  • Curve interpolation
  • Trajectory planning

Path Planning

Path planning
Path planning

地圖可以被轉換成以上兩種格式:

  1. 交叉點口做為節點
  2. 產生離散網格,每一點做為節點

這些節點稱為 weight points,用來做為 shortest path algorithm 的單位

Path planning
Path planning

問題有三:

  1. 節點分配不均
  2. 形成路徑不夠平滑
  3. 節點資訊不夠 (一階、二階微分資訊)

Curve Interpolation

Curve interpolation
Curve interpolation

用一個 curve function 來連接 weight points 使得路徑變得平滑,並讓路徑點獲得微分資訊。

Trajectory Planning

在動態中可能有移動的物體成為障礙物

Dynamic environment problem
Dynamic environment problem

Trajectory planning 除了規劃路徑外,還要計算出每個時間點的運動資訊,根據預測 obstacle 的未來行動來規劃每個時間點的動作

Trajectory planning
Trajectory planning
  • y-axis 為車子的位移
  • x-axis 為時間

所以會在離散時間點,進行路徑的採樣,找出當中 cost 最小的當作合適的軌跡

Motion Planning Flow

Motion planning flow
Motion planning flow

整個 motion planning 的流程如圖所示

  1. 路徑規劃: 得到空間節點
  2. 內插: 得到較平滑的曲線、微分資訊
  3. 軌跡規劃: 得到運動狀態、時間規劃
  4. 運用前一章所講的 feedback control 來移動車子

Path vs. Trajectory

Motion planning = Path planning + Trajectory planning

  • Path planning (只考慮空間資訊)
Input: Start/End Position{[xs,ys],[xe,ye]}Output: Way Points{[xs,ys],[x1,y1],[x2,y2],,[xe,ye]}\begin{aligned} &\text{Input: Start/End Position} \left\{\left[x_{s}, y_{s}\right],\left[x_{e}, y_{e}\right]\right\} \\ &\text{Output: Way Points} \left\{\left[x_{s}, y_{s}\right],\left[x_{1}, y_{1}\right],\left[x_{2}, y_{2}\right], \ldots,\left[x_{e}, y_{e}\right]\right\} \end{aligned}
  • Trajectory planning (考慮空間及時間資訊)
Inputs: Start/End Position{[xs,ys],[xe,ye]}Curve Functionf(x).Time DensityΔtOutputs: Motion information with time{[x0,y0,v0,a0,t0],[x1,y1,v1,a1,t1],[x2,y2,v2,a2,t2],,[xN,yN,vN,aN,tN]}\begin{aligned} \text{Inputs: } &\text{Start/End Position} \left\{\left[x_{s}, y_{s}\right],\left[x_{e}, y_{e}\right]\right\} \\ &\text{Curve Function} f(x). \\ &\text{Time Density} \Delta t \\\\ \text{Outputs: } &\text{Motion information with time} \\ &\left\{\left[x_{0}, y_{0}, v_{0}, a_{0}, t_{0}\right],\left[x_{1}, y_{1}, v_{1}, a_{1}, t_{1}\right],\left[x_{2}, y_{2}, v_{2}, a_{2}, t_{2}\right], \ldots,\left[x_{N}, y_{N}, v_{N}, a_{N}, t_{N}\right]\right\} \end{aligned}