基于FPGA的无迹卡尔曼滤波系统及并行实现方法.pdf

上传人:Y0****01 文档编号:1103098 上传时间:2018-03-31 格式:PDF 页数:18 大小:849.98KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010013568.9

申请日:

2010.01.08

公开号:

CN101777887A

公开日:

2010.07.14

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H03H 21/00申请日:20100108|||公开

IPC分类号:

H03H21/00

主分类号:

H03H21/00

申请人:

西安电子科技大学

发明人:

姬红兵; 李倩; 王玮; 闫家铭

地址:

710071陕西省西安市太白路2号

优先权:

专利代理机构:

陕西电子工业专利中心 61205

代理人:

王品华;朱红星

PDF下载: PDF下载
内容摘要

本发明公开了一种基于FPGA的无迹卡尔曼滤波系统,主要解决现有无迹卡尔曼滤波硬件实现难度大和实时性差的问题。该系统包括:协方差矩阵Cholesky分解模块A,Sigma点产生模块B、时间更新模块C、观测预测模块D、部分均值和协方差矩阵计算模块E、总体均值计算模块F、总体协方差矩阵计算模块G、观测预测协方差矩阵求逆模块H、增益计算模块I和状态量估计和状态协方差矩阵估计模块J。模块A产生K组行向量到模块B,模块B、C、D和E是串连关系,分别包含K个采用并行运算单元结构的子模块;模块F、G接收模块E的K组结果并处理,处理结果依次经过模块H、I和J得到当前结果。本发明具有滤波速度快和易于硬件实现的优点,可用于目标跟踪和参数估计。

权利要求书

1: 一种基于FPGA的无迹卡尔曼滤波系统,包括: 协方差矩阵Cholesky分解模块A,用于对分块对角协方差矩阵的对角线上的各子矩阵分别进行Cholesky分解,得到下三角矩阵,将下三角矩阵的L个行向量,分成K组,分别输入到Sigma点产生模块,其中L=2m+n,m为状态量的维数,n为观测量的维数,K≥1; Sigma点产生模块B,用于接收上一时刻的状态估计值,利用A模块得到的结果产生K组Sigma点,分别输入到时间更新模块,其中第一组有2L/K+1个采样点,其余各组有2L/K个采样点; 时间更新模块C,用于把接收到的Sigma点代入系统模型的状态方程,得到状态预测值,输入到观测预测模块; 观测预测模块D,用于把状态预测值代入观测模型的观测方程,得到观测预测值,并将观测预测值和状态预测值输入到部分均值和协方差矩阵计算模块; 部分均值和协方差矩阵计算模块E,用于对观测预测值和状态预测值加权求和,分别计算部分状态预测协方差矩阵、部分观测预测协方差矩阵和部分互协方差矩阵,并将其计算结果输入到总体均值计算模块和总体协方差矩阵计算模块; 总体均值计算模块F,用于接收部分均值和协方差矩阵计算模块的结果,分别计算状态预测均值和观测预测均值,并将其计算结果输入到总体协方差矩阵计算模块和状态量估计和状态协方差矩阵估计模块; 总体协方差矩阵计算模块G,用于接收部分均值和协方差矩阵计算模块和总体均值计算模块的结果,分别计算状态预测协方差矩阵、观测预测协方差矩阵和互协方差矩阵,并将观测预测协方差矩阵输入到观测预测协方差矩阵求逆模块,将互协方差矩阵输入到增益计算模块,将状态预测协方差矩阵和观测预测协方差矩阵输入到状态量估计和状态协方差矩阵估计模块; 观测预测协方差矩阵求逆模块H,用于对观测预测协方差矩阵采用奇异值分解方法求逆,并将求逆结果输入到增益计算模块; 增益计算模块I,用于接收互协方差矩阵和观测预测协方差矩阵的逆矩阵,计算增益,并将增益输入到状态量估计和状态协方差矩阵估计模块; 状态量估计和状态协方差矩阵估计模块J,用于接收增益、状态预测均值、状态预测协方差矩阵、观测预测协方差矩阵和当前时刻的观测数据,计算状态估计值和状态协方差矩阵,并将状态估计值作为当前时刻的最终结果输出,将状态协方差矩阵扩维后输入到A模块。
2: 根据权利要求1所述的基于FPGA的无迹卡尔曼滤波系统,其中模块B包含K个Sigma点产生子模块B i ,i=1,2,...,K,B 1 ,B 2 ,...,B K 采用K个并行运算单元结构。
3: 根据权利要求1所述的基于FPGA的无迹卡尔曼滤波系统,其中模块C包含K个时间更新子模块C i ,i=1,2,...,K,C 1 ,C 2 ,...,C K 采用K个并行运算单元结构。
4: 根据权利要求1所述的基于FPGA的无迹卡尔曼滤波系统,其中模块D包含K个观测预测子模块D i ,i=1,2,...,K,D 1 ,D 2 ,...,D K 采用K个并行运算单元结构。
5: 根据权利要求1所述的基于FPGA的无迹卡尔曼滤波系统,其中模块E包含K个部分均值和协方差矩阵计算子模块E i ,i=1,2,...,K,E 1 ,E 2 ,...,E K 采用K个并行运算单元结构。
6: 一种基于FPGA的无迹卡尔曼滤波的并行实现方法,包括: (1)协方差矩阵Cholesky分解步骤,对分块对角协方差矩阵的对角线上的各子矩阵分别进行Cholesky分解,得到下三角矩阵,将下三角矩阵的L个行向量,分成K组,其中L=2m+n,m为状态量的维数,n为观测量的维数,K≥1; (2)Sigma点产生步骤,接收上一时刻的状态估计值,利用Cholesky分解得到的L个向量产生K组Sigma点; (3)时间更新步骤,将Sigma点代入系统模型的状态方程,得到状态预测值; (4)观测预测步骤,将状态预测值代入观测模型的观测方程,得到观测预测值; (5)部分均值和协方差矩阵计算步骤,对观测预测值和状态预测值进行加权求和,分别计算出部分状态预测协方差矩阵、部分观测预测协方差矩阵和部分互协方差矩阵; (6)总体均值计算步骤,计算状态预测均值和观测预测均值; (7)总体协方差矩阵计算步骤,分别计算状态预测协方差矩阵、观测预测协方差矩阵和互协方差矩阵; (8)观测预测协方差矩阵求逆步骤,对观测预测协方差矩阵采用奇异值分解方法求逆; (9)增益计算步骤,将互协方差矩阵和观测预测协方差矩阵的逆矩阵相乘得到增益; (10)状态量估计和状态协方差矩阵估计步骤,利用增益、状态预测均值、状态预测协方差矩阵、观测预测协方差矩阵和当前时刻的观测数据,计算状态估计值和状态协方差矩阵,并将状态估计值作为当前时刻的最终结果输出,对状态协方差矩阵扩维,返回到步骤(1)进行下一时刻的计算。
7: 根据权利要求6所述的无迹卡尔曼滤波的并行实现方法,其中步骤(1)所述的子矩阵Cholesky分解,先计算矩阵第i列的第一个非零元素,i≥1,并根据第一个非零元素同时计算该列的其它非零元素;再计算矩阵第i=i+1列的第一个非零元素,并根据第一个非零元素同时计算该列的其它非零元素,i≤N,N为子矩阵维数。
8: 根据权利要求6所述的无迹卡尔曼滤波的并行实现方法,其中步骤(8)所述的对观测预测协方差矩阵采用奇异值分解方法求逆,按如下步骤进行: (8a)若观测预测协方差矩阵维数为奇数,则对该矩阵补一行和一列零元素使其维数为偶数,否则不变; (8b)将观测预测协方差矩阵 划分为M/2×M/2个由2×2维的子矩阵 P ij = a 2 i - 1,2 j - 1 a 2 i - 1,2 j a 2 i , 2 j - 1 a 2 i , 2 j ]]> 组成的分块矩阵,M为观测预测协方差矩阵维数,a 2i-1,2j-1 、a 2i-1,2j 、a 2i,2j-1 和a 2i,2j 为观测预测协方差矩阵对应位置上的元素,为了表述方便将P ij 表示为 其中α ij =a 2i-1,2j-1 ,β ij =a 2i-1,2j ,γ ij =a 2i,2j-1 ,δ ij =a 2i,2j , i , j = 1 , · · · , M 2 ; ]]> (8c)将待求的正交矩阵U划分为M/2×M/2个由2×2维的子矩阵 U ij = μ ij ν ij σ ij τ ij , ]]> ( i , j = 1 , · · · , M 2 ) ]]> 组成的分块矩阵,其中,当i≠j时,U ij 的初始值为μ ij =ν ij =σ ij =τ ij =0,当i=j时,U ij 的初始值为μ ii =τ ii =1,σ ii =ν ii =0,将待求的正交矩阵V划分为M/2×M/2个由2×2维的子矩阵 V ij = η ij ω ij ρ ij ϵ ij ]]> 组成的分块矩阵,其中,当i≠j时,V ij 的初始值为η ij =ω ij =ρ ij =ε ij =0,当i=j时,V ij 的初始值为η ii =ε ii =1,ω ii =ρ ii =0; (8d)按如下公式计算φ+θ和φ-θ,并计算cosθ、sinθ、cosφ和sinφ: φ + θ = tan - 1 γ ii + β ii δ ii - α ii , ]]> φ - θ = tan - 1 γ ii - β ii δ ii + α ii , ]]> 其中,α ii 、β ii 、γ ii 和δ ii 分别是子矩阵 P ii = α ii β ii γ ii δ ii ]]> 对应位置上的元素, i = 1 , · · · , M 2 ; ]]> (8e)将对角线上的子矩阵P ii 按如下公式进行更新: α ii ′ 0 0 α ii ′ = c i L s i L - s i L c i L T α ii β ii γ ii δ ii c i R s i R - s i R c i R ]]> 其中,c i L 表示cosθ,s i L 表示sinθ,c i R 表示cosφ,s i R 表示sinφ,α ii 、β ii 、γ ii 和δ ii 分别是子矩阵 P ii = α ii β ii γ ii δ ii ]]> 更新前对应位置上的元素,α ii ′和δ ii ′分别是按上式更新后子矩阵 P ii = α ii ′ 0 0 δ ii ′ ]]> 对应位置上的元素, i = 1 , · · · , M 2 ; ]]> (8f)将非对角线上的子矩阵P ij (i≠j)按如下公式进行更新: α ij ′ β ij ′ γ ij ′ δ ij ′ = c i L s i L - s i L c i L T α ij β ij γ ij δ ij c j R s j R - s j R c j R ]]> 其中,c i L 表示cosθ,s i L 表示sinθ,c i R 表示cosφ,s i R 表示sinφ,α ij 、β ij 、γ ij 和δ ij 分别是子矩阵 P ij = α ij β ij γ ij δ ij ]]> 更新前对应位置上的元素,α ij ′、β ij ′、γ ij ′和δ ij ′是按上式更新后子矩阵 P ij = α ij ′ β ij ′ γ ij ′ δ ij ′ ]]> 对应位置上的元素, i , j = 1 , · · · , M 2 ]]> 且i≠j; (8g)将U ij 按如下公式进行更新: μ ij ′ ν ij ′ σ ij ′ τ ij ′ = μ ij ν ij σ ij τ ij c j L s j L - s j L c j L ]]> 其中,c i L 表示cosθ,s i L 表示sinθ,c i R 表示cosφ,s i R 表示sinφ,μ ij 、ν ij 、σ ij 和τ ij 是更新前 U ij = μ ij ν ij σ ij τ ij ]]> 对应位置上的元素,μ ij ′、ν ij ′、σ ij ′和τ ij ′是按上式更新 后 U ij = μ ij ′ ν ij ′ σ ij ′ τ ij ′ ]]> 对应位置上的元素, i , j = 1 , · · · , M 2 ; ]]> (8h)将V ij 按如下公式进行更新: η ij ′ ω ij ′ ρ ij ′ ϵ ij ′ = η ij ω ij ρ ij ϵ ij c j R s j R - s j R c j R ]]> 其中,c i L 表示cosθ,s i L 表示sinθ,c i R 表示cosφ,s i R 表示sinφ,η ij 、ω ij 、ρ ij 和ε ij 是更新前 V ij = η ij ω ij ρ ij ϵ ij ]]> 对应位置上的元素,η ij ′、ω ij ′、ρ ij ′和ε ij ′是按式23)更新后 V ij = η ij ′ ω ij ′ ρ ij ′ ϵ ij ′ ]]> 对应位置上的元素, i , j = 1 , · · · , M 2 ; ]]> (8i)将步骤(8e)~(8h)更新后的矩阵矩阵 U和V的子矩阵内部进行元素交换; (8j)将矩阵 U和V各子矩阵之间进行元素交换,交换后的矩阵 U和V代入步骤(8d); (8k)将步骤(8d)~(8j)重复S(M-1)次,最后得到S(M-1)次更新后的正交矩阵U和V,并由S(M-1)次更新后的 得到对角矩阵∑,其中,S=log 2 M; (8l)将对角矩阵∑的对角线上的非零元素求倒数,得到∑ -1 ,则 的逆矩阵为V∑ -1 U T 。

说明书


基于FPGA的无迹卡尔曼滤波系统及并行实现方法

    【技术领域】

    本发明属于信号处理技术领域,涉及非线性滤波方法,可用于目标跟踪和参数估计。

    背景技术

    滤波理论是在对系统可观测信号进行测量的基础上,根据一定的滤波准则,对系统的状态进行估计的理论和方法。根据贝叶斯理论,最优估计只是一个理想化的解,一般情况下,无法得到它的解析形式。卡尔曼(Kalman)滤波是目前最经典、应用最广泛的线性滤波器,当系统为线性高斯分布时,它可以得到递归贝叶斯估计的最小均方误差解。然而,实际的系统往往是非线性、非高斯的,无法采用卡尔曼滤波求解,为此提出了大量非线性滤波方法,主要可分为粒子滤波和高斯滤波两大类。

    粒子滤波是一种贝叶斯框架下基于采样的非线性滤波方法,它使用一些带权值的样本粒子来近似模拟先验和后验概率分布。这里的样本粒子是随机采样得到的,当样本数目足够大时,粒子滤波趋于最优贝叶斯估计,可以得到很好的滤波精度。但是,粒子滤波计算量太大,实时性差,难以在工程中应用。

    高斯滤波以扩展卡尔曼滤波(Extended Kalman Filter,EKF)和无迹卡尔曼滤波(Unscented Kalman Filter,UKF)为代表。前者是一种弱非线性滤波算法,它将非线性函数通过一定的规则(如泰勒级数展开等)进行线性化处理,在一定程度上提高了非线性目标的跟踪性能,具有很好的实时性,目前已在军用和民用领域得到广泛应用。然而,当系统呈现强非线性时,一阶线性化近似会带来较大的误差,可能导致滤波器不稳定甚至发散。

    UKF(Unscented Kalman Filter)是一种基于UT(Unscented Transform)变换的新滤波算法。该算法摒弃了对非线性函数进行线性化的传统做法,转而从统计学的角度寻找解决问题的思路。与粒子滤波的随机采样方式不同,UKF选取的Sigma样本点很少,且是按照一定规则确定性选取的,实时性显著优于粒子滤波。与EKF算法相比,UKF算法对于高斯输入的非线性函数的近似可以精确到三阶,对于非高斯输入的非线性函数的近似,至少可以精确到二阶,精度上明显优于EKF。因此,UKF可以在滤波精度和实时性之间做到良好的折衷,具有广泛的应用前景。

    虽然与粒子滤波相比,UKF的实时性已有了明显提高,但UKF中仍涉及到诸如矩阵求逆和Cholesky分解等复杂运算,当系统状态维数和观测维数较大时,运算速度明显降低,硬件实现难度远大于EKF。

    FPGA具有大容量的Block RAM资源可用于存储大量数据和实现查找表等功能;大量的DSP48E资源可以实现高效的浮点数加法、减法和乘法等运算;丰富的逻辑资源可以实现大规模并行运算。随着超大规模集成电路技术的发展,FPGA的性能也在不断提高,充分利用FPGA的这一特点会大大提高算法的运算速度。

    【发明内容】

    本发明的目的是针对上述问题,提出一种基于FPGA的无迹卡尔曼滤波系统及并行实现方法,以充分利用FPGA易于实现大规模并行运算的特点,在保证滤波精度的同时提高运算速度,降低硬件实现复杂度。

    为实现上述目的,本发明基于FPGA的无迹卡尔曼滤波系统,包括:

    协方差矩阵Cholesky分解模块A,用于对分块对角协方差矩阵的对角线上的各子矩阵分别进行Cholesky分解,得到下三角矩阵,将下三角矩阵的L个行向量,分成K组,分别输入到Sigma点产生模块,其中L=2m+n,m为状态量的维数,n为观测量的维数,K≥1;

    Sigma点产生模块B,用于接收上一时刻的状态估计值,利用A模块得到的结果产生K组Sigma点,分别输入到时间更新模块,其中第一组有2L/K+1个采样点,其余各组有2L/K个采样点;

    时间更新模块C,用于把接收到的Sigma点代入系统模型的状态方程,得到状态预测值,输入到观测预测模块;

    观测预测模块D,用于把状态预测值代入观测模型的观测方程,得到观测预测值,并将观测预测值和状态预测值输入到部分均值和协方差矩阵计算模块;

    部分均值和协方差矩阵计算模块E,用于对观测预测值和状态预测值加权求和,分别计算部分状态预测协方差矩阵、部分观测预测协方差矩阵和部分互协方差矩阵,并将其计算结果输入到总体均值计算模块和总体协方差矩阵计算模块;

    总体均值计算模块F,用于接收部分均值和协方差矩阵计算模块的结果,分别计算状态预测均值和观测预测均值,并将其计算结果输入到总体协方差矩阵计算模块和状态量估计和状态协方差矩阵估计模块;

    总体协方差矩阵计算模块G,用于接收部分均值和协方差矩阵计算模块和总体均值计算模块的结果,分别计算状态预测协方差矩阵、观测预测协方差矩阵和互协方差矩阵,并将观测预测协方差矩阵输入到观测预测协方差矩阵求逆模块,将互协方差矩阵输入到增益计算模块,将状态预测协方差矩阵和观测预测协方差矩阵输入到状态量估计和状态协方差矩阵估计模块;

    观测预测协方差矩阵求逆模块H,用于对观测预测协方差矩阵采用奇异值分解方法求逆,并将求逆结果输入到增益计算模块;

    增益计算模块I,用于接收互协方差矩阵和观测预测协方差矩阵的逆矩阵,计算增益,并将增益输入到状态量估计和状态协方差矩阵估计模块;

    状态量估计和状态协方差矩阵估计模块J,用于接收增益、状态预测均值、状态预测协方差矩阵、观测预测协方差矩阵和当前时刻的观测数据,计算状态估计值和状态协方差矩阵,并将状态估计值作为当前时刻的最终结果输出,将状态协方差矩阵扩维后输入到A模块。

    为实现上述目的,本发明基于FPGA的无迹卡尔曼滤波并行实现方法,包括如下步骤:

    (1)协方差矩阵Cholesky分解步骤,对分块对角协方差矩阵的对角线上的各子矩阵分别进行Cholesky分解,得到下三角矩阵,将下三角矩阵的L个行向量,分成K组,其中L=2m+n,m为状态量的维数,n为观测量的维数,K≥1;

    (2)Sigma点产生步骤,接收上一时刻的状态估计值,利用Cholesky分解得到的L个向量产生K组Sigma点;

    (3)时间更新步骤,将Sigma点代入系统模型的状态方程,得到状态预测值;

    (4)观测预测步骤,将状态预测值代入观测模型的观测方程,得到观测预测值;

    (5)部分均值和协方差矩阵计算步骤,对观测预测值和状态预测值进行加权求和,分别计算出部分状态预测协方差矩阵、部分观测预测协方差矩阵和部分互协方差矩阵;

    (6)总体均值计算步骤,计算状态预测均值和观测预测均值;

    (7)总体协方差矩阵计算步骤,分别计算状态预测协方差矩阵、观测预测协方差矩阵和互协方差矩阵;

    (8)观测预测协方差矩阵求逆步骤,对观测预测协方差矩阵采用奇异值分解方法求逆;

    (9)增益计算步骤,将互协方差矩阵和观测预测协方差矩阵的逆矩阵相乘得到增益;

    (10)状态量估计和状态协方差矩阵估计步骤,利用增益、状态预测均值、状态预测协方差矩阵、观测预测协方差矩阵和当前时刻的观测数据,计算状态估计值和状态协方差矩阵,并将状态估计值作为当前时刻的最终结果输出,对状态协方差矩阵扩维,返回到步骤(1)进行下一时刻的计算。

    本发明具有如下优点:

    本发明的滤波系统由于从总体上给出了UKF的并行结构,提高了滤波的速度;

    本发明的滤波方法由于将分块对角矩阵的Cholesky分解转化为对对角线上各子矩阵的Cholesky分解,降低了进行Cholesky分解的矩阵维数,易于硬件实现;

    本发明由于给出了Cholesky分解矩阵各元素在FPGA中的并行运算方法,提高了滤波的速度。

    本发明由于采用奇异值分解实现矩阵求逆,并将求逆矩阵分为多个处理2×2维子矩阵的并行运算单元在FPGA中同时进行运算,降低了硬件实现复杂度。

    【附图说明】

    图1是本发明的无迹卡尔曼滤波系统结构图;

    图2是本发明的无迹卡尔曼滤波方法流程图;

    图3是现有M×M维矩阵奇异值分解各子矩阵之间进行元素交换图。

    【具体实施方式】

    参照图1,本发明基于FPGA的无迹卡尔曼滤波系统包括:协方差矩阵Cholesky分解模块A、Sigma点产生模块B、时间更新模块C、观测预测模块D、部分均值和协方差矩阵计算模块E、总体均值计算模块F、总体协方差矩阵计算模块G、观测预测协方差矩阵求逆模块H、增益计算模块I和状态量估计和状态协方差矩阵估计模块J。其中,模块B包含K个Sigma点产生子模块Bi,i=1,2,...,K,B1,B2,...,BK采用K个并行运算单元结构,模块C包含K个时间更新子模块Ci,i=1,2,...,K,C1,C2,...,CK采用K个并行运算单元结构,模块D包含K个观测预测子模块Di,i=1,2,...,K,D1,D2,...,DK采用K个并行运算单元结构,模块E包含K个部分均值和协方差矩阵计算子模块Ei,i=1,2,...,K,E1,E2,...,EK采用K个并行运算单元结构。模块A实现协方差矩阵Cholesky分解,并将分解得到的下三角矩阵的行向量分成K组,分别送入模块B的K个子模块,模块B的K个子模块Bi分别产生一组Sigma点,送入模块Ci,模块Ci分别对该组Sigma点进行时间更新产生一组状态预测值送入模块Di,模块Di将该组状态预测值代入观测方程产生一组观测预测值并将状态预测值和观测预测值一起送入模块Ei,模块Ei对该组观测预测值和状态预测值加权求和,分别计算部分状态预测协方差矩阵、部分观测预测协方差矩阵和部分互协方差矩阵。将E1,E2,...,EK的计算结果送入模块F和模块G,模块F采用E1,E2,...,EK输入的K组计算结果实现总体均值的计算,并将计算结果送入模块G,模块G实现总体协方差矩阵计算,并将计算结果送入模块H,模块H对观测预测协方差矩阵求逆,并将计算结果送入模块I,模块I计算增益,并将计算结果送入模块J,模块J计算状态估计值和状态协方差矩阵,并将状态估计值输出,将状态协方差矩阵扩维后送入模块A。

    本系统的工作原理如下:

    协方差矩阵Cholesky分解模块A采用Cholesky分解方法将协方差矩阵(L+λ)Px分解为一个上三角矩阵Δ和下三角矩阵ΔT的乘积,即(L+λ)Px=ΔΔT。由于Px是由状态协方差矩阵Pk‑1、状态噪声协方差矩阵Q和观测噪声协方差矩阵R扩维后得到的,所以(L+λ)Px矩阵是分块对角矩阵,对分块对角协方差矩阵的对角线上的各子矩阵Pk‑1、Q和R分别进行Cholesky分解,得到下三角矩阵ΔT,其中L=2m+n,m为状态量的维数,n为观测量的维数,λ=α2(L+k)‑L,α为确定采样点的散布程度,k为影响采样点分布的四阶矩;

    Sigma点产生子模块Bi,i=1,2,...,K,接收上一时刻的状态估计值并利用模块A的第i组结果(表示ΔT的第j个行向量,j=1+L(i‑1)/K,...,Li/K),按照1)式分别产生L个Sigma点χj和L个Sigma点χj+L,其中子模块B1产生2L/K+1个Sigma点,包含其余子模块产生2L/K个Sigma点;

     <mrow> <msub> <mi>&chi;</mi> <mi>j</mi> </msub> <mo>=</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msubsup> <mi>&Delta;</mi> <mi>j</mi> <mi>T</mi> </msubsup> <mo>,</mo> </mrow>j=1+L(i‑1)/K,...,Li/K

                                                1)

     <mrow> <msub> <mi>&chi;</mi> <mrow> <mi>j</mi> <mo>+</mo> <mi>L</mi> </mrow> </msub> <mo>=</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msubsup> <mi>&Delta;</mi> <mi>j</mi> <mi>T</mi> </msubsup> <mo>,</mo> </mrow>i=1,...,K

    时间更新子模块Ci,i=1,2,...,K,将来自Bi的一组Sigma点代入系统模型的状态方程,得到状态预测值对于模块C1,j=0,1,...,2L/K,对于其余子模块,j=1,...,2L/K;

    观测预测子模块Di,i=1,2,...,K,把来自Ci的一组状态预测值代入观测模型的观测方程,得到观测预测值对于模块D1,j=0,1,...,2L/K,对于其余子模块,j=1,...,2L/K;

    部分均值和协方差矩阵计算子模块Ei,i=1,2,...,K,分别计算状态预测样本点的加权和观测预测样本点的加权和状态预测协方差矩阵观测预测协方差矩阵以及互协方差矩阵计算公式如下:

     <mrow> <msubsup> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>=</mo> <msubsup> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>+</mo> <msubsup> <mi>W</mi> <mi>j</mi> <mrow> <mo>(</mo> <mi>m</mi> <mo>)</mo> </mrow> </msubsup> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> <mrow> <mi>x</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> </mrow> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

     <mrow> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>=</mo> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>+</mo> <msubsup> <mi>W</mi> <mi>j</mi> <mrow> <mo>(</mo> <mi>m</mi> <mo>)</mo> </mrow> </msubsup> <msubsup> <mi>y</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>3</mn> <mo>)</mo> </mrow> </mrow>

     <mrow> <msubsup> <mi>P</mi> <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> <mi>i</mi> </msubsup> <mo>=</mo> <msubsup> <mi>P</mi> <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> <mi>i</mi> </msubsup> <mo>+</mo> <msubsup> <mi>W</mi> <mi>j</mi> <mrow> <mo>(</mo> <mi>c</mi> <mo>)</mo> </mrow> </msubsup> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> <mrow> <mi>x</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> </mrow> </msubsup> <msup> <mrow> <mo>(</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> <mrow> <mi>x</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> </mrow> </msubsup> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>4</mn> <mo>)</mo> </mrow> </mrow>

     <mrow> <msubsup> <mi>P</mi> <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> <mi>i</mi> </msubsup> <mo>=</mo> <msubsup> <mi>P</mi> <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> <mi>i</mi> </msubsup> <mo>+</mo> <msubsup> <mi>W</mi> <mi>j</mi> <mrow> <mo>(</mo> <mi>c</mi> <mo>)</mo> </mrow> </msubsup> <msubsup> <mi>y</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> </msubsup> <msup> <mrow> <mo>(</mo> <msubsup> <mi>y</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>5</mn> <mo>)</mo> </mrow> </mrow>

     <mrow> <msubsup> <mi>P</mi> <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> <mi>i</mi> </msubsup> <mo>=</mo> <msubsup> <mi>P</mi> <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> <mi>i</mi> </msubsup> <mo>+</mo> <msubsup> <mi>W</mi> <mi>j</mi> <mrow> <mo>(</mo> <mi>c</mi> <mo>)</mo> </mrow> </msubsup> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> <mrow> <mi>x</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> </mrow> </msubsup> <msup> <mrow> <mo>(</mo> <msubsup> <mi>y</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>6</mn> <mo>)</mo> </mrow> </mrow>

    其中,对于模块E1,j=0,1,...,2L/K,对于其余子模块,j=1,...,2L/K, <mrow> <msubsup> <mi>W</mi> <mn>0</mn> <mrow> <mo>(</mo> <mi>m</mi> <mo>)</mo> </mrow> </msubsup> <mo>=</mo> <mi>&lambda;</mi> <mo>/</mo> <mrow> <mo>(</mo> <mi>L</mi> <mo>+</mo> <mi>&lambda;</mi> <mo>)</mo> </mrow> <mo>,</mo> </mrow> <mrow> <msubsup> <mi>W</mi> <mn>0</mn> <mrow> <mo>(</mo> <mi>c</mi> <mo>)</mo> </mrow> </msubsup> <mo>=</mo> <mi>&lambda;</mi> <mo>/</mo> <mrow> <mo>(</mo> <mi>L</mi> <mo>+</mo> <mi>&lambda;</mi> <mo>)</mo> </mrow> <mo>+</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <msup> <mi>&alpha;</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>&beta;</mi> <mo>)</mo> </mrow> <mo>,</mo> </mrow>当j≠0时, <mrow> <msubsup> <mi>W</mi> <mi>j</mi> <mrow> <mo>(</mo> <mi>m</mi> <mo>)</mo> </mrow> </msubsup> <mo>=</mo> <msubsup> <mi>W</mi> <mi>j</mi> <mrow> <mo>(</mo> <mi>c</mi> <mo>)</mo> </mrow> </msubsup> <mo>=</mo> <mn>1</mn> <mo>/</mo> <mo>{</mo> <mn>2</mn> <mrow> <mo>(</mo> <mi>L</mi> <mo>+</mo> <mi>&lambda;</mi> <mo>)</mo> </mrow> <mo>}</mo> <mo>,</mo> </mrow>α>0,β≥0;

    总体均值计算模块F,按式7)和式8)计算状态预测均值和观测预测均值

     <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msubsup> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>7</mn> <mo>)</mo> </mrow> </mrow>

     <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>8</mn> <mo>)</mo> </mrow> </mrow>

    其中,i=1,2,...,K;

    总体协方差矩阵计算模块G,对K个模块Ei计算得到的部分状态预测协方差矩阵部分观测预测协方差矩阵以及部分互协方差矩阵分别求和,得到状态预测协方差矩阵观测预测协方差矩阵和互协方差矩阵然后按式9)~式11)更新各个协方差矩阵:

     <mrow> <msub> <mi>P</mi> <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> </msub> <mo>=</mo> <msub> <mi>P</mi> <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> </msub> <mo>+</mo> <mrow> <mo>(</mo> <mi>&beta;</mi> <mo>-</mo> <msup> <mi>&alpha;</mi> <mn>2</mn> </msup> <mo>)</mo> </mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <msubsup> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>T</mi> </msubsup> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <msup> <mi>&alpha;</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>&beta;</mi> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <msup> <mrow> <mo>(</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1,0</mn> </mrow> <mrow> <mi>x</mi> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </mrow> </msubsup> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>+</mo> <mrow> <mo>(</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1,0</mn> </mrow> <mrow> <mi>x</mi> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </mrow> </msubsup> <mo>)</mo> </mrow> <msubsup> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>T</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>9</mn> <mo>)</mo> </mrow> </mrow>

     <mrow> <msub> <mi>P</mi> <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> </msub> <mo>=</mo> <msub> <mi>P</mi> <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> </msub> <mo>+</mo> <mrow> <mo>(</mo> <mi>&beta;</mi> <mo>-</mo> <msup> <mi>&alpha;</mi> <mn>2</mn> </msup> <mo>)</mo> </mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>T</mi> </msubsup> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <msup> <mi>&alpha;</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>&beta;</mi> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <msup> <mrow> <mo>(</mo> <msubsup> <mi>y</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1,0</mn> </mrow> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>+</mo> <mrow> <mo>(</mo> <msubsup> <mi>y</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1,0</mn> </mrow> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>T</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>10</mn> <mo>)</mo> </mrow> </mrow>

     <mrow> <msub> <mi>P</mi> <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> </msub> <mo>=</mo> <msub> <mi>P</mi> <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> </msub> <mo>+</mo> <mrow> <mo>(</mo> <mi>&beta;</mi> <mo>-</mo> <msup> <mi>&alpha;</mi> <mn>2</mn> </msup> <mo>)</mo> </mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>T</mi> </msubsup> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <msup> <mi>&alpha;</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>&beta;</mi> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <msup> <mrow> <mo>(</mo> <msubsup> <mi>y</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1,0</mn> </mrow> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </msubsup> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>+</mo> <mrow> <mo>(</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1,0</mn> </mrow> <mrow> <mi>x</mi> <mrow> <mo>(</mo> <mn>0</mn> <mo>)</mo> </mrow> </mrow> </msubsup> <mo>)</mo> </mrow> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>T</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>11</mn> <mo>)</mo> </mrow> </mrow>

    其中,i=1,2,...,K,α,β为权值中的参数,α>0,β≥0,为模块C1计算出的第一个状态预测值,为模块D1计算出的第一个观测预测值;

    观测预测协方差矩阵求逆模块H,对观测预测协方差矩阵进行奇异值分解,得到正交矩阵U和正交矩阵V以及对角矩阵∑,对∑求逆得到∑‑1,则的逆矩阵的计算公式如下;

     <mrow> <msubsup> <mi>P</mi> <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>=</mo> <mi>V</mi> <msup> <mi>&Sigma;</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <msup> <mi>U</mi> <mi>T</mi> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>12</mn> <mo>)</mo> </mrow> </mrow>

    增益计算模块I,将互协方差矩阵和观测预测协方差矩阵的逆矩阵相乘,得到增益K,计算公式如下;

     <mrow> <mi>K</mi> <mo>=</mo> <msub> <mi>P</mi> <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> </msub> <msubsup> <mi>P</mi> <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>13</mn> <mo>)</mo> </mrow> </mrow>

    状态协方差矩阵估计模块J,接收增益K、状态预测均值观测预测均值状态预测协方差矩阵观测预测协方差矩阵和当前时刻的观测数据yk,计算状态估计值和状态协方差矩阵Pk,并将作为当前时刻的最终结果输出,将Pk扩维后输入到协方差矩阵Cholesky分解模块A,计算公式如下。

     <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <mo>=</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mi>K</mi> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>k</mi> </msub> <mo>-</mo> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>14</mn> <mo>)</mo> </mrow> </mrow>

     <mrow> <msub> <mi>P</mi> <mi>k</mi> </msub> <mo>=</mo> <msub> <mi>P</mi> <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> </msub> <mo>-</mo> <msub> <mi>KP</mi> <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mrow> </msub> <msup> <mi>K</mi> <mi>T</mi> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>15</mn> <mo>)</mo> </mrow> </mrow>

    参照图2,本发明的基于FPGA的无迹卡尔曼滤波方法,包括以下步骤:

    步骤1,对分块对角协方差矩阵的对角线上的各子矩阵分别进行Cholesky分解。

    1.1)计算矩阵第i列的第一个非零元素,i≥1,并根据第一个非零元素同时计算该列的其它非零元素;

    1.2)计算矩阵第i=i+1列的第一个非零元素,并根据第一个非零元素同时计算该列的其它非零元素,i≤N,N为子矩阵维数。

    步骤2,接收上一时刻,即k‑1时刻的状态估计值利用步骤1Cholesky分解得到的L个向量产生K组Sigma点:其中分别为χk‑1中对应于状态量、过程噪声和观测噪声的分量。

    步骤3,将步骤2得到的K组Sigma点χk‑1中对应于状态量的分量和对应于过程噪声的分量代入到如式16)所示的系统模型的状态方程中,得到K组状态预测值:

     <mrow> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>x</mi> </msubsup> <mo>=</mo> <mi>F</mi> <mo>[</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>x</mi> </msubsup> <mo>,</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>w</mi> </msubsup> <mo>]</mo> <mo>.</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>16</mn> <mo>)</mo> </mrow> </mrow>

    步骤4,将步骤3得到的K组状态预测值和K组Sigma点χk‑1中对应于观测噪声的分量代入到如式17)所示的观测模型的观测方程中,得到观测预测值:

     <mrow> <msub> <mi>y</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mi>H</mi> <mo>[</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>x</mi> </msubsup> <mo>,</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>v</mi> </msubsup> <mo>]</mo> <mo>.</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>17</mn> <mo>)</mo> </mrow> </mrow>

    步骤5,对步骤4得到的K组观测预测值yk|k‑1和步骤3得到的状态预测值进行加权求和,得到K组状态预测样本点的加权和和K组观测预测样本点的加权和按式4)~6)分别计算部分状态预测协方差矩阵部分观测预测协方差矩阵以及部分互协方差矩阵其中i=1,2,...,K。

    步骤6,将步骤5得到的K组状态预测样本点的加权和求和得到状态预测均值将步骤5得到的K组观测预测样本点的加权和求和得到观测预测均值其中i=1,2,...,K。

    步骤7,计算总体协方差矩阵。

    7.1)将步骤5得到的K组部分状态预测协方差矩阵K组部分观测预测协方差矩阵以及K组部分互协方差矩阵分别求和,得到状态预测协方差矩阵观测预测协方差矩阵和互协方差矩阵其中i=1,2,...,K;

    7.2)按式9)~式11)更新各个协方差矩阵。

    步骤8,对步骤7得到的观测预测协方差矩阵求逆。

    8.1)若步骤7.2)得到的更新后的观测预测协方差矩阵维数为奇数,则对该矩阵补一行和一列零元素使其维数为偶数,否则不变;

    8.2)将划分为M/2×M/2个由2×2维的子矩阵 <mrow> <msub> <mi>P</mi> <mi>ij</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>a</mi> <mrow> <mn>2</mn> <mi>i</mi> <mo>-</mo> <mn>1,2</mn> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mn>2</mn> <mi>i</mi> <mo>-</mo> <mn>1,2</mn> <mi>j</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>a</mi> <mrow> <mn>2</mn> <mi>i</mi> <mo>,</mo> <mn>2</mn> <mi>j</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mn>2</mn> <mi>i</mi> <mo>,</mo> <mn>2</mn> <mi>j</mi> </mrow> </msub> </mtd> </mtr> </mtable> </mfenced> </mrow>组成的分块矩阵,M为观测预测协方差矩阵维数,a2i‑1,2j‑1、a2i‑1,2j、a2i,2j‑1和a2i,2j为观测预测协方差矩阵对应位置上的元素,为了表述方便将Pij表示为 <mrow> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&alpha;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&beta;</mi> <mi>ij</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&gamma;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&delta;</mi> <mi>ij</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>其中αij=a2i‑1,2j‑1,βij=a2i‑1,2j,γij=a2i,2j‑1,δij=a2i,2j,i,j=1,…,

    8.3)将待求的正交矩阵U划分为M/2×M/2个由2×2维的子矩阵 <mrow> <msub> <mi>U</mi> <mi>ij</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&mu;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&nu;</mi> <mi>ij</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&sigma;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&tau;</mi> <mi>ij</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>(i,j=1,…,)组成的分块矩阵,其中,当i≠j时,Uij的初始值为μij=νij=σij=τij=0,当i=j时,Uij的初始值为μii=τii=1,σii=νii=0,将待求的正交矩阵V划分为M/2×M/2个由2×2维的子矩阵 <mrow> <msub> <mi>V</mi> <mi>ij</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&eta;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&omega;</mi> <mi>ij</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&rho;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&epsiv;</mi> <mi>ij</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>(i,j=1,…,)组成的分块矩阵,其中,当i≠j时,Vij的初始值为ηij=ωij=ρij=εij=0,当i=j时,Vij的初始值为ηii=εii=1,ωii=ρii=0;

    8.4)按如下公式计算φ+θ和φ‑θ,并计算cosθ、sinθ、cosφ和sinφ:

     <mrow> <mi>&phi;</mi> <mo>+</mo> <mi>&theta;</mi> <mo>=</mo> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mfrac> <mrow> <msub> <mi>&gamma;</mi> <mi>ii</mi> </msub> <mo>+</mo> <msub> <mi>&beta;</mi> <mi>ii</mi> </msub> </mrow> <mrow> <msub> <mi>&delta;</mi> <mi>ii</mi> </msub> <mo>-</mo> <msub> <mi>&alpha;</mi> <mi>ii</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>18</mn> <mo>)</mo> </mrow> </mrow>

     <mrow> <mi>&phi;</mi> <mo>-</mo> <mi>&theta;</mi> <mo>=</mo> <msup> <mi>tan</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mfrac> <mrow> <msub> <mi>&gamma;</mi> <mi>ii</mi> </msub> <mo>-</mo> <msub> <mi>&beta;</mi> <mi>ii</mi> </msub> </mrow> <mrow> <msub> <mi>&delta;</mi> <mi>ii</mi> </msub> <mo>+</mo> <msub> <mi>&alpha;</mi> <mi>ii</mi> </msub> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>19</mn> <mo>)</mo> </mrow> </mrow>

    其中,αii、βii、γii和δii分别是子矩阵 <mrow> <msub> <mi>P</mi> <mi>ii</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&alpha;</mi> <mi>ii</mi> </msub> </mtd> <mtd> <msub> <mi>&beta;</mi> <mi>ii</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&gamma;</mi> <mi>ii</mi> </msub> </mtd> <mtd> <msub> <mi>&delta;</mi> <mi>ii</mi> </msub> </mtd> </mtr> </mtable> </mfenced> </mrow>对应位置上的元素,i=1,…,

    8.5)将对角线上的子矩阵Pii(i=1,…,)按如下公式进行更新:

     <mrow> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>&alpha;</mi> <mi>ii</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <msubsup> <mi>&delta;</mi> <mi>ii</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <msup> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>c</mi> <mi>i</mi> <mi>L</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>s</mi> <mi>i</mi> <mi>L</mi> </msubsup> </mtd> </mtr> <mtr> <mtd> <mo>-</mo> <msubsup> <mi>s</mi> <mi>i</mi> <mi>L</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>c</mi> <mi>i</mi> <mi>L</mi> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mi>T</mi> </msup> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&alpha;</mi> <mi>ii</mi> </msub> </mtd> <mtd> <msub> <mi>&beta;</mi> <mi>ii</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&gamma;</mi> <mi>ii</mi> </msub> </mtd> <mtd> <msub> <mi>&delta;</mi> <mi>ii</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>c</mi> <mi>i</mi> <mi>R</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>s</mi> <mi>i</mi> <mi>R</mi> </msubsup> </mtd> </mtr> <mtr> <mtd> <mo>-</mo> <msubsup> <mi>s</mi> <mi>i</mi> <mi>R</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>c</mi> <mi>i</mi> <mi>R</mi> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo></mo> <mn>20</mn> <mo>)</mo> </mrow> </mrow>

    其中,表示cosθ,表示sinθ,表示cosφ,表示sinφ,αii、βii、γii和δii分别是子矩阵 <mrow> <msub> <mi>P</mi> <mi>ii</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&alpha;</mi> <mi>ii</mi> </msub> </mtd> <mtd> <msub> <mi>&beta;</mi> <mi>ii</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&gamma;</mi> <mi>ii</mi> </msub> </mtd> <mtd> <msub> <mi>&delta;</mi> <mi>ii</mi> </msub> </mtd> </mtr> </mtable> </mfenced> </mrow>更新前对应位置上的元素,α′ii和δ′ii分别是按式20)更新后子矩阵 <mrow> <msub> <mi>P</mi> <mi>ii</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>&alpha;</mi> <mi>ii</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <msubsup> <mi>&delta;</mi> <mi>ii</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> </mtable> </mfenced> </mrow>对应位置上的元素,i=1,…,

    8.6)将非对角线上的子矩阵Pij(i≠j)按如下公式进行更新:

     <mrow> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>&alpha;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&beta;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> <mtr> <mtd> <msubsup> <mi>&gamma;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&delta;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <msup> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>c</mi> <mi>i</mi> <mi>L</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>s</mi> <mi>i</mi> <mi>L</mi> </msubsup> </mtd> </mtr> <mtr> <mtd> <msubsup> <mrow> <mo>-</mo> <mi>s</mi> </mrow> <mi>i</mi> <mi>L</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>c</mi> <mi>i</mi> <mi>L</mi> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mi>T</mi> </msup> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&alpha;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&beta;</mi> <mi>ij</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&gamma;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&delta;</mi> <mi>ij</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>c</mi> <mi>j</mi> <mi>R</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>s</mi> <mi>j</mi> <mi>R</mi> </msubsup> </mtd> </mtr> <mtr> <mtd> <msubsup> <mrow> <mo>-</mo> <mi>s</mi> </mrow> <mi>j</mi> <mi>R</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>c</mi> <mi>j</mi> <mi>R</mi> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>21</mn> <mo>)</mo> </mrow> </mrow>

    其中,表示cosθ,表示sinθ,表示cosφ,表示sinφ,αij、βij、γij和δij分别是子矩阵 <mrow> <msub> <mi>P</mi> <mi>ij</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&alpha;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&beta;</mi> <mi>ij</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&gamma;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&delta;</mi> <mi>ij</mi> </msub> </mtd> </mtr> </mtable> </mfenced> </mrow>更新前对应位置上的元素,α′ij、β′ij、γ′ij和δ′ij是按式21)更新后子矩阵 <mrow> <msub> <mi>P</mi> <mi>ij</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>&alpha;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&beta;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> <mtr> <mtd> <msubsup> <mi>&gamma;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&delta;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> </mtable> </mfenced> </mrow>对应位置上的元素,i,j=1,…,且i≠j;

    8.7)将Uij按如下公式进行更新:

     <mrow> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>&mu;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&nu;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> <mtr> <mtd> <msubsup> <mi>&sigma;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&tau;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&mu;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&nu;</mi> <mi>ij</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&sigma;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&tau;</mi> <mi>ij</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>c</mi> <mi>j</mi> <mi>L</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>s</mi> <mi>j</mi> <mi>L</mi> </msubsup> </mtd> </mtr> <mtr> <mtd> <mo>-</mo> <msubsup> <mi>s</mi> <mi>j</mi> <mi>L</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>c</mi> <mi>j</mi> <mi>L</mi> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>22</mn> <mo>)</mo> </mrow> </mrow>

    其中,表示cosθ,表示sinθ,表示cosφ,表示sinφ,μij、νij、σij和τij是更新前 <mrow> <msub> <mi>U</mi> <mi>ij</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&mu;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&nu;</mi> <mi>ij</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&sigma;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&tau;</mi> <mi>ij</mi> </msub> </mtd> </mtr> </mtable> </mfenced> </mrow>对应位置上的元素,μ′ij、ν′ij、σ′ij和τ′ij是按式22)更新后 <mrow> <msub> <mi>U</mi> <mi>ij</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>&mu;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&nu;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> <mtr> <mtd> <msubsup> <mi>&sigma;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&tau;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> </mtable> </mfenced> </mrow>对应位置上的元素,i,j=1,…,

    8.8)将Vij按如下公式进行更新:

     <mrow> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>&eta;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&omega;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> <mtr> <mtd> <msubsup> <mi>&rho;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&epsiv;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&eta;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&omega;</mi> <mi>ij</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&rho;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&epsiv;</mi> <mi>ij</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>c</mi> <mi>j</mi> <mi>R</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>s</mi> <mi>j</mi> <mi>R</mi> </msubsup> </mtd> </mtr> <mtr> <mtd> <mo>-</mo> <msubsup> <mi>s</mi> <mi>j</mi> <mi>R</mi> </msubsup> </mtd> <mtd> <msubsup> <mi>c</mi> <mi>j</mi> <mi>R</mi> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>23</mn> <mo>)</mo> </mrow> </mrow>

    其中,表示cosθ,表示sinθ,表示cosφ,表示sinφ,ηij、ωij、ρij和εij是更新前 <mrow> <msub> <mi>V</mi> <mi>ij</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&eta;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&omega;</mi> <mi>ij</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&rho;</mi> <mi>ij</mi> </msub> </mtd> <mtd> <msub> <mi>&epsiv;</mi> <mi>ij</mi> </msub> </mtd> </mtr> </mtable> </mfenced> </mrow>对应位置上的元素,η′ij、ω′ij、ρ′ij和ε′ij是按式23)更新后 <mrow> <msub> <mi>V</mi> <mi>ij</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msubsup> <mi>&eta;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&omega;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> <mtr> <mtd> <msubsup> <mi>&rho;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> <mtd> <msubsup> <mi>&epsiv;</mi> <mi>ij</mi> <mo>&prime;</mo> </msubsup> </mtd> </mtr> </mtable> </mfenced> </mrow>对应位置上的元素,i,j=1,…,

    8.9)将步骤8.5)~8.8)更新后的矩阵U和V的子矩阵内部进行元素交换,交换规则如下:

    当i=1,j=1时, <mrow> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msup> <mi>&alpha;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&alpha;</mi> <mo>;</mo> <msup> <mi>&beta;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&beta;</mi> <mo>;</mo> </mtd> </mtr> <mtr> <mtd> <msup> <mi>&gamma;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&gamma;</mi> <mo>;</mo> <msup> <mi>&delta;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&delta;</mi> <mo>;</mo> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>24</mn> <mo>)</mo> </mrow> </mrow>

    当i=1,j≠1时, <mrow> <mrow> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msup> <mi>&alpha;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&beta;</mi> <mo>;</mo> <msup> <mi>&beta;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&alpha;</mi> <mo>;</mo> </mtd> </mtr> <mtr> <mtd> <msup> <mi>&gamma;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&delta;</mi> <mo>;</mo> <msup> <mi>&delta;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&gamma;</mi> <mo>;</mo> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> </mrow> <mrow> <mn>25</mn> <mo>)</mo> </mrow> </mrow>

    当i≠1,j=1时, <mrow> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msup> <mi>&alpha;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&gamma;</mi> <mo>;</mo> <msup> <mi>&beta;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&delta;</mi> <mo>;</mo> </mtd> </mtr> <mtr> <mtd> <msup> <mi>&gamma;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&alpha;</mi> <mo>;</mo> <msup> <mi>&delta;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&beta;</mi> <mo>;</mo> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>26</mn> <mo>)</mo> </mrow> </mrow>

    其它情况 <mrow> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msup> <mi>&alpha;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&delta;</mi> <mo>;</mo> <msup> <mi>&beta;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&gamma;</mi> <mo>;</mo> </mtd> </mtr> <mtr> <mtd> <msup> <mi>&gamma;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&beta;</mi> <mo>;</mo> <msup> <mi>&delta;</mi> <mo>&prime;</mo> </msup> <mo>&LeftArrow;</mo> <mi>&alpha;</mi> <mo>;</mo> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mn>27</mn> <mo>)</mo> </mrow> </mrow>

    其中,α、β、γ和δ是交换前子矩阵 <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <mi>&alpha;</mi> </mtd> <mtd> <mi>&beta;</mi> </mtd> </mtr> <mtr> <mtd> <mi>&gamma;</mi> </mtd> <mtd> <mi>&delta;</mi> </mtd> </mtr> </mtable> </mfenced>对应位置上的元素,α′、β′、γ′和δ′是交换后子矩阵 <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msup> <mi>&alpha;</mi> <mo>&prime;</mo> </msup> </mtd> <mtd> <msup> <mi>&beta;</mi> <mo>&prime;</mo> </msup> </mtd> </mtr> <mtr> <mtd> <msup> <mi>&gamma;</mi> <mo>&prime;</mo> </msup> </mtd> <mtd> <msup> <mi>&delta;</mi> <mo>&prime;</mo> </msup> </mtd> </mtr> </mtable> </mfenced>对应位置上的元素,i,j是子矩阵的下标,i,j=1,…,

    8.10)将矩阵U和V各子矩阵之间进行元素交换,交换规则如图3所示,并将交换后的矩阵U和V代入步骤8.4);

    8.11)将步骤8.4)~8.9)重复S(M‑1)次,最后得到S(M‑1)次更新后的正交矩阵U和V,并由S(M‑1)次更新后的得到对角矩阵∑,其中,S=log2M;

    8.12)将对角矩阵∑的对角线上的非零元素求倒数,得到∑‑1,则的逆矩阵为V∑‑1UT

    步骤9,将步骤7得到的互协方差矩阵和步骤8得到的观测预测协方差矩阵的逆矩阵相乘,得到增益K。

    步骤10,将步骤9得到的增益K、步骤6得到的状态预测均值观测预测均值和当前时刻(k时刻)的观测数据yk代入14)式得到状态估计值将步骤7得到的状态预测协方差矩阵观测预测协方差矩阵和步骤9得到的增益K代入15)式得到状态协方差矩阵估计值Pk,并将状态估计值作为当前时刻的最终结果输出,对状态协方差矩阵Pk扩维,返回到步骤1进行下一时刻的计算。

    本发明的效果可通过如下仿真实验说明:

    1.仿真条件

    本实验采用二维平面内静止布置的三个被动传感器测量同一平面内的单个运动目标,三个被动传感器成正三角形分布,各传感器位置坐标分别为(20,20)、(30,20)和(25,28.66),单位为km,每个传感器的采样周期T为10ms。目标在坐标轴上的初始位置为x0=0km,y0=23km,目标以速度作匀速直线运动。系统模型的状态方程为:

    xk=Fk,k‑1xk‑1+wk‑1                        28)

    其中,为k时刻的目标状态,wk‑1为高斯分布的状态噪声,F为目标状态转移矩阵。

     <mrow> <mi>F</mi> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mi>T</mi> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msup> <mi>T</mi> <mn>2</mn> </msup> <mo>/</mo> <mn>2</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mi>T</mi> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msup> <mi>T</mi> <mn>2</mn> </msup> <mo>/</mo> <mn>2</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mi>T</mi> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mi>T</mi> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>T为采样周期

    29)

    观测模型的观测方程为:

    zik=Hi[xk]+vik                            30)

    其中,zik是第i(i=1,2,3)个被动观测站的方位观测,yi和xi分别为观测站在直角坐标中两个方向上的位置,vik是观测噪声,假设vik为零均值白噪声,方差为σi,观测噪声协方差矩阵为 <mrow> <msub> <mi>R</mi> <mi>k</mi> </msub> <mo>=</mo> <mfenced open='[' close=']'> <mtable> <mtr> <mtd> <msub> <mi>&sigma;</mi> <mn>1</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>&sigma;</mi> <mn>2</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>&sigma;</mi> <mn>3</mn> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>.</mo> </mrow>

    在Xilinx公司的FPGA芯片XC4VFX140上用本发明提出的无迹卡尔曼滤波系统实现对该运动目标的跟踪,将UKF算法在FPGA中采用本发明提出的并行结构进行处理。其中FPGA芯片的速度级别为‑11,主时钟频率为100MHz,运算过程中涉及的乘法器、加法器、减法器、除法器和开方运算器均采用Xilinx提供的浮点数IP核实现,反正切、正弦和余弦的计算均采用Xilinx提供的CORDIC算法IP核实现。

    2.仿真结果

    表1给出了FPGA的运算时间与并行单元个数之间的关系。从表1中可以看出并行单元个数越多,运算时间越短,因而本发明的基于FPGA的无迹卡尔曼滤波系统及并行实现方法具有良好的实时性。

    表1不同并行单元个数对应的运算时间

       并行单元个数  1  2  3  5  6  时间(us)  122.10  68.13  52.70  43.22  41.29


    

基于FPGA的无迹卡尔曼滤波系统及并行实现方法.pdf_第1页
第1页 / 共18页
基于FPGA的无迹卡尔曼滤波系统及并行实现方法.pdf_第2页
第2页 / 共18页
基于FPGA的无迹卡尔曼滤波系统及并行实现方法.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《基于FPGA的无迹卡尔曼滤波系统及并行实现方法.pdf》由会员分享,可在线阅读,更多相关《基于FPGA的无迹卡尔曼滤波系统及并行实现方法.pdf(18页珍藏版)》请在专利查询网上搜索。

本发明公开了一种基于FPGA的无迹卡尔曼滤波系统,主要解决现有无迹卡尔曼滤波硬件实现难度大和实时性差的问题。该系统包括:协方差矩阵Cholesky分解模块A,Sigma点产生模块B、时间更新模块C、观测预测模块D、部分均值和协方差矩阵计算模块E、总体均值计算模块F、总体协方差矩阵计算模块G、观测预测协方差矩阵求逆模块H、增益计算模块I和状态量估计和状态协方差矩阵估计模块J。模块A产生K组行向量到模。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 基本电子电路


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1