卡尔曼滤波核心原理是根据系统的估算及协方差、测量值及协方差推算出最优的估计值及协方差。在非线性模型中,扩展卡尔曼滤波丢弃了高阶项,当状态向量复杂时候,求雅克比矩阵难度也会上升。而UKF类似于将高斯分布中的均值,方差通过非线性方程处理后,去匹配预测方程的非线性变换。
假设初始状态满足高斯分布,如X ∼ N(µ, σ^2 ),如经过非线性状态转移方程以后,如何求变换过后的期望和方差呢?
UKF认为:每一个状态(期望和方差),都可以用几个关键点
(Sigma点)来表示,当作用于非线性函数f(x)时,只需要将Sigma点作用于非线性函数f(x)得到
即可,通过新得到的
(关键点)可以计算新的分布状态
。
通过上面的介绍,出现几个问题:
- 关键点怎么找
- 找到关键点后如何求出新的状态xk+1,Pk+1
1.关键点怎么找
关键点的意义在于能够充分刻画原状态的分布情况:

其中
为当前分布的均值,
为尺度参数,一般采用经验值λ=3−nx,调整其值可以提高逼近精度,
为变量
的维度。用这一组采样点可以近似地表示变量
的高斯分布。
2.求新的状态xk+1,Pk+1
通过上面步骤选取了对应的点,又因为已知状态转移公式(这个必须知道,例如车辆运动学公式),因为Kalman只适用于线性状态转移,而一般模型都是非线性的,想使用Kalman必须转化成线性,UKF就是要解决这个问题。
通过状态转移得到新的点,下面计算新的状态:
- 计算函数映射后的均值和方差
均值计算方式: ,其中
是新计算出的点,
为每个点的权重。
方差计算方式:
,是新点集的均值,
为每个点的权重。
2. 计算权重
和
:
:在i==0时:
, 在i!=0时:
= ![]()
:在i==0时: , 在i!=0时:
= ![]()
其中 第一步中使用过的尺度参数,
的取值一般在
区间内;
为状态分布参数,对高斯分布的变量,
最优,如果状态变量是标量的话,则
最优。
- 对非线性函数的概率密度分布进行近似,而不是对非线性函数做近似,算法实现不受模型复杂度的影响;
- 所得到的的非线性函数的统计量的准确性可以达到三阶,而之前EKF的准确性只能达到一阶;
- 无需计算Jacobi矩阵,这样就能处理不可导的非线性函数。
上面讲到UKF如何解决最关键的协方差矩阵的传递,下面介绍UKF的全过程
简化UKF滤波算法的流程为:
(1)初始化
(2)状态估计
①计算Sigma点

②时间传播方程



③状态更新方程
以上就是简化UKF滤波算法的全部过程。
扩维UKF滤波算法(噪声隐含)
系统的状态转移方程和观测方程为
, 
, 
此时需要对状态变量进行扩展,得到增广状态向量
增广状态的均值和协方差矩阵分别为
其中
,
分别表示状态噪声和观测噪声的维度。
扩维UKF滤波算法的流程为:
(1)初始化:
(2)状态估计
①计算Sigma点
表示增广状态的维度。
②时间传播方程
③状态更新方程
以上就是扩维UKF滤波算法的全部过程,简化UKF算法的Sigma点数为
,而扩维UKF算法的Sigma点数为
。可见,处理加性噪声的简化UKF的Sigma点较处理隐含噪声的扩维UKF要少许多,因此计算量也要更少。
本文深入解析无迹卡尔曼滤波(UKF)的工作原理,包括关键点选择、状态更新及协方差矩阵传递等核心步骤。通过对比扩展卡尔曼滤波(EKF),展示UKF在处理非线性系统上的优势,如更高的准确性和无需计算雅克比矩阵。
3324

被折叠的 条评论
为什么被折叠?



