CTRV Motion Model


Motion Models

資料為 Udacity 課程內容

在上一篇 EKF 中,我們其實假設的是 constant velocity model (CV),也就是如下的關係式
xk=Fxk1+νkxk=(pxpyvxvy),F=(10Δt0010Δt00100001)


正好滿足 Kalman Filter 中 State-space model 的假設,但這樣的 motion model 很明顯太單純了,因為車子總是在變速且轉彎。因此真實在使用的時候不會用 CV model,那會用什麼呢? 以下為幾種可用的:

  • constant turn rate and velocity magnitude model (CTRV)
  • constant turn rate and acceleration (CTRA)
  • constant steering angle and velocity (CSAV)
  • constant curvature and acceleration (CCA)

Udacity 在這次的 project 中讓我們使用了 CTRV,而此 model 的 state vector x 定義如下:
x=(pxpyvψ˙ψ)



其中 px,pyx,y 座標位置,v 是速度的 magnitude,ψ 是速度的向量與水平軸的夾角稱 yaw angel,最後的 ˙ψ 則是該夾角的變化率稱 yaw rate。
而 CTRV 假設的是 v˙ψ 是 constant。而此 model 已不是一個線性系統了,也就是無法用 matrix 來表達,所以我們將式(1)改為如下的表達方式:
xk+1=f(xk,νk)

如何將 function f 寫成遞迴式子呢? 請看下一段


CTRV State Vector Recursion

我們先忽略 noise νk 這項,晚點再加回來。State vector 隨時間變化的式子如下:
xk+1=xk+tk+1tk[˙px(t)˙py(t)˙v(t)˙ψ(t)¨ψ(t)]dtxk+1=xk+[tk+1tkv(t)cos(ψ(t))dttk+1tkv(t)sin(ψ(t))dt0˙ψkΔt0]


注意到 CTRV 的假設 v˙ψ 是 constant,也就會造成式(5)中 ˙v(t)=¨ψ(t)=0,且從時間 kk+1˙ψ(t) 都等於 ˙ψk,也因此得到式(6)。
但是我們仍然要處理式(6)前兩項的積分,首先一樣基於CTRV假設 v(t)=vk 對於時間 kk+1 都是一樣,所以提到積分外面。然後由於 yaw rate 是 constant,因此 ψ(t) 可以明確表示出來,總之改寫如下:
xk+1=xk+[vktk+1tkcos(ψk+˙ψk(ttk))dtvktk+1tksin(ψk+˙ψk(ttk))dt0˙ψkΔt0]

然後沒什麼好說的,就積它吧:
xk+1=xk+[vk˙ψk(sin(ψk+˙ψkΔt)sin(ψk))vk˙ψk(cos(ψk+˙ψkΔt)+cos(ψk))0˙ψkΔt0]=xk+Deterministick

這邊有一個實作上需要避免的地方,就是當 ˙ψk=0 時,上式的第1,2項會除0。不過我們知道當 ˙ψk=0 表示車子是直直往前開,yaw angle不會改變,因此實際上可以用如下來計算:
xk+1=xk+[vkcos(ψk)Δtvksin(ψk)Δt0˙ψkΔt0]=xk+Deterministick


Recursion With Noise Term

Noise term vk 這裡是假設如下:
vk=[va,kv¨ψ,k]

第一個 term 是加速度的 noise,而第二個表示 yaw rate 的變化率。考慮如果有這兩項 noises 的話,並且假設時間 kk+1 這兩個 noises 的值是固定的,那麼 state vector 會變成如下:
xk+1=xk+Deterministick+[12(Δt)2cos(ψk)va,k12(Δt)2sin(ψk)va,kΔtva,k12(Δt)2v¨ψ,kΔtv¨ψ,k]xk+1=xk+Deterministick+Stochastick


第三項是速度 v 會被加速度 va,k 這種 noise 怎麼影響,所以很明顯是線性增加,同理第四和第五項也很容易得到。第一和第二項,x and y 的位置這裡就比較麻煩,因此採用的是一個近似而已。
這邊假設 yaw rate 沒有太高的情況下,下圖的兩個紅色圈圈位置應該是很接近,因此我們可以考慮走直線的紅色圈圈位置,也就得到了(11)第一二項的近似值。


Summary All CTRV

省略解釋,寫出 state recursion 的計算。
x=(pxpyvψ˙ψ)

if ˙ψk0, then
xk+1=xk+Deterministick+Stochastick
where
Deterministick=[vk˙ψk(sin(ψk+˙ψkΔt)sin(ψk))vk˙ψk(cos(ψk+˙ψkΔt)+cos(ψk))0˙ψkΔt0]


and
Stochastick=[12(Δt)2cos(ψk)va,k12(Δt)2sin(ψk)va,kΔtva,k12(Δt)2v¨ψ,kΔtv¨ψ,k]

otherwise ˙ψk=0, then
xk+1=xk+Deterministick+Stochastick
where
Deterministick=[vkcos(ψk)Δtvksin(ψk)Δt0˙ψkΔt0]


Unscented Kalman Filter 簡介

由於 CTRV 是非線性的,會破壞 State-space model 的線性假設,例如下圖中原先紅色的高斯分布經過非線性轉換後分布為黃色。不過我們知道 EKF 可以利用 Jaccobian matrix 做線性逼近計算,所以我們同樣可以計算。

但要計算上述非線性系統的 Jaccobian matrix 實在顯得有點複雜,好在 Unscented KF 可以完全避開這個麻煩。它利用選擇幾個代表的 candidates vectors,叫做 Sigma Points,去計算經過非線性轉換後的值,然後就可以得到 output domain 的 mean 和 covariance matrix,也就是上圖的綠色高斯分布。
這邊要注意的是,output domain 的真實分佈不是高斯分布(黃色),但我們仍然將它當成是高斯分布(綠色)去計算 mean 和 covariance matrix,因為這樣才能繼續套用 Kalman filter 的方法。說到這可知道 UKF 仍然只是逼近,不過根據 Udacity 的說法,實際應用上 UKF 是很快 (不用計算 Jaccobian) 且實際上效果很好!
下回預告,UKF完整介紹。