自动驾驶算法-滤波器系列(三)——不同运动模型(CV、CA、CTRV、CTRA)的建模和推导

CV & CA & CTRV & CTRA

  • 0. 运动模型简介
  • 1. CV模型
  • 2. CA模型
  • 3. CTRV模型
  • 4. CTRA模型


上一篇文章主要讲解了不同卡尔曼滤波的原理和特点,其中提到状态预测过程和状态更新两个主要的过程。在将卡尔曼滤波应用在车辆状态跟踪的问题中时,状态预测过程其实就是根据不同的运动模型来对车辆目标的状态进行预测。不同的运动模型是对实际车辆目标的运动过程进行一定的简化来建构的,其中包括一次运动模型和更高级的二次运动模型。本篇文章就是选用不同运动模型来分别构建卡尔曼滤波的模型(包括状态转移矩阵,过程噪声模型的构建和推导,以及不同模型对应的各个矩阵维度的分析)。

0. 运动模型简介

首先要明确的一点是,不管是什么运动模型,本质上都是为了帮助我们简化问题,所以我们可以根据运动模型的复杂程度来进行分类。

一次运动模型(也别称为线性运动模型):

  • 恒定速度模型(Constant Velocity, CV)
  • 恒定加速度模型(Constant Acceleration, CA)

二次运动模型

  • 恒定转率和速度模型(Constant Turn Rate and Velocity, CTRV)
  • 恒定转率和加速度模型(Constant Turn Rate and Acceleration, CTRA)

CTRV目前多用于机载追踪系统(飞机),这些二次运动模型大多假定速度 v v v和 偏航角速度(yaw rate) ω \omega ω没有关系,因此,在这类运动模型中,由于偏航角速度测量的扰动(不稳定),即使车辆没有移动,我们的运动模型下的角速度也会发生细微的变化。

为了解决这个问题,速度 v v v和 偏航角速度 ω \omega ω 的关联可以通过设定转向角 Φ \Phi Φ恒定来建立,这样就引出了恒定转向角和速度模型(Constant Steering Angle and Velocity,CSAV); 另外,速度可以别假定为线性变化的,进而引出了常曲率和加速度模型(Constant Curvature and Acceleration,CCA)。

这些运动模型的关系如图:
自动驾驶算法-滤波器系列(三)——不同运动模型(CV、CA、CTRV、CTRA)的建模和推导_第1张图片

本篇文章暂时只针对CV, CA, CTRV, CTRA四种运动模型进行建模和推导分析。

1. CV模型

恒定速度模型,(CV,Constant Velocity),模型的速度不变。恒定速度模型的状态空间:
x = ( x , y , v x , v y ) T x=(x,y,v_x,v_y)^T x=(x,y,vx,vy)T
依次为 x x x坐标, y y y坐标, x x x速度, y y y速度。

对于 x = ( x , y , v x , v y ) T x=(x,y,v_x,v_y)^T x=(x,y,vx,vy)T,推导运动模型以及状态转移矩阵。
x k + 1 = A k x k + B u k + ω k z k + 1 = H x k + 1 + υ k + 1 x_{k+1}=A_kx_{k}+Bu_k+\omega_k\\ z_{k+1}=Hx_{k+1}+\upsilon_{k+1} xk+1=Akxk+Buk+ωkzk+1=Hxk+1+υk+1

A A A是状态转移矩阵, B B B是可选的控制输入 u k u_k uk的增益,在大多数实际情况下并没有控制增益,所以 B u k Bu_k Buk这一项为零; ω k \omega_k ωk代表了过程噪声,它对应了每个分量的噪声,是期望为0,协方差矩阵为 Q Q Q的高斯白噪声。

观测方程中, z k + 1 z_{k+1} zk+1 m m m阶向量,状态变量是 n n n阶向量。 H H H m ∗ n m*n mn阶矩阵,代表状态变量 x k + 1 x_{k+1} xk+1对测量变量 z k + 1 z_{k+1} zk+1的增益。 观测噪声 υ k + 1 \upsilon_{k+1} υk+1是期望为0,协方差矩阵为 R R R的高斯白噪声。

已知上一时刻的状态,推导下一时刻的状态,因为是匀速模型速度不变,故可以根据物理原理 s = s 0 + v Δ t s=s_0+v\Delta t s=s0+vΔt建模:
x k + 1 = { x y v x v y } k + 1 = { 1 0 Δ t 0 0 1 0 Δ t 0 0 1 0 0 0 0 1 } { x y v x v y } k x_{k+1}=\left\{\begin{matrix}x \\ y \\v_x \\v_y\end{matrix}\right\}_{k+1}=\left\{\begin{matrix}1 & 0 & \Delta t & 0\\0 & 1 & 0 & \Delta t\\0 & 0 & 1 & 0\\0 & 0 & 0 &1\end{matrix}\right\}\left\{\begin{matrix}x \\ y \\v_x \\v_y\end{matrix}\right\}_{k} xk+1=xyvxvyk+1=10000100Δt0100Δt01xyvxvyk

上式中的4*4的矩阵即为状态转移矩阵 A A A。很显然,车辆不一定会以恒定的速度运动,所以过程包含了一定的过程噪声。在车辆的状态估计中的过程噪声其实就是车的加速度。由分析可知,影响速度的两个参数量, a x a_x ax a y a_y ay。推导出加速度与位移的关系式 s = 1 2 a Δ t 2 s=\frac{1}{2}a{\Delta t}^2 s=21aΔt2,即可得到过程噪声 ω \omega ω

ω = { 1 2 a x Δ t 2 1 2 a y Δ t 2 a x Δ t a y Δ t } = { 1 2 Δ t 2 0 0 1 2 Δ t 2 Δ t 0 0 Δ t } { a x a y } = G u \omega=\left\{\begin{matrix}\frac{1}{2}a_x{\Delta t}^2 \\\frac{1}{2}a_y{\Delta t}^2 \\a_x\Delta t\\a_y\Delta t\end{matrix}\right\}=\left\{\begin{matrix}\frac{1}{2}{\Delta t}^2 & 0 \\0 & \frac{1}{2}{\Delta t}^2 \\\Delta t & 0\\0 & \Delta t\end{matrix}\right\} \left\{\begin{matrix}a_x\\a_y\end{matrix}\right\}=Gu ω=21axΔt221ayΔt2axΔtayΔt=21Δt20Δt0021Δt20Δt{axay}=Gu

u = { a x a y } G = { Δ t 2 2 0 0 Δ t 2 2 Δ t 0 0 Δ t } u=\left\{\begin{matrix}a_x\\a_y\end{matrix}\right\} \quad G=\left\{\begin{matrix}\frac{\Delta t^2}{2} & 0\\0 & \frac{\Delta t^2}{2}\\\Delta t & 0\\0 & \Delta t \end{matrix}\right\} u={axay}G=2Δt20Δt002Δt20Δt

针对 Q Q Q矩阵,通过最高阶状态量对其他量的扰动来初始化。
关于 Q Q Q矩阵的公式推导:

Q = c o v ( ω ) = E ( ω ω T ) = G E ( u u T ) G T = G { σ a x 2 0 0 σ a y 2 } G T Q=cov(\omega)=E(\omega\omega^T)=GE(uu^T)G^T=G\left\{\begin{matrix}\sigma_{a_x}^2 & 0\\0 & \sigma_{a_y}^2\end{matrix}\right\}G^T Q=cov(ω)=E(ωωT)=GE(uuT)GT=G{σax200σay2}GT

Q = { 0.25 Δ t 4 σ a x 2 0 0.5 Δ t 3 σ a x 2 0 0 0.25 Δ t 4 σ a y 2 0 0.5 Δ t 3 σ a y 2 0.5 Δ t 3 σ a x 2 0 Δ t 2 σ a x 2 0 0 0.5 Δ t 3 σ a y 2 0 Δ t 2 σ a y 2 } Q=\left\{\begin{matrix}0.25{\Delta t}^4{\sigma_{a_x}}^2 & 0 & 0.5{\Delta t}^3{\sigma_{a_x}}^2 & 0\\0 & 0.25{\Delta t}^4{\sigma_{a_y}}^2 & 0 &0.5{\Delta t}^3{\sigma_{a_y}}^2\\0.5{\Delta t}^3{\sigma_{a_x}}^2 & 0 & {\Delta t}^2{\sigma_{a_x}}^2 & 0\\0 & 0.5{\Delta t}^3{\sigma_{a_y}}^2 & 0 & {\Delta t}^2{\sigma_{a_y}}^2\end{matrix}\right\} Q=0.25Δt4σax200.5Δt3σax2000.25Δt4σay200.5Δt3σay20.5Δt3σax20Δt2σax2000.5Δt3σay20Δt2σay2

针对 R R R矩阵,根据Gaussian的假设,取各个观测值最大偏差的三倍。尽管这在许多应用中并不合适(比如某些实验不可重复),但有一个准则还是好于任意值。本文中,针对CV模型中 R R R矩阵设置如下:
R = { σ x 2 0 0 σ y 2 } R=\left\{\begin{matrix}{\sigma_x}^2 & 0\\ 0 & {\sigma_y}^2\end{matrix}\right\} R={σx200σy2}

针对观测矩阵 H H H,我们结合实际情况,要观测的是位置信息,所以H只需要取状态变量的前两个元素就够了,所以 H H H设计成如下形式(注意 H H H矩阵的维度 ):
H = { 1 0 0 0 0 1 0 0 } H=\left\{\begin{matrix}1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\end{matrix}\right\} H={10010000}

针对 P P P矩阵,表示协方差矩阵,这个协方差矩阵只要确定了一开始的 P 0 P_0 P0, 后面可以递推出来,而且初始的协方差矩阵只要不是为0,它的取值对滤波效果影响很小,都能很快收敛。
P 0 = { ∑ x x ∑ y y ∑ v x v x ∑ v y v y } P_0=\left\{\begin{matrix}\sum xx & & & \\ & \sum yy & & \\ & & \sum v_x v_x & \\ & & & \sum v_y v_y\end{matrix}\right\} P0=xxyyvxvxvyvy

总结:

A = { 1 0 Δ t 0 0 1 0 Δ t 0 0 1 0 0 0 0 1 } A=\left\{\begin{matrix}1 & 0 & \Delta t & 0\\0 & 1 & 0 & \Delta t\\0 & 0 & 1 & 0\\0 & 0 & 0 &1\end{matrix}\right\} A=10000100Δt0100Δt01

B = 0 B=0 B=0

Q = { 0.25 Δ t 4 σ x 2 0 0.5 Δ t 3 σ x 2 0 0 0.25 Δ t 4 σ y 2 0 0.5 Δ t 3 σ y 2 0.5 Δ t 3 σ x 2 0 Δ t 2 σ x 2 0 0 0.5 Δ t 3 σ y 2 0 Δ t 2 σ y 2 } Q=\left\{\begin{matrix}0.25{\Delta t}^4{\sigma_x}^2 & 0 & 0.5{\Delta t}^3{\sigma_x}^2 & 0\\0 & 0.25{\Delta t}^4{\sigma_y}^2 & 0 &0.5{\Delta t}^3{\sigma_y}^2\\0.5{\Delta t}^3{\sigma_x}^2 & 0 & {\Delta t}^2{\sigma_x}^2 & 0\\0 & 0.5{\Delta t}^3{\sigma_y}^2 & 0 & {\Delta t}^2{\sigma_y}^2\end{matrix}\right\} Q=0.25Δt4σx200.5Δt3σx2000.25Δt4σy200.5Δt3σy20.5Δt3σx20Δt2σx2000.5Δt3σy20Δt2σy2

H = { 1 0 0 0 0 1 0 0 } H=\left\{\begin{matrix}1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\end{matrix}\right\} H={10010000}

R = { σ x 2 0 0 σ y 2 } R=\left\{\begin{matrix}{\sigma_x}^2 & 0\\ 0 & {\sigma_y}^2\end{matrix}\right\} R={σx200σy2}

P = { ∑ x x ∑ y y ∑ v x v x ∑ v y v y } P=\left\{\begin{matrix}\sum xx & & & \\ & \sum yy & & \\ & & \sum v_x v_x & \\ & & & \sum v_y v_y\end{matrix}\right\} P=xxyyvxvxvyvy

已知状态空间的维度是4x1。

矩阵 A B Q H R P
维度 4x4(与状态空间维度有关) 4×n(n为输入的列数) 4x4 2x4(2是z的维度,4是x的维度) 2x2(与z的维度有关) 4x4

CV模型的局限性:假设速度是常量,简化了车辆实际移动的形式,相对于匀加速模型来说过于简单。

2. CA模型

恒定加速度模型,(CA,constant acceleration),恒定加速度不变。CA模型有两种状态空间表达:
x = ( x , y , v x , v y , a x , a y ) T x=(x,y,v_x,v_y,a_x,a_y)^T x=(x,y,vx,vy,ax,ay)T
依次为 x x x坐标, y y y坐标, x x x速度, y y y速度, x x x加速度, y y y加速度。

对于 x = ( x , y , v x , v y , a x , a y ) T x=(x,y,v_x,v_y,a_x,a_y)^T x=(x,y,vx,vy,ax,ay)T,推导运动模型以及状态转移矩阵。

x k + 1 = A k x k + B u k + ω k z k + 1 = H x k + 1 + υ k + 1 x_{k+1}=A_kx_{k}+Bu_k+\omega_k\\ z_{k+1}=Hx_{k+1}+\upsilon_{k+1} xk+1=Akxk+Buk+ωkzk+1=Hxk+1+υk+1

已知上一时刻的状态,推导下一时刻的状态,因为是匀加速模型加速度不变,故可以根据物理原理 s = s 0 + v Δ t + 1 2 a Δ t 2 s=s_0+v\Delta t+\frac{1}{2}a\Delta t^2 s=s0+vΔt+21aΔt2建模,得到:
x k + 1 = { x y v x v y a x a y } k + 1 = { 1 0 Δ t 0 1 2 Δ t 2 0 0 1 0 Δ t 0 1 2 Δ t 2 0 0 1 0 Δ t 0 0 0 0 1 0 Δ t 0 0 0 0 1 0 0 0 0 0 0 1 } { x y v x v y a x a y } k x_{k+1}=\left\{\begin{matrix}x \\ y \\v_x \\v_y\\a_x\\a_y\end{matrix}\right\}_{k+1}= \left\{\begin{matrix}1 & 0 & \Delta t & 0 & \frac{1}{2}\Delta t^2 & 0\\0 & 1 & 0 & \Delta t & 0 &\frac{1}{2}\Delta t^2\\0 & 0 & 1 & 0 & \Delta t & 0\\0 & 0 & 0 &1 & 0 & \Delta t\\0 &0&0&0&1&0\\0&0&0&0&0&1\end{matrix}\right\} \left\{\begin{matrix}x \\ y \\v_x \\v_y\\a_x\\a_y\end{matrix}\right\}_{k} xk+1=xyvxvyaxayk+1=100000010000Δt010000Δt010021Δt20Δt010021Δt20Δt01xyvxvyaxayk

A A A矩阵为:
A = { 1 0 Δ t 0 1 2 Δ t 2 0 0 1 0 Δ t 0 1 2 Δ t 2 0 0 1 0 Δ t 0 0 0 0 1 0 Δ t 0 0 0 0 1 0 0 0 0 0 0 1 } A= \left\{\begin{matrix} 1 & 0 & \Delta t & 0 & \frac{1}{2}\Delta t^2 & 0 \\0 & 1 & 0 & \Delta t & 0 &\frac{1}{2}\Delta t^2 \\0 & 0 & 1 & 0 & \Delta t & 0 \\0 & 0 & 0 &1 & 0 &\Delta t \\0 &0&0&0&1&0 \\0&0&0&0&0&1\end{matrix}\right\} A=100000010000Δt010000Δt010021Δt20Δt010021Δt20Δt01

在匀加速车辆模型的状态估计中的过程噪声是车的加速度的变化率。由分析可知,影响速度的两个参数量, a ˙ x \dot{a}_x a˙x a ˙ y \dot{a}_y a˙y。推导出位移和加速度变化率的关系式, s = 1 6 a ˙ Δ t 3 s=\frac{1}{6} \dot{a}\Delta t^3 s=61a˙Δt3,既可以得到过程噪声 ω \omega ω
ω = { 1 6 a ˙ x Δ t 3 1 6 a ˙ y Δ t 3 1 2 a ˙ x Δ t 2 1 2 a ˙ y Δ t 2 a ˙ x Δ t a ˙ y Δ t } = { 1 6 Δ t 3 0 0 1 6 Δ t 3 1 2 Δ t 2 0 0 1 2 Δ t 2 Δ t 0 0 Δ t } { a ˙ x a ˙ y } = G u \omega= \left\{\begin{matrix} \frac{1}{6}\dot{a}_x{\Delta t}^3 \\ \frac{1}{6}\dot{a}_y{\Delta t}^3 \\ \frac{1}{2}\dot{a}_x\Delta t^2\\ \frac{1}{2}\dot{a}_y\Delta t^2\\ \dot{a}_x\Delta t \\ \dot{a}_y\Delta t \\ \end{matrix}\right\}= \left\{\begin{matrix}\frac{1}{6}{\Delta t}^3 & 0 \\ 0 & \frac{1}{6}{\Delta t}^3 \\ \frac{1}{2}\Delta t^2 & 0\\0 & \frac{1}{2}\Delta t^2\\ \Delta t & 0\\ 0 & \Delta t\end{matrix}\right\} \left\{\begin{matrix}\dot{a}_x\\\dot{a}_y\end{matrix}\right\}=Gu ω=61a˙xΔt361a˙yΔt321a˙xΔt221a˙yΔt2a˙xΔta˙yΔt=61Δt3021Δt20Δt0061Δt3021Δt20Δt{a˙xa˙y}=Gu

G = { 1 6 Δ t 3 0 0 1 6 Δ t 3 1 2 Δ t 2 0 0 1 2 Δ t 2 Δ t 0 0 Δ t } u = { a ˙ x a ˙ y } G=\left\{\begin{matrix}\frac{1}{6}{\Delta t}^3 & 0 \\ 0 & \frac{1}{6}{\Delta t}^3 \\ \frac{1}{2}\Delta t^2 & 0\\0 & \frac{1}{2}\Delta t^2\\ \Delta t & 0\\ 0 & \Delta t\end{matrix}\right\} \quad u = \left\{\begin{matrix}\dot{a}_x\\\dot{a}_y\end{matrix}\right\} G=61Δt3021Δt20Δt0061Δt3021Δt20Δtu={a˙xa˙y}

针对 Q Q Q矩阵,通过最高阶状态量对其他量的扰动来初始化。关于 Q Q Q矩阵的公式推导:
Q = c o v ( ω ) = E [ ( G u ) ( G u ) T ] = G E [ u 2 ] G T = G { σ a ˙ x 2 0 0 σ a ˙ y 2 } G T Q=cov(\omega)=E[(Gu)(Gu)^T]=GE[u^2]G^T=G\left\{\begin{matrix}{\sigma_{\dot{a}_x}}^2 & 0\\0 & {\sigma_{\dot{a}_y}}^2\end{matrix}\right\}G^T Q=cov(ω)=E[(Gu)(Gu)T]=GE[u2]GT=G{σa˙x200σa˙y2}GT

Q = { 1 6 Δ t 3 0 0 1 6 Δ t 3 1 2 Δ t 2 0 0 1 2 Δ t 2 Δ t 0 0 Δ t } { σ a ˙ x 2 0 0 σ a ˙ y 2 } { 1 6 Δ t 3 0 0 1 6 Δ t 3 1 2 Δ t 2 0 0 1 2 Δ t 2 Δ t 0 0 Δ t } T Q=\left\{\begin{matrix}\frac{1}{6}{\Delta t}^3 & 0 \\ 0 & \frac{1}{6}{\Delta t}^3 \\ \frac{1}{2}\Delta t^2 & 0\\0 & \frac{1}{2}\Delta t^2\\ \Delta t & 0\\ 0 & \Delta t\end{matrix}\right\} \left\{\begin{matrix}{\sigma_{\dot{a}_x}}^2 & 0\\0 & {\sigma_{\dot{a}_y}}^2\end{matrix}\right\} \left\{\begin{matrix}\frac{1}{6}{\Delta t}^3 & 0 \\ 0 & \frac{1}{6}{\Delta t}^3 \\ \frac{1}{2}\Delta t^2 & 0\\0 & \frac{1}{2}\Delta t^2\\ \Delta t & 0\\ 0 & \Delta t\end{matrix}\right\}^T Q=61Δt3021Δt20Δt0061Δt3021Δt20Δt{σa˙x200σa˙y2}61Δt3021Δt20Δt0061Δt3021Δt20ΔtT

这里的R矩阵设置为:
R = { σ x 2 0 0 σ y 2 } R=\left\{\begin{matrix}{\sigma_x}^2 & 0\\ 0 & {\sigma_y}^2\end{matrix}\right\} R={σx200σy2}

针对观测矩阵 H H H,我们结合实际情况,要观测的是位置信息,所以H只需要取状态变量的前两个元素就够了,所以 H H H设计成如下形式(要注意 H H H矩阵的维度):
H = { 1 0 0 0 0 0 0 1 0 0 0 0 } H=\left\{\begin{matrix}1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 &0 & 0\end{matrix}\right\} H={100100000000}

P矩阵如下:
P = { ∑ x x ∑ y y ∑ v x v x ∑ v y v y ∑ a x a x ∑ a y a y } P=\left\{\begin{matrix} \sum xx \\ & \sum yy \\ & & \sum v_x v_x \\ & & & \sum v_y v_y \\ & & & & \sum a_xa_x \\ & & & & &\sum a_ya_y \end{matrix}\right\} P=xxyyvxvxvyvyaxaxayay

总结:
A = { 1 0 Δ t 0 1 2 Δ t 2 0 0 1 0 Δ t 0 1 2 Δ t 2 0 0 1 0 Δ t 0 0 0 0 1 0 Δ t 0 0 0 0 1 0 0 0 0 0 0 1 } A= \left\{\begin{matrix} 1 & 0 & \Delta t & 0 & \frac{1}{2}\Delta t^2 & 0 \\0 & 1 & 0 & \Delta t & 0 &\frac{1}{2}\Delta t^2 \\0 & 0 & 1 & 0 & \Delta t & 0 \\0 & 0 & 0 &1 & 0 &\Delta t \\0 &0&0&0&1&0 \\0&0&0&0&0&1\end{matrix}\right\} A=100000010000Δt010000Δt010021Δt20Δt010021Δt20Δt01

B = 0 B = 0 B=0

Q = { 1 6 Δ t 3 0 0 1 6 Δ t 3 1 2 Δ t 2 0 0 1 2 Δ t 2 Δ t 0 0 Δ t } { σ a ˙ x 2 0 0 σ a ˙ y 2 } { 1 6 Δ t 3 0 0 1 6 Δ t 3 1 2 Δ t 2 0 0 1 2 Δ t 2 Δ t 0 0 Δ t } T Q=\left\{\begin{matrix}\frac{1}{6}{\Delta t}^3 & 0 \\ 0 & \frac{1}{6}{\Delta t}^3 \\ \frac{1}{2}\Delta t^2 & 0\\0 & \frac{1}{2}\Delta t^2\\ \Delta t & 0\\ 0 & \Delta t\end{matrix}\right\} \left\{\begin{matrix}{\sigma_{\dot{a}_x}}^2 & 0\\0 & {\sigma_{\dot{a}_y}}^2\end{matrix}\right\} \left\{\begin{matrix}\frac{1}{6}{\Delta t}^3 & 0 \\ 0 & \frac{1}{6}{\Delta t}^3 \\ \frac{1}{2}\Delta t^2 & 0\\0 & \frac{1}{2}\Delta t^2\\ \Delta t & 0\\ 0 & \Delta t\end{matrix}\right\}^T Q=61Δt3021Δt20Δt0061Δt3021Δt20Δt{σa˙x200σa˙y2}61Δt3021Δt20Δt0061Δt3021Δt20ΔtT

R = { σ x 2 0 0 σ y 2 } R=\left\{\begin{matrix}{\sigma_x}^2 & 0\\ 0 & {\sigma_y}^2\end{matrix}\right\} R={σx200σy2}

H = { 1 0 0 0 0 0 0 1 0 0 0 0 } H=\left\{\begin{matrix}1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 &0 & 0\end{matrix}\right\} H={100100000000}

P = { ∑ x x ∑ y y ∑ v x v x ∑ v y v y ∑ a x a x ∑ a y a y } P=\left\{\begin{matrix} \sum xx \\ & \sum yy \\ & & \sum v_x v_x \\ & & & \sum v_y v_y \\ & & & & \sum a_xa_x \\ & & & & &\sum a_ya_y \end{matrix}\right\} P=xxyyvxvxvyvyaxaxayay

已知状态空间的维度是6x1。

矩阵 A B Q H R P
维度 6x6(与状态空间维度有关) 6×n(n为输入的列数) 6x6 2x6(2是z的维度,4是x的维度) 2x2(与z的维度有关) 6x6

CA模型:相比于CV模型来说,速度由匀速变成了匀加速,但是由于大多数车辆道路是有拐弯的,CA模型会无法正确预测拐弯车辆。

3. CTRV模型

恒定转弯率和速度模型,(CTRV,Constant Turn Rate and Velocity),此模型假设对象沿直线前进,同时还能以固定的转弯速率和恒定的速度大小移动。

状态空间如下:
x = ( x , y , v , ψ , ψ ˙ ) T x=(x, y, v, \psi, \dot{\psi})^T x=(x,y,v,ψ,ψ˙)T

上式中变量依次为: x x x坐标, y y y坐标, v v v速度, ψ \psi ψ偏航角(与 x x x夹角逆时针为正), ψ ˙ \dot{\psi} ψ˙角速度。

由运动方程分析可以得到系统的差分方程:

x ˙ = v x = v cos ⁡ ( ψ ) y ˙ = v y = v sin ⁡ ( ψ ) v ˙ = 0 ψ ˙ = ψ ˙ ψ ¨ = 0 ⇒ { x ˙ y ˙ v ˙ ψ ˙ ψ ¨ } = { v cos ⁡ ( ψ ) v sin ⁡ ( ψ ) 0 ψ ˙ 0 } \begin{matrix} \dot{x} = v_x=v\cos(\psi)\\ \dot{y} = v_y=v\sin(\psi)\\ \dot{v} = 0\\ \dot{\psi} = \dot{\psi}\\ \ddot{\psi} = 0 \end{matrix} \Rightarrow \left\{\begin{matrix} \dot{x}\\ \dot{y}\\ \dot{v}\\ \dot{\psi}\\ \ddot{\psi} \end{matrix}\right\} =\left\{\begin{matrix} v\cos(\psi)\\ v\sin(\psi)\\ 0\\ \dot{\psi}\\ 0\end{matrix}\right\} x˙=vx=vcos(ψ)y˙=vy=vsin(ψ)v˙=0ψ˙=ψ˙ψ¨=0x˙y˙v˙ψ˙ψ¨=vcos(ψ)vsin(ψ)0ψ˙0

假设离散的时间步骤 k k k和持续的时间值 t k t_k tk相关,离散的时间步骤 k + 1 k+1 k+1和持续的时间值 t k + 1 t_{k+1} tk+1相关, t k + 1 t_{k+1} tk+1 t k t_k tk之间的时间差叫做 Δ t \Delta t Δt

ψ ˙ k ≠ 0 \dot{\psi}_k \not=0 ψ˙k=0时,
x k + 1 = x k + { ∫ t k t k + 1 v ( t ) cos ⁡ ( ψ ( t ) ) d t ∫ t k t k + 1 v ( t ) sin ⁡ ( ψ ( t ) ) d t 0 ψ ˙ k Δ t 0 } x_{k+1}=x_{k}+ \left\{\begin{matrix} \int_{t_k}^{t_{k+1}}v(t)\cos(\psi(t))dt\\ \int_{t_k}^{t_{k+1}}v(t)\sin(\psi(t))dt\\ 0\\ \dot{\psi}_k \Delta t\\ 0 \end{matrix}\right\} xk+1=xk+tktk+1v(t)cos(ψ(t))dttktk+1v(t)sin(ψ(t))dt0ψ˙kΔt0

ψ ( t ) = ψ k + ψ ˙ k ( t − t k ) \psi(t)=\psi_k + \dot{\psi}_k(t-t_k) ψ(t)=ψk+ψ˙k(ttk)带入上式中,同时计算积分,得到:
x k + 1 = x k + { v k ψ ˙ k ( sin ⁡ ( ψ k + ψ ˙ k Δ t ) − sin ⁡ ( ψ k ) ) v k ψ ˙ k ( − cos ⁡ ( ψ k + ψ ˙ k Δ t ) + cos ⁡ ( ψ k ) ) 0 ψ ˙ k Δ t 0 } x_{k+1}=x_{k}+ \left\{\begin{matrix} \frac{v_k}{\dot{\psi}_k}(\sin(\psi_k +\dot{\psi}_k \Delta t)-\sin(\psi_k))\\ \frac{v_k}{\dot{\psi}_k}(-\cos(\psi_k +\dot{\psi}_k \Delta t)+\cos(\psi_k))\\ 0\\ \dot{\psi}_k \Delta t\\ 0 \end{matrix}\right\} xk+1=xk+ψ˙kvk(sin(ψk+ψ˙kΔt)sin(ψk))ψ˙kvk(cos(ψk+ψ˙kΔt)+cos(ψk))0ψ˙kΔt0

ψ ˙ k = 0 \dot{\psi}_k=0 ψ˙k=0时,实际上是直线行驶,
x = v k cos ⁡ ( ψ k ) Δ t y = v k sin ⁡ ( ψ k ) Δ t x=v_k\cos(\psi_k)\Delta t\\ y=v_k\sin(\psi_k)\Delta t x=vkcos(ψk)Δty=vksin(ψk)Δt

CTRV模型中,假定车的纵向速度和角速度为恒定值,忽略了速度变化,因此把加速度项的影响放到了误差里面。

噪声分为两个部分,加速度 υ a , k \upsilon _{a,k} υa,k υ ψ ¨ , k \upsilon _{\ddot{\psi},k} υψ¨,k

υ k = { υ a , k υ ψ ¨ , k } \upsilon _k= \left\{\begin{matrix}\upsilon _{a,k}\\\upsilon _{\ddot{\psi},k} \end{matrix}\right\} υk={υa,kυψ¨,k}

其中:
υ a , k ∼ N ( 0 , σ a 2 ) \upsilon _{a,k} \sim N(0,\sigma_a^2) υa,kN(0,σa2)纵向加速度噪声,表示在纵向速度上的不确定性;
υ ψ ¨ , k ∼ N ( 0 , σ ψ . . 2 ) \upsilon _{\ddot{\psi},k} \sim N(0,\sigma_{\mathop{\psi}\limits^{..}}^2) υψ¨,kN(0,σψ..2)角加速度噪声,表示偏航角上的不确定性。

假设误差项,偏航角角加速度和纵向加速度是常量,那么在时间差内产生的误差 a , b , c , d , e a,b,c,d,e a,b,c,d,e可定义为:

a = 1 2 υ a , k cos ⁡ ( ψ k ) Δ t 2 b = 1 2 υ a , k sin ⁡ ( ψ k ) Δ t 2 c = Δ t υ a , k d = 1 2 υ ψ ¨ , k Δ t 2 e = Δ t υ ψ ¨ , k a=\frac{1}{2}\upsilon _{a,k}\cos(\psi_k)\Delta t^2\\ b=\frac{1}{2}\upsilon _{a,k}\sin(\psi_k)\Delta t^2\\ c=\Delta t \upsilon _{a,k}\\ d=\frac{1}{2}\upsilon _{\ddot{\psi},k}\Delta t^2\\ e=\Delta t \upsilon _{\ddot{\psi},k} a=21υa,kcos(ψk)Δt2b=21υa,ksin(ψk)Δt2c=Δtυa,kd=21υψ¨,kΔt2e=Δtυψ¨,k

则完整的状态方程为:
{ x k + 1 y k + 1 v k + 1 ψ k + 1 ψ ˙ k + 1 } = { x k + v k ψ k ˙ ( sin ⁡ ( ψ k + ψ k ˙ Δ t ) − sin ⁡ ( ψ k ) ) y k + v k ψ k ˙ ( − cos ⁡ ( ψ k + ψ k ˙ Δ t ) + cos ⁡ ( ψ k ) ) v k ψ k + ψ k ˙ Δ t ψ k ˙ } + { 1 2 υ a , k cos ⁡ ( ψ k ) Δ t 2 1 2 υ a , k sin ⁡ ( ψ k ) Δ t 2 Δ t υ a , k 1 2 υ ψ ¨ , k Δ t 2 Δ t υ ψ ¨ , k } , ψ k ˙ ≠ 0 \left\{\begin{matrix}x_{k+1}\\y_{k+1}\\v_{k+1}\\\psi_{k+1}\\\dot{\psi}_{k+1}\end{matrix}\right\}= \left\{\begin{matrix} x_k+\frac{v_k}{\dot{\psi_k}}(\sin(\psi_k +\dot{\psi_k} \Delta t)-\sin(\psi_k))\\ y_k+\frac{v_k}{\dot{\psi_k} }(-\cos(\psi_k +\dot{\psi_k} \Delta t)+\cos(\psi_k))\\ v_k\\ \psi_k+\dot{\psi_k} \Delta t\\ \dot{\psi_k} \end{matrix}\right\} + \left\{\begin{matrix} \frac{1}{2}\upsilon _{a,k}\cos(\psi_k)\Delta t^2\\ \frac{1}{2}\upsilon _{a,k}\sin(\psi_k)\Delta t^2\\ \Delta t \upsilon _{a,k}\\ \frac{1}{2}\upsilon _{\ddot{\psi},k}\Delta t^2\\ \Delta t \upsilon _{\ddot{\psi},k} \end{matrix}\right\}, \quad \dot{\psi_k}\neq0 xk+1yk+1vk+1ψk+1ψ˙k+1=xk+ψk˙vk(sin(ψk+ψk˙Δt)sin(ψk))yk+ψk˙vk(cos(ψk+ψk˙Δt)+cos(ψk))vkψk+ψk˙Δtψk˙+21υa,kcos(ψk)Δt221υa,ksin(ψk)Δt2Δtυa,k21υψ¨,kΔt2Δtυψ¨,k,ψk˙=0

{ x k + 1 y k + 1 v k + 1 ψ k + 1 ψ ˙ k + 1 } = { x k + v k cos ⁡ ( ψ k ) Δ t y k + v k sin ⁡ ( ψ k ) Δ t v k ψ k + ψ k ˙ Δ t ψ k ˙ } + { 1 2 υ a , k cos ⁡ ( ψ k ) Δ t 2 1 2 υ a , k sin ⁡ ( ψ k ) Δ t 2 Δ t υ a , k 1 2 υ ψ ¨ , k Δ t 2 Δ t υ ψ ¨ , k } , ψ k ˙ = 0 \left\{\begin{matrix}x_{k+1}\\y_{k+1}\\v_{k+1}\\\psi_{k+1}\\\dot{\psi}_{k+1}\end{matrix}\right\}= \left\{\begin{matrix} x_k+v_k\cos(\psi_k)\Delta t\\ y_k+v_k\sin(\psi_k)\Delta t\\ v_k\\ \psi_k+\dot{\psi_k} \Delta t\\ \dot{\psi_k} \end{matrix}\right\} + \left\{\begin{matrix} \frac{1}{2}\upsilon _{a,k}\cos(\psi_k)\Delta t^2\\ \frac{1}{2}\upsilon _{a,k}\sin(\psi_k)\Delta t^2\\ \Delta t \upsilon _{a,k}\\ \frac{1}{2}\upsilon _{\ddot{\psi},k}\Delta t^2\\ \Delta t \upsilon _{\ddot{\psi},k} \end{matrix}\right\}, \quad \dot{\psi_k}=0 xk+1yk+1vk+1ψk+1ψ˙k+1=xk+vkcos(ψk)Δtyk+vksin(ψk)Δtvkψk+ψk˙Δtψk˙+21υa,kcos(ψk)Δt221υa,ksin(ψk)Δt2Δtυa,k21υψ¨,kΔt2Δtυψ¨,k,ψk˙=0

可知CTRV模型是非线性的,需要线性化处理才能应用卡尔曼滤波。

过程噪声 υ \upsilon υ
υ = { 1 2 a k cos ⁡ ( ψ k ) Δ t 2 1 2 a k sin ⁡ ( ψ k ) Δ t 2 Δ t a k 1 2 ψ ¨ k Δ t 2 Δ t ψ k ¨ } = { 1 2 cos ⁡ ( ψ k ) Δ t 2 0 1 2 sin ⁡ ( ψ k ) Δ t 2 0 Δ t 0 0 1 2 Δ t 2 0 Δ t } { a k ψ k ¨ } = G u \upsilon= \left\{\begin{matrix} \frac{1}{2}a_k\cos(\psi_k)\Delta t^2\\ \frac{1}{2}a_k\sin(\psi_k)\Delta t^2\\ \Delta t a_k\\ \frac{1}{2}\ddot{\psi}_k\Delta t^2\\ \Delta t \ddot{\psi_k} \end{matrix}\right\}= \left\{\begin{matrix} \frac{1}{2}\cos(\psi_k)\Delta t^2 & 0\\ \frac{1}{2}\sin(\psi_k)\Delta t^2 & 0\\ \Delta t & 0\\ 0 & \frac{1}{2}\Delta t^2\\ 0 & \Delta t \end{matrix}\right\}\left\{\begin{matrix}a_k\\\ddot{\psi_k}\end{matrix}\right\} =Gu υ=21akcos(ψk)Δt221aksin(ψk)Δt2Δtak21ψ¨kΔt2Δtψk¨=21cos(ψk)Δt221sin(ψk)Δt2Δt0000021Δt2Δt{akψk¨}=Gu

针对 Q Q Q矩阵,

Q = c o v ( υ ) = E [ ( G u ) ( G u ) T ] = G E [ u 2 ] G T = G { σ a k 2 0 0 σ ψ ¨ k 2 } G T Q=cov(\upsilon)=E[(Gu)(Gu)^T]=GE[u^2]G^T=G\left\{\begin{matrix}{\sigma_{a_k}}^2 & 0\\0 & {\sigma_{\ddot{\psi}_k}}^2\end{matrix}\right\}G^T Q=cov(υ)=E[(Gu)(Gu)T]=GE[u2]GT=G{σak200σψ¨k2}GT

Q = { 1 2 cos ⁡ ( ψ k ) Δ t 2 0 1 2 sin ⁡ ( ψ k ) Δ t 2 0 Δ t 0 0 1 2 Δ t 2 0 Δ t } { σ a k 2 0 0 σ ψ ¨ k 2 } { 1 2 cos ⁡ ( ψ k ) Δ t 2 0 1 2 sin ⁡ ( ψ k ) Δ t 2 0 Δ t 0 0 1 2 Δ t 2 0 Δ t } T Q=\left\{\begin{matrix} \frac{1}{2}\cos(\psi_k)\Delta t^2 & 0\\ \frac{1}{2}\sin(\psi_k)\Delta t^2 & 0\\ \Delta t & 0\\ 0 & \frac{1}{2}\Delta t^2\\ 0 & \Delta t \end{matrix}\right\} \left\{\begin{matrix}{\sigma_{a_k}}^2 & 0\\0 & {\sigma_{\ddot{\psi}_k}}^2\end{matrix}\right\} \left\{\begin{matrix} \frac{1}{2}\cos(\psi_k)\Delta t^2 & 0\\ \frac{1}{2}\sin(\psi_k)\Delta t^2 & 0\\ \Delta t & 0\\ 0 & \frac{1}{2}\Delta t^2\\ 0 & \Delta t \end{matrix}\right\}^T Q=21cos(ψk)Δt221sin(ψk)Δt2Δt0000021Δt2Δt{σak200σψ¨k2}21cos(ψk)Δt221sin(ψk)Δt2Δt0000021Δt2ΔtT

针对 H H H矩阵,需要观测的量为 x , y x,y xy的坐标和偏航角,故 H H H是3x5维的矩阵。
H = { 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 } H=\left\{\begin{matrix}1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 &0 \\ 0 & 0 & 0 & 1 & 0\end{matrix}\right\} H=100010000001000

针对 P P P矩阵,在CTRV模型中,状态的数量 n n n除了要包含5个状态以外,还要包括处理噪声,因为这些处理噪声对模型也有着非线性的影响。在增加了处理噪声的影响以后,我们的不确定性矩阵P就变成了:
P = { P ′ 0 0 Q } P= \left\{\begin{matrix} P\prime & 0\\0 & Q \end{matrix}\right\} P={P00Q}

4. CTRA模型

恒定转弯率和加速度模型。(CTRA,Constant Turn Rate and Acceleration)。同CTRV相比,转速不变,说明在相同时间内转过的角度是一样的,径向速度由匀速变成了匀加速,那么对应的位移会变长。

状态空间:
x = ( x , y , ψ , v , a , ω ) T x=(x,y,\psi,v,a,\omega)^T x=(x,y,ψ,v,a,ω)T

在状态空间中,车辆的加速度和角速度是不会发生变化的。

系统的差分方程:
x . = v x = ( v k + a Δ t ) cos ⁡ ( ψ k + ω Δ t ) y . = v y = ( v k + a Δ t ) sin ⁡ ( ψ k + ω Δ t ) ψ . = ω v . = a a . = 0 ω . = 0 \mathop{x}\limits^. =v_x=(v_k+a\Delta t)\cos(\psi_k+\omega \Delta t)\\ \mathop{y}\limits^. =v_y=(v_k+a\Delta t)\sin(\psi_k+\omega \Delta t)\\ \mathop{\psi}\limits^. =\omega\\ \mathop{v}\limits^. =a\\ \mathop{a}\limits^. =0\\ \mathop{\omega}\limits^. =0\\ x.=vx=(vk+aΔt)cos(ψk+ωΔt)y.=vy=(vk+aΔt)sin(ψk+ωΔt)ψ.=ωv.=aa.=0ω.=0

对差分方程,我们在 t k t_k tk t k + 1 t_{k+1} tk+1上积分,得到 Δ t ( Δ t = t k + 1 − t k ) \Delta t(\Delta t=t_{k+1}-t_{k}) Δt(Δt=tk+1tk)时间 段内的增量。运动方程如下:
x k + 1 = x k + { g x ( x k , Δ t ) g y ( x k , Δ t ) ω Δ t a Δ t 0 0 } x_{k+1}=x_k+ \left\{\begin{matrix} g_x(x_k,\Delta t)\\ g_y(x_k,\Delta t)\\ \omega \Delta t\\ a\Delta t\\ 0\\ 0 \end{matrix}\right\} xk+1=x

你可能感兴趣的:(自动驾驶,算法,计算机视觉)