第讲UKF滤波算法
扩展Kalman滤波(EKF)和无迹卡尔曼滤波(ukf)
三、无迹卡尔曼滤波算法(UKF)
假设n维随机向量x : N(x, Px) ,x通过非线性函数y=f(x) 变换后得到n维的随机变量y。通过UT变换可以以较 高的精度和较低的计算复杂度求得y的均值 y 和方 差 Px 。UT的具体过程可描述如下:
三、无迹卡尔曼滤波算法(UKF)
UKF是用确定的采样来近似状态的后验PDF,可以 有效解决由系统非线性的加剧而引起的滤波发散问 题,但UKF仍是用高斯分布来逼近系统状态的后验概 率密度,所以在系统状态的后验概率密度是非高斯 的情况下,滤波结果将有极大的误差。
三、无迹卡尔曼滤波算法(UKF)
: Matlab程序
dax = 1.5; day = 1.5; % 系统噪声
X = zeros(len,4); X(1,:) = [0, 50, 500, 0]; % 状态模拟的初值
for k=2:len
x = X(k-1,1); vx = X(k-1,2); y = X(k-1,3); vy = X(k-1,4);
F(3,4) = 1;
F(4,4) = 2*ky*vy;
2) = 1;
二、扩展Kalman滤波(EKF)算法
function H = JacobianH(X) % 量测雅可比函数
x = X(1); y = X(3);
H = zeros(2,4);
r = sqrt(x^2+y^2);
二、扩展Kalman滤波(EKF)算法
EKF算法是一种近似方法,它将非线性模型在状态 估计值附近作泰勒级数展开,并在一阶截断,用得 到的一阶近似项作为原状态方程和测量方程近似表 达形式,从而实现线性化同时假定线性化后的状态 依然服从高斯分布,然后对线性化后的系统采用标 准卡尔曼滤波获得状态估计。采用局部线性化技术, 能得到问题局部最优解,但它能否收敛于全局最优 解,取决于函数的非线性强度以及展开点的选择。
EKFUKFPF算法的比较程序
EKFUKFPF算法的比较程序在估计理论中,EKF(Extended Kalman Filter),UKF(Unscented Kalman Filter)和PF(Particle Filter)是三种常用的非线性滤波算法。
它们在不同的环境和应用中具有不同的优点和缺点。
下面将对这三种算法进行比较。
首先,EKF是最常用的非线性滤波算法之一、它通过线性化状态转移方程和测量方程来近似非线性问题。
EKF在处理高斯噪声的情况下表现良好,但在处理非高斯噪声时会有较大的误差。
由于线性化过程的存在,EKF对于高度非线性和非高斯问题可能表现不佳。
此外,EKF对系统模型的准确性要求较高,较大的模型误差可能导致滤波结果的不准确性。
其次,UKF通过构造一组代表系统状态的Sigma点,通过非线性映射来近似非线性函数。
相较于EKF,UKF无需线性化系统模型,因此适用于更广泛的非线性系统。
UKF的优点是相对较好地处理了非线性系统和非高斯噪声,但在处理维数较高的问题时,计算开销较大。
最后,PF是一种基于粒子的滤波方法,通过使用一组代表系统状态的粒子来近似概率密度函数。
PF的优点是它可以处理非线性系统和非高斯噪声,并且在系统模型不准确或缺乏确定性时,具有较好的鲁棒性。
由于粒子的数量可以灵活调整,PF可以提供较高的估计精度。
然而,PF的计算开销较大,尤其在高维度的情况下。
综上所述,EKF、UKF和PF是三种常用的非线性滤波算法。
EKF适用于高斯噪声条件下的非线性问题,但对系统模型准确性要求高。
UKF适用于一般的非线性问题,但计算开销较大。
PF适用于非线性和非高斯噪声条件下的问题,并具有较好的鲁棒性,但在计算开销方面具有一定的挑战。
在实际应用中,我们应根据具体问题的性质和要求选择合适的算法。
比如,在低维情况下,EKF是一个可行的选择;在高维或非高斯噪声情况下,可以考虑使用UKF或PF算法。
ukf滤波算法范文
ukf滤波算法范文UKF(Unscented Kalman Filter)是一种基于卡尔曼滤波的非线性滤波算法。
相比于传统的扩展卡尔曼滤波(EKF),UKF通过一种更好的方法来近似非线性系统的概率分布,从而提高了非线性滤波的精确度和鲁棒性。
UKF通过一种称为“无气味变换(unscented transform)”的方法来处理非线性函数。
该方法基于对概率分布的均值和协方差进行一系列的采样点选择,然后通过变换这些采样点来近似非线性函数的传播。
这些采样点被称为“Sigma点”,可以看作是真实系统状态在均值周围的一系列假设状态。
UKF的基本步骤如下:1.初始化:初始化系统状态和协方差矩阵。
2. 预测步骤(Prediction):- 通过生成Sigma点来近似系统状态的概率分布。
- 将Sigma点通过非线性函数进行变换,得到预测状态和预测协方差矩阵。
-计算预测状态的均值和协方差。
3. 更新步骤(Update):- 通过生成Sigma点来近似测量函数的概率分布。
- 将预测状态的Sigma点通过测量函数进行变换,得到预测测量和预测测量协方差矩阵。
-计算预测测量的均值和协方差。
-根据实际测量值和预测测量的概率分布,计算卡尔曼增益。
-更新预测状态和协方差。
UKF相比于EKF具有以下优势:1.不需要对非线性函数进行线性化。
EKF通过一阶泰勒展开来线性化非线性函数,这可能导致误差积累和不稳定性。
UKF通过采样点直接逼近非线性函数,避免了这个问题。
2.更好的估计准确度和收敛性。
UKF通过采样点的选择更好地逼近了真实概率分布,提高了滤波的准确度和收敛性。
3.适用于高维状态空间。
EKF在高维状态空间中存在计算复杂度高和数值不稳定的问题,而UKF则通过更好的采样点选择来解决了这个问题。
4.对初始条件不敏感。
UKF对初始条件的选择不太敏感,可以在一定程度上避免初始条件选择不当导致的滤波失效问题。
尽管UKF相比于EKF有许多优势,但它也存在一些缺点。
UKF法滤波性能分析
UKF 算法滤波性能分析高海南 3110038011一、仿真问题描述考虑一个在二维平面x-y 内运动的质点M ,其在某一时刻k 的位置、速度和M 在水平方向(x )作近似匀加速直线运动,垂直方向(y )上亦作近似匀加速直线运动。
两方向上运动具其中假设一坐标位置为(0,0)的雷达对M显然在笛卡尔坐标系下,该模型运动观测方程为非线性的。
我们根据雷达测量值使用UKF 算法对目标进行跟踪,并与EKF 算法结果进行比较。
二、问题分析1. UKF 滤波跟踪有协方差阵k R 。
ukf 算法步骤如下: (1) 计算σ点1|1i k k --ξ,依据1|1k k --x 和1|1k k --p 生成2n+1个σ点1|1i k k --ξ,0,1,2,2i n =。
在UT 变换时,取尺度参数01.0=α,0=κ,2=β。
(2) 计算σ点|ik k ξ,即()()|1|12|1|02|1||1||110(),0,1,2,2ˆˆˆi i k kk k k nm i k k i k k i n T c i ik k i k k k k k k k k k i i n ωωω---=----=⎧⎪==⎪⎪=⎨⎪⎪=--+⎪⎩∑∑ξf ξxξp ξx ξx Q (3) 计算σ点|1ˆk k -x|1k k -p 通过量测方程对k x 的传播,即(4) 计算输出的一步提前预测,即(5) 获得新的量测后,进行滤波更新:2. 扩展卡尔曼滤波算法分析(1)()()()(())()k k k k k k k k +=+⎧⎨=+⎩x f x w z h x v 的,定义k |1k ˆ=()k k k k-∂=∂x x xf x f xEKF 算法步骤如下:k 时刻的一步提前预测状态预测误差协方差阵为卡尔曼滤波增益为在k 时刻得到新的量测后,状态滤波的更新公式为状态滤波协方差矩阵为三、实验仿真与结果分析N=50,采样时间为t=0.5。
迹如图1所示。
UKF滤波
7.3 UKF 滤波UKF 滤波,仍然采用高斯分布代替状态量的分布,不同的是,通过特别挑选的样本点来表示状态量。
这些样本点完全可以表示出GRV (高斯随机变量)的均值和方差。
即使经过非线性变换(任何非线性变换)后,也能逼近变换后的均值和方差,逼近精度可以达到二阶泰勒展开后的精度。
下面开始介绍UT 变换。
UT 变换:UT 变换是计算随机变量经过非线性变换后的统计特征的一种方法。
考虑非线性函数:(x)y f =,记x 的均值和方差为,x x P 。
现在需要计算y 的统计特性,即ˆ,y yP 。
可以采用下面的方法,构造一个矩阵,矩阵中包含21L +个simga 向量:0 1,,, 1,,2,i i i i L xx i L x i L L -ℵ=ℵ=+=ℵ=-=+ (1)其中:2()L L λακ=+-——为尺度参数;α——确定sigma 点在x 周围的分布范围,4101α-≤≤; κ——尺度参数,其值通常为3L -β——x 分布合作参数,x 分布若为高斯分布,则2β=为最优值。
i 列向量。
(矩阵均方根值可以通过进行柯西因式分解得到)构造x 的样本后,则对应于x 的每个样本点,可以计算对应的y 样本:i ()i y f =ℵ(2)通过y 样本,可以计算,y y P2(m)02(c)0()()Li ii LTy i i i i y W y P W y y y y ==≈≈--∑∑ (3)其中,权重系数i W 可以由下式确定:(m)0()20(m)()11,1,,22()c c i i W L W L W W i LL λλλαβλλ=+=+-++===+ (4)UT 变换不同于蒙特卡洛法,蒙特卡洛法需要产生大量的样本点,而UT 变换不需要。
UT 变换计算非线性函数的统计特性,对于输入为高斯输入的非线性系统,计算精度至少为3阶,对于输入不是高斯输入的非线性系统,计算精度至少可以达到2阶,如果适当选择,αβ 的值,计算精度可以达到3阶或以上。
基于UKF的高斯和滤波算法
A u sa um it r Ba e n UKF Ga s i n S F le s d o
N N io—j’LA G Jn—l IGXa u ,I N u i
(.X’nIstt o P s n eeo u ia o s o p trSineD p r e t inS ax 70 6 ,C ia 1 i tue f ot a dT lcmm nct n ,C m ue cec e at n,X’ h ni 10 1 hn ; a n i s i m a
2 .中国 科学 院声学研究所 , 北京 10 8 ) 00 0
摘要 : 了扩展卡尔曼滤波算法 和无迹 变换 (ncne asr ao U ) 介绍 us t t n o t n,T 算法 , e dr fm i 并对 扩展卡尔曼滤波算法 ( K ) E F 和无
迹卡尔曼滤波算法 ( K ) U F 进行 比较 , 阐明了 U F K 优于 E F 在此基 础上 , K。 提出了一种基于 U s n d变换( T 的高斯 和滤 nc t ee u)
波算 法 , 该算法首先通过合并准则得到适当个数 的混合高斯模型 , 逼近系统中非高斯噪声的概率 密度 ; 然后 , 再通过 u 算法 T 进行滤波 。 最后分别对基于 E F U F的滤波方法进行实验 , K和 K 并对 实验结果进行 比较与分析 , 验证 了算法 的有效性和优 良
水下组合导航UKF/PF自适应滤波算法
20 年 1 08 2月
武汉理工大 学学报鸯 鍪 ) ( 差
J u n l fW u a nv r i fTe h oo y o r a h nU ie st o c n l g o y
( rn p r t n S i c T a s o t i c n e& E gn e i ) a0 e n ie r g n
器 的设 计.
UKF状 态估 计 为P F确定 一种 重要性 函数 ;2 将 ()
P F的所 有 粒 子分 为 随机 性 粒 子 和确定 性 粒 子 两
部分 , 传统 P 与 F滤波方 法 一样 , 随机 粒子 都 从 重
1 UKF P 混合 滤 波 算 法 /F
在 实 际 应用 的情 况 下 , 噪声 并 不 满足 高 斯 分 布 , 统 也是 非 线 性 的. 此 , 为 非 高斯 非 线性 系 因 作 的 滤波 方 法 , 子 滤 波 ( F) 有 广 泛 的适 用 性 . 粒 P 具 国内外 研究 表 明 , 如何 选 取 合理 粒 子 滤波 重要 性
必 备 信息. 于在水 下无 法接 收G S 北斗 、 由 P、 罗兰C
观且 易 于 实现 , 是没 有 利用 最 新 的 观测 信息 进 但
行粒 子采样 , 波精度 因此受 到 限制. 合考 虑先 滤 综
等 外 部导 航 信 息 , 艇处 于潜 航状 态 时 只能 依靠 潜
自主式 导航 系统 . 舰位 推 算 ( DR) 和惯性 导航 系统 (NS 是最 常见 的 2种 自主式 导航 方式 . R 利用 I ) D 航 向 信息和 速度 信息 迭代 推算 载体 的各 时刻位置
UK / F混 合 滤 波 算 法 用 于 D I FP R/NS组 合 滤 波 器 设计 的 有 效 性 . 关 键 词 : 色 卡尔 曼 滤 波 ; 子 滤 波 ; 合 导 航 ; 位 推 算 无 粒 组 舰
第4讲:UKF滤波算法
wk ~ N (0, Qk )
v k ~ N (0, Rk )
(1)初始化
ˆ x0 = E [x0 ]
ˆ ˆ P0 = E (x0 − x0 )(x0 − x0 )
[
Tቤተ መጻሕፍቲ ባይዱ
]
(2)状态估计
1.计算Sigma点
ˆ χ k0−1 = xk −1 ˆ χ ki −1 = xk −1 ˆ χ ki −1 = xk −1 +
0⎤ Q 0⎥ ⎥ 0 R⎥ ⎦ 0
(2)状态估计
1.计算Sigma点
ˆ 根据 x a , k −1 和 Pa , k −1 ,构造增广Sigma点
0 ˆ χ a ,k −1 = xa ,k −1
i ˆ χ a ,k −1 = xa ,k −1 + i ˆ χ a ,k −1 = xa ,k −1
− k
− k
计算量
与 EKF 的计算量在同一个数量阶,对于 n 维 系统,为 O(n3)。 UKF 和 EKF 的计算量之比大致为: UKF : EKF= 3 : 1 UKF 的主要计算量在于选取 Sigma 点时的方 根分解运算 Pk −1 。所以优化计算可以从分解方 式入手,好的分解方式可以减小计算量。
增广状态的方差为
⎡ Px ,k ⎢ 0 =⎢ ⎢ 0 ⎣ 0⎤ ⎥ Q 0⎥ 0 R⎥ ⎦ 0
Pa ,k
(1)初始化
ˆ x0 = E [x0 ]
ˆ ˆ Px ,0 = E ( x0 − x0 )( x0 − x0 )
ˆ xa , 0 = E x
[
T
]
[
T 0
0
T m×1
非线性卡尔曼滤波EKF与UKF
谢谢!
T PXX (k | k ) PXX (k | k 1) K (k )P ( k | k 1) K (k ) YY
四、Matlab仿真
系统方程:
25 x k 1 x k 0.5 x k 1 8cos 1.2 k 1 Q W 2 1 x k 1 x2 k Y k R V 20
时就需要采用非线性卡尔曼滤波技术。 • 目前,应用最为广泛的非线性卡尔曼滤波方法 是将非线性方程近似成线性方程,忽略非线性 部分,得到次优状态估计的非线性滤波。 • 扩展卡尔曼滤波器和无迹卡尔曼滤波器
二、扩展卡尔曼滤波器
• 将期望和方差线性化的卡尔曼滤波器称
作 扩 展 卡 尔 曼 滤 波 器 ( Extended Kalman Filter),简称EKF。
k T k
H P H
k k
T k
x k x K k ( zk h x , 0 )
时刻的观测噪声协方差矩阵(注意下标k 表示 Rk 随时间变化)。
P k I Kk H k P H k 和V是k时刻的测量雅可比矩阵, Rk 是k
k
k
Vk RkV
T k
1
二、扩展卡尔曼滤波器
EKF应用于非线性状态估计系统中已经得到了
学术界认可并为人广泛使用,但这种方法存在 两个缺点: • 当强非线性时,Taylor展开式中被忽略的高 阶项带来大的误差,EKF算法可能发散;
• 由于EKF在线性化处理时需要用雅克比矩
阵,其繁琐的计算过程导致该方法实现相 对困难。
其中,Q=4,R=1,
W和N分别为互不相关的高斯白噪声
四、Matlab仿真
ukf滤波算法
ukf滤波算法UKF(Unscented Kalman Filter)滤波算法是一种非线性滤波算法,目的是通过逼近非线性系统的状态和测量值的真实分布来估计系统的状态。
相比于传统的Kalman滤波算法,UKF采用了Sigma点来近似系统状态和测量值的分布,从而可以处理非线性系统。
UKF算法的基本思想是使用一些特定的采样点(称为Sigma点)来近似系统状态和测量值的分布。
通过对这些Sigma点进行传播和更新,可以获得系统的状态估计值。
具体来说,UKF算法包含以下几个步骤:1.初始化:确定系统的状态和观测方程,以及状态协方差矩阵和测量噪声协方差矩阵。
2. Sigma点生成:根据系统状态的均值和协方差矩阵,生成一组代表系统状态的Sigma点。
通常,Sigma点的个数是通过经验确定的,一般取2n+1个,其中n是状态向量的维度。
3. Sigma点传播:根据系统的非线性状态方程,通过将Sigma点传播到下一个时刻,得到预测的Sigma点。
这一步骤的目的是在状态空间中对预测状态进行采样。
4.状态预测:利用预测的Sigma点计算出预测的系统状态的均值和协方差矩阵。
5. Sigma点更新:根据测量模型,通过对预测的Sigma点进行线性变换,得到预测的测量值Sigma点。
这一步骤的目的是在测量空间中对预测状态进行采样。
6.测量预测:利用预测的测量值Sigma点计算出预测的测量值的均值和协方差矩阵。
7.卡尔曼增益计算:根据预测的状态和测量值的均值和协方差矩阵,计算出卡尔曼增益。
8.状态更新:利用测量值对预测的状态进行修正,得到更新后的状态估计值和协方差矩阵。
通过以上步骤,UKF算法可以通过对状态和测量值的Sigma点进行传播和更新,逼近非线性系统的状态和测量值的真实分布,从而得到系统的状态估计值。
UKF算法的优点是可以处理非线性系统,并且不需要对系统进行线性化处理。
相比于传统的扩展卡尔曼滤波(EKF)算法,UKF算法更加精确和鲁棒。
基于UKF的滤波算法设计分析与应用共3篇
基于UKF的滤波算法设计分析与应用共3篇基于UKF的滤波算法设计分析与应用1基于UKF的滤波算法设计分析与应用随着科技的发展,各行各业的数据处理越来越重要,滤波算法在这个过程中扮演了重要的角色。
本文将探讨一种基于UKF的滤波算法,包括其设计分析以及应用。
UKF是一种针对非线性系统的滤波算法,其全称为无迹卡尔曼滤波器(Unscented Kalman Filter)。
相比于卡尔曼滤波器,UKF更加适用于非线性、非高斯的系统,并且其运行速度更快、精度更高。
在UKF的运行过程中,需要进行两次变换,分别为sigma点变换和权值变换,其中sigma点变换将高斯分布的均值和协方差矩阵转换为一些离散的点,这些点在系统的非线性关系下具有良好的近似性质,权值变换则是将这些点的权重求出,最终依据这些点和权重来进行滤波。
在实际应用中,UKF滤波算法及其改进算法大量被应用在各种领域,比如机器人控制、导航、雷达信号处理等等。
本文将以信号处理方面为例,探讨在声音信号处理中,UKF滤波算法的设计分析与应用。
在声音信号处理中,我们常常需要对信号进行滤波以去除噪声,但是传统的滤波算法在处理非线性、非高斯信号时,精度不够高。
因此,UKF滤波算法便成了一个较好的选择。
在设计UKF滤波算法时,需要根据实际需求设置相关参数,比如系统的状态变量和测量变量,以及噪声的协方差矩阵。
在应用过程中,需要将待滤波的信号和上一时刻的状态量带入UKF滤波器进行处理,得到一个经过优化的滤波结果。
在实际应用中,UKF滤波算法在音频降噪方面表现突出,其通过取sigma点进行变换,避免了需要用到高斯假设的问题。
在汽车音响中,UKF滤波算法还可以用于提高音频效果,比如降低回声和噪声,提升车内音质。
此外,在语音识别领域中,UKF滤波算法可以有效提高语音识别的准确性,避免非线性噪声的影响。
需要注意的是,UKF滤波算法并不是万能的,其在处理高维系统时会有一定难度,而且高斯分布的假设仍然是不可取的。
无迹卡尔曼滤波算法
无迹卡尔曼滤波算法
无迹卡尔曼滤波算法(Unscented Kalman Filter,UKF)是一种用于处理非线性系统的非参数滤波算法,它可以从观测和测量数据中推断隐藏状态的值。
UKF的基本思想是基于状态变量的状态和测量变量的观测,使用一系列加权的状态估计来预测未来状态,并通过观测和测量值来校正预测值。
UKF的优点在于它可以处理非线性系统,而不需要对系统进行线性化处理,从而可以更准确地估计隐藏状态变量,准确度比传统卡尔曼滤波算法更高。
UKF是一种经典的非线性滤波算法,它可以利用观测和测量值,以及相关的不确定性信息,以准确的方式估计隐藏状态变量。
它也可以用于自适应控制,机器人移动控制,机器视觉,自动驾驶等领域。
UKF可以用来模拟复杂的物理过程,估计不同的系统参数,以及更准确地预测未来的状态,这在许多领域,如自动驾驶汽车,智能机器人,机器视觉,航空航天,大气科学和精细化工等领域中都很有用。
总之,无迹卡尔曼滤波算法是一种用于处理非线性系统的有效滤波算法,能够从观测和测量数据中推断隐藏状态的值,准确度比传统卡尔曼滤波算法更高,在航空航天,机器人,机器视觉,控制系统,大气科学和精细化工等领域都得到了广泛应用。
无迹卡尔曼滤波调参
无迹卡尔曼滤波调参无迹卡尔曼滤波(UKF)是一种常用的非线性滤波方法,用于估计系统的状态变量。
与传统的卡尔曼滤波不同,UKF通过引入一组离散采样点,以更好地逼近系统的非线性特性。
然而,UKF的性能很大程度上依赖于其参数的调整,下面将介绍一种调参方法。
在调参之前,我们首先需要了解UKF的几个关键参数。
首先是采样点的数量,通常选择与状态变量的维度相关的值。
其次是过程噪声和观测噪声的协方差矩阵,它们描述了系统中的不确定性和噪声。
最后是一个控制参数,称为增益参数,用于平衡系统的不确定性和噪声。
为了调整这些参数,我们可以采用试错的方法。
首先,选择一组初始参数,并使用这些参数运行UKF算法。
然后,根据滤波结果的性能评估参数的适用性。
如果滤波结果不理想,需要调整参数并再次运行算法。
调整参数时,可以采用以下策略。
首先,增加采样点的数量,以更好地逼近系统的非线性特性。
然后,根据系统的动态特性和噪声水平,适当调整过程噪声和观测噪声的协方差矩阵。
最后,通过调整增益参数,平衡系统的不确定性和噪声。
在调参过程中,需要注意以下几点。
首先,要根据具体应用场景和系统的特性,选择合适的参数范围。
其次,要根据滤波结果的性能,评估参数的适用性,并进行相应的调整。
最后,要注意参数之间的相互影响,避免过多调整导致系统性能的下降。
通过试错的方法和合理的参数选择,可以有效调参并提高无迹卡尔曼滤波算法的性能。
调参过程中,需要注意参数范围的选择,滤波结果的评估以及参数之间的相互影响。
通过不断优化参数,可以提高滤波算法的准确性和鲁棒性,从而更好地估计系统的状态变量。
UKF的算法介绍
UKF的算法介绍——作者,niewei120,nuaa参数说明:其中sigama点的获得方法如下:例外的一种描述方式其滤波算法表示如下:UKF 中各参数的影响:α确定了采样点与均值的远近程度,通常取0 到1 之间的正值,所取值越大则距离平均值越远,当其值为零时,UKF 的滤波效果相当于EKF;UT中的k 为一比例因子,通常取为0,当状态分布可以认为是高斯分布时,可取k = n - 3(n为状态向量x 的维数);β在正态分布时取2。
当Q 和R 过大时,UKF 的状态非常不稳定,有时甚至还会发散。
整个的matlab的程序如下:(1)sigama点的计算,输出为siagma点和权重值,以及sigama点的数量function [xPts, wPts, nPts] = scaledSymmetricSigmaPoints(x,P,alpha,beta,kappa)% % This function returns the scaled symmetric sigma point distribution.%% [xPts, wPts, nPts] = scaledSymmetricSigmaPoints(x,P,alpha,beta,kappa) %% Inputs:% x mean 状态量均值% P covariance 协方差% alpha scaling parameter 1% a决定万周围Sigma点的分布状态,调节其值能够使得高阶项影响最小% beta extra weight on zero'th point% 调节beta的值可以提高方差的精度,对于高斯分布,beta为2是最优的% kappa scaling parameter 2 (usually set to default 0)% 是一个比例因子kappa=alpha^2*(n+kappa)-n%% Outputs:% xPts The sigma points sigma点% wPts The weights on the points 所在点的权重% nPts The number of points sigma点的数目%%%% (C) 2000 Rudolph van der Merwe% (C) 1998-2000 S. J. Julier.% Number of sigma points and scaling terms sigma点的个数n = size(x(:),1);nPts = 2*n+1; % we're using the symmetric SUT 采用的是对称sui,此时的sigma点为2n+1% Recalculate kappa according to scaling parameters 根据标定参数重新计算kappa值kappa = alpha^2*(n+kappa)-n;% Allocate space 分配空间wPts=zeros(1,nPts);xPts=zeros(n,nPts);% Calculate matrix square root of weighted covariance matrix 计算根号下的协方差矩阵Psqrtm=(chol((n+kappa)*P))';% Array of the sigma points sigma点的阵列xPts=[zeros(size(P,1),1) -Psqrtm Psqrtm];% Add mean back inxPts = xPts + repmat(x,1,nPts);% Array of the weights for each sigma point sigma点的权重阵列wPts=[kappa 0.5*ones(1,nPts-1) 0]/(n+kappa);% Now calculate the zero'th covariance term weight 计算0处的协方差权重wPts(nPts+1) = wPts(1) + (1-alpha^2) + beta;(2)ukf滤波算法function[xEst,PEst,xPred,PPred,zPred,inovation,S,K]=ukf(xEst,PEst,U,Q,ffun,z,R,hfun,dt,alpha,beta,kappa) % TITLE : UNSCENTED KALMAN FILTER%% PURPOSE : This function performs one complete step of the unscented Kalman filter.%% SYNTAX : [xEst,PEst,xPred,PPred,zPred,inovation]=ukf(xEst,PEst,U,Q,ffun,z,R,hfun,dt,alpha,beta,kappa)% % INPUTS : - xEst : state mean estimate at time k k时刻卡尔曼状态量均值的预测值% - PEst : state covariance at time k k时刻协方差的预测值% - U : vector of control inputs 输入的控制量% - Q : process noise covariance at time k k时刻的状态噪声%% - z : observation at k+1 k+1时刻的观测量% - R : measurement noise covariance at k+1 k+1的测量噪声的协方差%% - ffun : process model function 状态方程% - hfun : observation model function 观测方程% - dt : time step (passed to ffun/hfun) 时间步长% - alpha (optional) : sigma point scaling parameter. Defaults to% 1.影响sigma向量围绕分布的扩展因子% - beta (optional) : higher order error scaling parameter.% Default to 0. 另一个规模因子% - kappa (optional) : scalar tuning parameter 1. Defaults to% 0. 先验分布的因子%% OUTPUTS : - xEst : updated estimate of state mean at time% k+1 k+1时刻的状态量的更新值% - PEst : updated state covariance at time k+1% k+1时刻的协方差的更新值% - xPred : prediction of state mean at time k+1% k+1时刻的状态量的预测值% - PPred : prediction of state covariance at time% k+1 k+1时刻的协方差预测值% - inovation : innovation vector 更新矢量% NOTES : The process model is of the form, x(k+1) = ffun[x(k),v(k),dt,u(k)]% where v(k) is the process noise vector. The observation model is% of the form, z(k) = hfun[x(k),w(k),dt,u(k)], where w(k) is the% observation noise vector.%% This code was written to be readable. There is significant% scope for optimisation even in Matlab.%% Process defaultsif (nargin < 10)alpha=1;end;if (nargin < 11)beta=0;end;if (nargin < 12)kappa=0;end;% Calculate the dimensions of the problem and a few useful% scalarsstates = size(xEst(:),1);observations = size(z(:),1);vNoise = size(Q,2); %过程噪声wNoise = size(R,2); %观测噪声noises = vNoise+wNoise;% Augment the state vector with the noise vectors.% Note: For simple, additive noise models this part% can be done differently to save on computational cost.% For details, contact Rudolph v.d. Merweif (noises)N=[Q zeros(vNoise,wNoise); zeros(wNoise,vNoise) R];PQ=[PEst zeros(states,noises);zeros(noises,states) N];xQ=[xEst;zeros(noises,1)];elsePQ=PEst;xQ=xEst;end;% Calculate the sigma points and there corresponding weights using the Scaled Unscented% Transformation[xSigmaPts, wSigmaPts, nsp] = scaledSymmetricSigmaPoints(xQ, PQ, alpha, beta, kappa); %计算sigma点的均值、权重和sigma点的数目% Duplicate wSigmaPts into matrix for code speedup 重复wSigmaPts使得矩阵运算速度提升wSigmaPts_xmat = repmat(wSigmaPts(:,2:nsp),states,1);wSigmaPts_zmat = repmat(wSigmaPts(:,2:nsp),observations,1);% Work out the projected sigma points and their means% This routine is fairly generic. The only thing to watch out for are% angular discontinuities. There is a standard trick for doing this -% contact me (Julier) for details!xPredSigmaPts = feval(ffun,xSigmaPts(1:states,:),repmat(U(:),1,nsp),xSigmaPts(states+1:states+vNoise,:),dt);%状态更新zPredSigmaPts = feval(hfun,xPredSigmaPts,repmat(U(:),1,nsp),xSigmaPts(states+vNoise+1:states+noises,:),dt);%观测更新% Calculate the mean. Based on discussions with C. Schaefer, form% is chosen to maximise numerical robustness.% - I vectorized this part of the code for a speed increase : RvdM 2000xPred = sum(wSigmaPts_xmat .* (xPredSigmaPts(:,2:nsp) - repmat(xPredSigmaPts(:,1),1,nsp-1)),2);%状态量的一步预测值zPred = sum(wSigmaPts_zmat .* (zPredSigmaPts(:,2:nsp) - repmat(zPredSigmaPts(:,1),1,nsp-1)),2);%观测量的一步预测值xPred=xPred+xPredSigmaPts(:,1);zPred=zPred+zPredSigmaPts(:,1);% Work out the covariances and the cross correlations. Note that% the weight on the 0th point is different from the mean% calculation due to the scaled unscented algorithm.exSigmaPt = xPredSigmaPts(:,1)-xPred; %sigma点状态值的误差ezSigmaPt = zPredSigmaPts(:,1)-zPred; %sigma点量测值的误差PPred = wSigmaPts(nsp+1)*exSigmaPt*exSigmaPt';%状态量的协方差PxzPred = wSigmaPts(nsp+1)*exSigmaPt*ezSigmaPt';%状态量与观测量的协方差S = wSigmaPts(nsp+1)*ezSigmaPt*ezSigmaPt';%观测量的协方差exSigmaPt = xPredSigmaPts(:,2:nsp) - repmat(xPred,1,nsp-1);%sigma点状态值的误差的更新ezSigmaPt = zPredSigmaPts(:,2:nsp) - repmat(zPred,1,nsp-1);%sigma点量测值的误差的更新PPred = PPred + (wSigmaPts_xmat .* exSigmaPt) * exSigmaPt';%状态量的协方差的更新S = S + (wSigmaPts_zmat .* ezSigmaPt) * ezSigmaPt';%观测量的协方差的更新PxzPred = PxzPred + exSigmaPt * (wSigmaPts_zmat .* ezSigmaPt)';%状态量与观测量的协方差的更新%%%%% MEASUREMENT UPDATE 量测更新% Calculate Kalman gain 计算卡尔曼增益K = PxzPred / S;% Calculate Innovation 计算测量误差inovation = z - zPred;% Update mean 更新状态量均值xEst = xPred + K*inovation;% Update covariance 更新协方差PEst = PPred - K*S*K';。
扩展Kalman滤波(EKF)和无迹卡尔曼滤波(ukf)分析
二、扩展Kalman滤波(EKF)算法
vy = vy + (ky*vy^2-g+day*randn(1))*Ts; X(k,:) = [x, vx, y, vy]; end figure(1), hold off, plot(X(:,1),X(:,3),'-b'), grid on % figure(2), plot(X(:,2:2:4)) % 构造量测量 mrad = 0.001; dr = 10; dafa = 10*mrad; % 量测噪声 for k=1:len r = sqrt(X(k,1)^2+X(k,3)^2) + dr*randn(1,1); a = atan(X(k,1)/X(k,3)) + dafa*randn(1,1); Z(k,:) = [r, a]; end
成线性问题。 对于非线性问题线性化常用的两大途径:
(1) 将非线性环节线性化,对高阶项采用忽略或逼近措施;(EKF)
(2)用采样方法近似非线性分布. ( UKF)
二、扩展Kalman滤波(EKF)算法
EKF算法是一种近似方法,它将非线性模型在状态 估计值附近作泰勒级数展开,并在一阶截断,用得 到的一阶近似项作为原状态方程和测量方程近似表 达形式,从而实现线性化同时假定线性化后的状态 依然服从高斯分布,然后对线性化后的系统采用标 准卡尔曼滤波获得状态估计。采用局部线性化技术, 能得到问题局部最优解,但它能否收敛于全局最优 解,取决于函数的非线性强度以及展开点的选择。
二、扩展Kalman滤波(EKF)算法
figure(1), plot(X_est(:,1),X_est(:,3), '+r') xlabel('X'); ylabel('Y'); title('ekf simulation'); legend('real', 'measurement', 'ekf estimated'); %%%%%%%%%%%%%%%%%%%%子程序%%%%%%%%%%%%%%%%%%% function F = JacobianF(X, kx, ky, g) % 系统状态雅可比函数 = X(2); vy = X(4); F = zeros(4,4); F(1, F(2,2) = -2*kx*vx; F(3,4) = 1; F(4,4) = 2*ky*vy; 2) = 1;
不敏卡尔曼滤波UKF介绍
2n
Simulation of UKF—Nonlinear state equation
(3)求
S ,定义 k
2n (c)
Sk 如下:
(i ) k (i ) T k
Sk wi ( )
i 0
(4)互协方差阵定义如下:
Px ( k z k wi
(c) i 0
2n
(i ) k
T ˆ ˆ xk / k 1 )( zk zk / k 1 )
观测未采用U变换, 用观测值代替采样值均值
Simulation of UKF--With Multiplicative Noise
Simulation of UKF--With Multiplicative Noise
Simulation of UKF--With Multiplicative Noise
Simulation of UKF--With Multiplicative Noise
ˆk / k 1 wi ( m ) k( i ) x ˆk / k 1 )( k(i ) x ˆk / k 1 )T Qk 1 Pk / k 1 wi ( c ) ( k(i ) x Pzk mk Ck Pk / k 1Ck T k Ck S k Ck T Rk S k wi ( c ) k( i ) ( k(i ) )T
Tracking ballistic objects in reentry phase
0 Sk 1 k ( Sk ) G wk g k yk y k ] S k [ xk x k ( S k ) S k Gf k ( S k ) Nonlinear Part g 2 2 S k [2] f k (Sk ) ( S k [3]) S k [2] S k [4] S [4] 2 k
雷达仿真实验-无迹卡尔曼滤波
雷达仿真实验-无迹卡尔曼滤波一、摘要无迹卡尔曼滤波(UKF)是最近几年才提出来的一种新的滤波算法, 其基本思想是基于无迹变换( unscentedtransformation, UT), 即用固定数量的参数去近似一个高斯分布, 比近似任意的非线性函数或变换更容易。
其实现原理为: 在原先状态分布中按某一规则取一些点, 使这些点的均值和协方差等于原状态分布的均值和协方差; 将这些点代入非线性函数中, 相应得到非线性函数值点集, 通过这些点求取变换后的均值和协方差。
由于这样得到的函数值没有经过线性化、没有忽略其高阶项, 因而其均值和协方差的估计比EKF 方法要精确。
针对传统算法在解决纯方位目标运动分析时存在的有偏、收敛速度慢或发散等不足, 该文将无味卡尔曼滤波( UKF)算法应用到纯方位目标运动分析中。
由于UKF 在处理非线性问题时表现良好, 以及不需要计算Jacobian 矩阵或Hessian 矩阵, 实现起来比较方便。
根据无味变换的基本原理给出了滤波过程的具体计算步骤并进行了仿真计算。
理论分析和仿真结果表明,UKF 的性能相当于二阶高斯滤波器, 它在纯方位目标运动分析中的滤波精度、稳定性和收敛时间都优于传统算法。
二、原理介绍目前,扩展卡尔曼滤波虽然被广泛用于解决非线性系统的状态估计问题,但其滤波效果在很多复杂系统中并不能令人满意。
模型的线性化误差往往会严重影响最终的滤波精度,甚至导致滤波发散。
另外,在许多实际系统中,模型的线性化过程比较繁杂,而且也不容易得到。
最近,由Juiler 等人提出了一种无迹卡尔曼滤波 (Unscented Kalman Filter, UKF)。
UKF 对状态向量的PDF 进行近似化,表现为一系列选取好的采样点。
这些采样点完全体现了高斯密度的真实均值和协方差。
当这些点经过任何非线性系统的传递后,得到的后验均值和协方差都能够精确到二阶(即对系统的非线性强度不敏感)。
由于不需要对非线性系统进行线性化,并可以很容易地应用于非线性系统的状态估计,因此,UKF 方法在许多方面都得到了广泛应用,例如模型参数估计、人头或手的方位跟踪、飞行器的状态或参数估计、目标的方位跟踪等。
强跟踪UKF粒子滤波算法
Pa r t i c l e f i l t e r a l g o r i t h m b a s e d o n s t r o n g t r a c k i n g UKF
h a s l O W e s t i ma t i o n a c c u r a c y.a n d J a c o b i a n ma t r i x a l s o n e e d s t o b e c a l c u l a t e d, wh i c h i n c r e a s e s t h e d i f f i c u l t y o f i mp l e me n t a t i o n .I n
( 1 . 湖北汽 车 工业 学院 经济 管理 学院 ,湖 北 十堰 4 4 2 0 0 2 ;2 . 中 国航 天科 工集 团
第二研 究院 7 0 6所 ,北 京 1 0 0 8 5 4 ; 3 . 湖 北汽 车工业 学院 电气与信 息工程 学院 ,湖 北 十堰 4 4 2 0 0 2 )
YANG Li - h u a ,GE Le i ,LI Ba o - l i n ,HU ANG Ha i - b o 。
( 1 .S c h o o l o f Ec o n o mi c s a n d Ma n a g e me n t ,H u b e i Un i v e r s i t y o f Au t o mo t i v e Te c h n o l o g y,S h i y a n 4 4 2 0 0 2,Ch i n a ;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)不需要计算Jacobi矩阵,可以处理不可导 非线性函数。
UKF滤波算法
UKF实现思想
UKF=Unscented transform + Kalman Filter
即 UKF 可以看作是基于 UT 技术的卡尔曼滤 波器。在卡尔曼滤波算法中,对于一步预测 方程,使用UT变换来处理均值和协方差的非 线性传递,就成为UKF算法。
=
xˆa,k −1
+
N + κ Pa,k −1 i
( ( ) ) χ i a,k −1
=
xˆa,k −1
−
N + κ Pa,k −1 i
,i = 1,..., N ,i = N +1,...,2N
这里,N = n + m + l 为增广状态的维数,且
[ ] χa
=
χ
T x
χ
T w
χT T v
2.时间传播方程
−
xˆ k−
][γ
i k|k −1
−
yˆ
− k
]T
i=0
K = Pxy, k Py−,1k
xˆk
=
xˆ k−
+ K(yk
−
yˆ
− k
)
Px, k = Px−, k − KPy, k K T
计算量
与 EKF 的计算量在同一个数量阶,对于 n 维 系统,为 O(n3)。
UKF 和 EKF 的计算量之比大致为: UKF : EKF= 3 : 1
系统函数可以不连续; 随机状态可以不是高斯的; 计算量和 EKF 同阶。
扩维UKF滤波算法 (噪声隐含)
若过程噪声与测量噪声是隐含在系统中的,即 系统方程为
xk+1 = f (xk , wk )
yk = h(xk , vk ) 这时需要对状态变量进行扩展,得增广状态
[ ] xa,k = xkT , wkT , vkT T
ψ i = f (χi)
UT mean
y = f ( x ) Py = AT Px A
UT covariance transformed sigma points
A T Px A f (x )
两类非线性系统模型
(1)加性噪声
xk+1 = f (xk ) + wk yk = h(xk ) + vk
(2)噪声隐含
粒子滤波
使用参考分布,随机产生大量粒子,近似 状态的后验概率密度,得到系统的估计。
问题:1)计算量甚大,为EKF的若干数量 阶;2)若减少粒子数,估计精度下降。
UKF滤波
以UT变换为基础,采用卡尔曼滤波器框架, 采样形式为确定性采样。在减少采样粒子点数
的同时保证逼近精度。
Unscented变换 (Unscented Transformation)
状态的时间更新:
选定状态的 2n+1 个 Sigma点(n 为状态维数); 利用 UT 技术计算状态的后验均值和方差。
状态的测量更新:
利用标准的 Kalman 滤波的测量更新,但使用 的公式有所不同。
UT-EKF
Unscented Transform
Linearized (EKF)
Sigma Points
Unscented变换
(1)构造Sigma点
根据随机向量 x 的统计量 x 和 Px ,构造
Sigma点集
( ) ⎧x + ( ) χi = ⎪⎪⎨x −
(n + κ )Px i (n + κ )Px i
⎪⎪⎩x
, i = 1,..., n , i = n +1,...,2n , i=0
κ 为尺度参数,调整它可以提高逼近精度。
( ) W0(c) = κ (n + κ ) + 1 − α 2 + β
Wi(m) = Wi(c) = κ [2(n + κ )] ,i = 1,...,2n
其中: κ = α 2 (n + λ ) − n
在均值和方差加权中需要确定α 、λ 和 β 共3个参
数,它们的取值范围分别为:
确定 x 周围Sigma点的分布,通常设为一个较小
用这组采样点 χi 可以近似表示状态 x 的高斯分
布。
(2)对Sigma点进行非线性变换
对所构造的点集 {χi} 进行 f (⋅) 非线性变换,
得到变换后的Sigma点集
Yi = f (χi ) i = 0,1,...,2n
变换后的Sigma点集 {Yi}即可近似地表示
y = f (x) 的分布。
(1)初始化
xˆ 0 = E[x0 ]
[ ] P0 = E (x0 − xˆ 0 )(x0 − xˆ 0 )T
(2)状态估计
1.计算Sigma点
χ0 k −1
=
xˆk −1
( ) ( ) χ i k −1
=
xˆk −1
+
n + κ Pk−1 i
( ) ( ) χ i k −1
=
xˆk −1
−
n + κ Pk−1 i
x 10-4 2
0
-2
-4
-6
-8
-10
,i = 1,..., n ,i = n +1,...,2n
2.时间传播方程
( ) χ = i k|k −1
f
χi k −1
2n
∑ xˆk− =
χ W (m) i
i
k|k −1
i=0
2n
∑ P − x,k
=
χ W [ (c) i
i
k|k −1
−
xˆ k−
][χi k|k源自−1−xˆ
− k
]T
+
Qk
i=0
增广状态的均值为
[ ] xˆa,k = xˆkT , 0mT×1, 0lT×1 T
其中,m 和 l 分别为过程噪声和观测噪声的维数。
增广状态的方差为
⎡Px,k 0 0 ⎤
Pa,k
=
⎢ ⎢
0
Q
0
⎥ ⎥
⎢⎣ 0 0 R⎥⎦
(1)初始化
xˆ 0 = E[x0 ]
[ ] Px,0 = E (x0 − xˆ0 )(x0 − xˆ0 )T
引入线性化误差 ,对非线性强度高的系统,容 易导致滤波效果下降。
基于上述原因,为了提高滤波精度和效率,以 满足特殊问题的需要,就必须寻找新的逼近方 法。
注意
随机状态变量沿非线性函数的 传播问题是非线性滤波的关键!
新思路
“近似非线性函数的概率密度分布比 近似非线性函数更容易”
因此,使用采样方法近似非线性分布来解决非 线性滤波问题的途径目前得到了人们的广泛关 注。
f1 [q(t ), ω (t )]
=
1 2
φ
[q(t
)]
ω
(t
)
f2[ω(t)] = J {−1 N (t) − [ω(t) ×] Jω(t)}
偏航角估计误差
偏航角误差/deg
-3
x 10 1.5
1
0.5
0
-0.5
-1
0
5
EKF UKF
10
15
20
25
30
时间/s
滚动角估计误差
滚动角误差/deg
( ) γ χ = h i k|k −1
i k|k −1
2n
∑ yˆk− =
γ W (m) i i k|k −1
i=0
3.测量更新方程
2n
∑ Py, k =
Wi(c)
[γ
i k
|k
−1
−
yˆ
− k
][γ
i k|k
−1
−
yˆ
− k
]T
+ Rk
i=0
2n
∑ Pxy, k =
Wi(c)
[
χ
i k|k
−1
xk+1 = f (xk , wk )
yk = h(xk , vk )
简化UKF滤波算法 (加性噪声)
对于非线性系统
xk+1 = f (xk ) + wk yk = h(xk ) + vk
假定状态为高斯随机矢量;过程噪声与测量噪 声的统计特性为 wk ~ N (0, Qk ) vk ~ N (0, Rk )
(3)计算 y 的均值和方差
对变换后的Sigma点集 {Yi}进行加权处理,
从而得到输出量 y 的均值和方差
2n
∑ y ≈ Wi(m)Yi i=0 2n
∑ Py ≈ ( Wi(c) Yi − y)(Yi − y)T i=0
W i(m)和 Wi(c)分别为计算 y 的均值和方差所用加权
W0(m) = κ (n + κ )
{ } Pxy (k ) = E [xk − xk ][yk − h(xk )]T Y k−1
描述最优状态估值质量优劣的误差协方差
阵确定如下
{ } Pˆk = E (xk − xˆ k )(xk − xˆ k )T Y k
=
Pk
−
K
k
Py
(k
)K
T k
EKF的不足
必须求非线性函数的Jacobi矩阵,对于模型复 杂的系统,比较复杂且容易出错;
i
i
x,k|k −1 v,k −1
2N
∑ yˆk− =
γ W (m) i i k|k −1