目录
- 0 引言
- 1 无迹变换
-
- 1.1 什么是无痕变换?
- 1.2 一般形式的无痕变换
- 1.3 比例无痕变换
- 2 无迹卡尔曼滤波的假设
-
- 2.1 假设与卡尔曼滤波器相同
- 2.2 与卡尔曼滤波不同的假设
- 3 卡尔曼滤波算法框架
-
- 3.1 无迹卡尔曼滤波器在可加性噪声条件下
- 3.2 无迹卡尔曼滤波器在非可加性噪声条件下
- 4 基于毫米波雷达和无波雷达和无迹卡尔曼滤波的目标跟踪
-
- 4.1 系统分析
-
- 4.1.1 状态转移过程分析
- 4.1.2 观测过程分析
- 4.2 代码实现
- 5 总结
- 参考
0 引言
在之前的文章《从贝叶斯滤波到扩展卡尔曼滤波》中,我们讲述了非线性高斯系统的状态转移函数,扩展卡尔曼滤波通过一级泰勒级数扩展 f ( x ) f(x) f(x) 和(或)观测函数 h ( x ) h(x) h(x) 线性化,然后使用标准的卡尔曼滤波框架来实现状态过滤过程。扩展卡尔曼滤波器有两个明显的缺点:
- 一阶泰勒级数的扩展忽略了二阶以上的高阶项,因此精度一般(通常称为一阶精度),对高度非线性问题效果较差;
- 雅可比矩阵的计算比较繁琐,容易出错。
为解决强非线性条件下的状态估计问题,1995 年,S. J. Julier 和 J. K. Uhlmann 等人提出无迹卡尔曼滤波(Unscented Kalman Filter,UKF)算法,并由 E. A. Wan 和 R. Vander Merwe 等人进一步完善。
卡尔曼滤波器基于无痕迹变化(Unscented Transform,UT),无痕变换研究如何通过采样点捕捉高斯随机变量的非线性变量的后验分布。通过无痕变换获得相应的统计特性,然后结合标准卡尔曼滤波框架获得无痕卡尔曼滤波。标准无痕卡尔曼滤波器的计算量相当于扩展卡尔曼滤波器,但滤波器的精度优于扩展卡尔曼滤波器。
1 无迹变换
1.1 什么是无痕变换?
无痕变换的核心理念:
与任何非线性函数或变换相比,近似概率分布相对容易。
无痕变换需要解决的问题是,已知随机变量的概率分布下是随机向量)的概率分布(平均值和方差),要求其通过非线性函数 g ( ? ) g(·) g(?) 变换后的概率分布。基于上述思想,无痕变换的主要步骤如下:
(1) 根据随机变量的概率分布,并为采样点(均值权重和方差权重),我们通常称采样点为 sigma 点;
(2) 将每一个 sigma 点进行,得到新的 sigma 点;
(3) 非线性变换后的新 sigma 点进行,加权平均值与加权方差分别计算,加权平均值与加权方差分别计算非线性变换后随机变量的概率分布。
如下图所示(概率机器人第一) 3.4 节 P49):
卡尔曼滤波器中使用的确定性采样方法是 sigma 点采样方法的具体实现,卡尔曼滤波器的中心差(Central Difference Kalman Filter,CDKF)使用了 sigma 另一种具体实现点采样方法,我们统称这种滤波算法 sigma 点卡尔曼滤波器(Sigma-Point Kalman Filter,SPKF)算法。
根据历史发展背景,无痕变换主要包括两种形式:一般形式的无痕变换和比例无痕变换(Scaled Unscented Transform,SUT)。两种无痕变换的区别主要体现在采样规则和权重计算上,下面将分别阐述。
1.2 一般形式的无痕变换
假设存在 n n n 维随机向量 X X X,其服从均值 μ x \mu_x μ
X ∼ N ( μ x , Σ x ) X \sim \mathcal{N}(\mu_x, \Sigma_x) X∼N(μx,Σx)
将 X X X 经过非线性函数 g ( ⋅ ) g(·) g(⋅) 进行变换,得到随机向量 Y Y Y,我们使用一般形式的无迹变换估计 Y Y Y 的概率分布。一般形式的无迹变换最早由 Julier 等人提出,其主要操作流程如下所述:
一般形式的无迹变换只涉及一个外部引入参数 κ \kappa κ,各 sigma 点( 2 n + 1 2n+1 2n+1 个)的权重分配如下:
W ( i ) = { κ n + κ i = 0 1 2 ( n + κ ) i = 1 , ⋅ ⋅ ⋅ , 2 n W^{(i)} = \begin{cases} \frac{\kappa}{n+\kappa} & i = 0 \\ \frac{1}{2(n+\kappa)} & i = 1, ··· , 2n \end{cases} W(i)={ n+κκ2(n+κ)1i=0i=1,⋅⋅⋅,2n
其中, κ ∈ R \kappa \in \mathbb{R} κ∈R,表征了 sigma 点相对均值的散布程度, κ \kappa κ 越大,非均值处的 sigma 点距离均值越远(参考步骤二),且所占权重越小,而均值处 sigma 点所占权重则相对越大。对于高斯问题, n + κ = 3 n+\kappa = 3 n+κ=3 是一个比较好的选择,对于非高斯问题(是的,无迹变换也适用于非高斯问题), κ \kappa κ 应该选择其它更恰当的值。
通常情况下,siama 点位于均值处及对称分布于主轴的协方差处(每维两个)。按照如下方法采样得到 2 n + 1 2n + 1 2n+1 个 sigma 点,构成 n × ( 2 n + 1 ) n \times (2n + 1) n×(2n+1) 的点集矩阵 X \mathcal{X} X:
X ( i ) = { μ x i = 0 μ x + ( ( n + κ ) Σ x ) ( i − 1 ) i = 1 , ⋅ ⋅ ⋅ , n μ x − ( ( n + κ ) Σ x ) ( i − n − 1 ) i = n + 1 , ⋅ ⋅ ⋅ , 2 n \mathcal{X}^{(i)} = \begin{cases} \mu_x & i = 0 \\ \mu_x + (\sqrt{(n + \kappa)\Sigma_x})^{(i-1)} & i = 1, ··· , n \\ \mu_x - (\sqrt{(n + \kappa)\Sigma_x})^{(i-n-1)} & i = n + 1, ··· , 2n \end{cases} X(i)=⎩⎪⎨⎪⎧μxμx+((n+κ)Σx )(i−1)μx−((n+κ)Σx )(i−n−1)i=0i=1,⋅⋅⋅,ni=n+1,⋅⋅⋅,2n
其中, ( ( n + κ ) Σ x ) ( i − 1 ) (\sqrt{(n + \kappa)\Sigma_x})^{(i-1)} ((n+κ)Σx )(i−1) 表示矩阵 ( n + κ ) Σ x (n + \kappa)\Sigma_x (n+κ)Σx 作 后的第 i − 1 i-1 i−1 列, ( ( n + κ ) Σ x ) ( i − n − 1 ) (\sqrt{(n + \kappa)\Sigma_x})^{(i-n-1)} ((n+κ)Σx )(i−n−1) 同理。
将每个 sigma 点(即 X \mathcal{X} X 的每一列)进行 g ( ⋅ ) g(·) g(⋅) 的非线性变换,得到变换后的新的点集矩阵 Y \mathcal{Y} Y:
Y ( i ) = g ( X ( i ) ) i = 0 , ⋅ ⋅ ⋅ , 2 n \mathcal{Y}^{(i)} = g(\mathcal{X}^{(i)}) \quad i = 0, ··· , 2n Y(i)=g(X(i))i=0,⋅⋅⋅,2n
μ y = ∑ i = 0 i = 2 n W ( i ) Y ( i ) \mu_y = \sum_{i=0}^{i=2n}W^{(i)}\mathcal{Y}^{(i)} μy=i=0∑i=2nW(i)Y(i)
Σ y = ∑ i = 0 i = 2 n W ( i ) [ Y ( i ) − μ y ] [ Y ( i ) − μ y ] T \Sigma_y = \sum_{i=0}^{i=2n}W^{(i)}[\mathcal{Y}^{(i)}-\mu_y][\mathcal{Y}^{(i)}-\mu_y]^T Σy=i=0∑i=2nW(i)[Y(i)−μy][Y(i)−μy]T
1.3 比例无迹变换
从 1.2 节的内容中我们可以发现,当参数 κ < 0 \kappa < 0 κ<0 时,权重 W ( 0 ) = κ n + κ < 0 W^{(0)} = \frac{\kappa}{n+\kappa} < 0 W(0)=n+κκ<0,加权算得的近似协方差可能存在非半正定的情况。为应对该问题,Julier 等人后来提出无迹变换的改进形式——比例无迹变换,并由 Merwe 等人对其进行了简化。比例无迹变换与一般形式的无迹变换的主要区别体现在参数选取与 sigma 点权重计算上,其主要操作流程如下所述:
比例无迹变换引入了四个外部参数: α \alpha α、 β \beta β、 κ \kappa κ 和 λ \lambda λ,各 sigma 点( 2 n + 1 2n+1 2n+