基于改进扩展卡尔曼滤波的GNSS单点动态定位方法转让专利

申请号 : CN201210411647.4

文献号 : CN102928858B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 许承东宋丹张鹏飞

申请人 : 北京理工大学

摘要 :

本发明涉及一种基于改进扩展卡尔曼滤波的GNSS单点动态定位方法,属于卫星导航技术领域。本方法将GNSS接收机的位置速度、钟差与钟漂作为位置参数设为状态向量Xk,通过状态转移方程,由前一历元的状态向量推算当前历元状态向量的预测值;并通过观测方程进一步获取状态向量预测值的修正量;将预测值和修正量加权,获取状态向量的估计值。在基于扩展卡曼滤波定位过程中,本方法通过延迟对状态向量误差协方差矩阵的更新,使得在初始取状态向量的情况下,滤波估计值快速收敛在真值附近,并达到很高的定位测速精度;不需要保存每一步的计算数据,占用计算机内存资源少;适用于GNSS单点动态定位。

权利要求 :

1.基于改进扩展卡尔曼滤波的GNSS单点动态定位方法,其特征在于:步骤1:在观测历元数k=1时,初始状态向量 初始状态向量误差协方差矩阵P0=diag[1/εp 1/εv 1/εa 1/εp 1/εv 1/εa 1/εp 1/εv 1/εa 1/εt 1/εf];

ECEF坐标系下,GNSS接收机的状态向量定义为:其中,k为观测历元数, 分别为ECEF坐标下GNSS接收机载体的三维位置、速度和加速度, 和 分别为接收机的钟差和钟漂;

Xk的滤波估计 为:

εp为载体与地心距离平方的倒数,εv为载体最大允许速度平方的倒数,εa为载体最大允许加速度的倒数,εt为接收机钟差与光速乘积平方的倒数,εf为接收机钟漂与光速乘积平方的倒数;

步骤2:计算状态向量Xk的预测值

其中Φk|k-1为状态转移矩阵,来自接收机载体的动力学模型,分别是ECEF坐标系下,X向,Y向和Z向运动状态量的状态转移矩阵,依据动力学模型确定; 是有关钟差和钟漂的状态转移矩阵,依据时钟模型确定;

步骤3:计算预测值 的协方差矩阵

过程噪声协方差矩阵:

和 分别是ECEF坐标系下,X,Y,Z三向运动状态量的过程噪声矩阵;αy和αz分别为X向,Y向和Z向的机动加速度频率; 分别是X,Y,Z三向的机动加速度方差;

步骤4:根据步骤3得到的Pk|k-1,计算滤波增益矩阵Kk:(a)观测矩阵Hk由 线性化而来, 和 分别为第s颗可见星的伪距方程[6]和多普勒方程[7],s=1,...,n,n为接收机观测到的参与定位计算的可见星总数;

其中, 和 分别为ECEF坐标系下第s颗可见星在第k个历元的三维位置和速度, 是第s颗可见星与GNSS接收机之间的真实距离,Hk中前n行由伪距方程线性化而来,后n行由多普勒方程线性化而来;

用y和z分别代替 和 中的x,得到 和 和(b)过程噪声方差矩阵 其

中,In×n为n阶方阵,β1为伪距观测噪声方差,β2为多普勒频移观测噪声方差;

步骤5:根据步骤2得到的 计算状态向量Xk的滤波估计值和 分别为第s颗可见星的伪距观测值和多普勒观测值;

步骤6:判断k的取值,若k≤m,转到步骤7,若k>m,转到步骤8;

步骤7:令Pk=Pk-1,执行步骤9;

步骤8:根据步骤4得到的Kk,计算Pk:Pk=[I-KkHk]Pk|k-1,执行步骤9;

步骤9:输出

即为第k个历元的定位和测速结果;

步骤10:令k=k+1,转入步骤2,继续计算并输出下一个历元的状态向量的滤波估计值,直到不需要进行接收机载体的定位测速时,停止计算。

2.根据权利要求1所述的基于改进扩展卡尔曼滤波的GNSS单点动态定位方法,其特征在于:εp,εv,εa,εt和εf均为正数。

3.根据权利要求1所述的基于改进扩展卡尔曼滤波的GNSS单点动态定位方法,其特征在于:2<m<6。

说明书 :

基于改进扩展卡尔曼滤波的GNSS单点动态定位方法

技术领域

[0001] 本发明涉及一种基于改进扩展卡尔曼滤波的GNSS单点动态定位方法,属于卫星导航技术领域。

背景技术

[0002] GNSS单点动态定位由于只需要一台单频接收机,获取4颗或4颗以上可见卫星与接收机间的测码伪距和多普勒频移观测量,便可解算载体的位置、速度、钟差和钟漂等信息而广泛应用于各种车辆、船只的导航和监控、海上定位、野外勘测等领域。扩展卡尔曼滤波(EKF)是在GNSS单点动态定位中除最小二乘(LS)外最常用的解算方法。
[0003] 卡尔曼滤波(KF)是卡尔曼于1960年提出的从与被提取信号有关的观测量中,通过算法估计出所需信号的一种滤波方法。这种方法将信号过程视为白噪声作用下的一个线性系统,利用高斯白噪声的统计特性,以系统的观测量为输入,以所需要的估计值(称为系统的状态向量)为输出,将输入和输出由时间更新和观测更新联系在一起,根据系统的状态转移方程和观测方程获取状态向量的最优估计值。
[0004] KF的原理是:将系统中需求解的所有参数设为一个状态向量;通过状态转移方程建立两个相邻历元的状态向量之间的关系,由前一历元的状态向量推算当前历元状态向量的预测值;通过观测方程建立当前历元状态向量与观测量之间的关系,从而获取一个状态向量预测值的修正量;将状态向量的预测值和修正量通过滤波增益加权,获得状态向量的最优滤波估计。
[0005] KF适用于线性系统,而大多数情况下,系统是非线性的。要使KF适用于非线性系统,需要将状态转移方程和观测方程进行线性化处理,若线性化处理的方法是泰勒级数展开法,则所对应的KF被称为扩展卡尔曼滤波(EKF)。
[0006] 以线性的状态转移方程和非线性的观测方程所构成的系统为例:
[0007] 状态转移方程:Xk=Φk|k-1Xk-1+Γk|k-1ωk-1 [1]
[0008] 观测方程:Zk=fk(Xk)+vk [2]
[0009] 由于fk(·)是非线性的,需要对方程[2]进行线性化处理,在 处进行泰勒展开,并取其一阶近似,可得到方程[3]。
[0010] ΔZk=HkΔXk+vk [3]
[0011] 其中,k表示观测历元数;Xk和Xk-1为第k个和第k-1个观测历元的状态向量;Φk|k-1是状态转移矩阵;Γk|k-1为噪声驱动矩阵;Zk为第k个历元的观测量;fk描述了第k个历元,Zk和Xk之间的函数关系;ωk-1和vk分别为过程噪声和观测噪声,二者皆为高斯白噪声; 为Xk的预测值。
[0012] 基于方程[1]和[3]的EKF步骤如下:
[0013] a)推算状态向量Xk的预测值
[0014]
[0015] 其中, 是Xk-1的最优滤波估计;
[0016] b)计算 的协方差矩阵Pk|k-1:
[0017]
[0018] 其中,Qk-1为ωk-1的协方差矩阵;
[0019] c)计算滤波增益矩阵Kk:
[0020]
[0021] 其中,Ok为vk的协方差矩阵;
[0022] d)计算状态向量Xk的滤波估计值
[0023]
[0024] 其中, 即为第k个历元状态向量Xk的滤波解算结果;
[0025] e)计算Xk的误差协方差矩阵Pk:
[0026] Pk=[I-KkHk]Pk|k-1
[0027] f)令k-1=k,转入步骤a)……
[0028] 与基于LS的GNSS单点动态定位方法(LS方法)相比,基于EKF的GNSS单点动态定位方法可达到较高的定位测速精度,但是,这种方法存在一个问题:在不了解初始状态的统计特性的情况下,如果初始状态向量 及其协方差矩阵P0取值不合适,滤波收敛极慢。和P0的常用取值方法有两种:1.取 为零向量,取P0为对角阵,其对角线元素取大数量级的正数;2.取 为与真实的X0相近的概略值,取P0为对角阵,其对角线元素取大数量级的正数;2.取 为与真实的X0相近的概略值。第一种方法操作简便,但会使滤波收敛速度变慢,延长首次定位时间;第二种方法可使滤波快速收敛,但是 与真实的X0接近到何种程度可使滤波快速收敛很难界定,且接收机的大概位置、速度信息不是在任何时间地点都可轻易获取。

发明内容

[0029] 本发明目的是为解决GNSS单点动态定位时,EKF滤波不收敛或收敛很慢的问题,提出一种基于改进EKF的GNSS单点动态定位方法。
[0030] 本发方法采用一种基于改进EKF的GNSS单点动态定位方法,采用状态向量误差协方差矩阵延迟更新的方法(DU-EKF),通过对状态向量误差协方差矩阵更新的延迟,使得在初始取状态向量 的情况下,滤波估计值快速收敛在真值附近,并达到很高的定位测速精度。
[0031] 本发明的具体技术方案如下:
[0032] 预设GNSS接收机处于ECEF坐标系下,其的状态向量为:
[0033]
[0034] 其中,k为观测历元数, 分别为ECEF坐标下GNSS接收机载体的三维位置、速度和加速度, 和 分别为接收机的钟差和钟漂。该状态向量包含了导航定位所需求解的全部信息。
[0035] 则Xk的滤波估计
[0036] ECEF坐标系即地心地固坐标系,原点为地球质心,Z轴与地轴平行指向北极点,X轴指向本初子午线与赤道的交点,Y轴垂直于XOY平面(即东经90度与赤道的交点)。
[0037] 步骤1:在观测历元数k=1时,初始状态向量 初始状态向量误差协方差矩阵P0=diag[1/εp 1/εv 1/εa 1/εp 1/εv 1/εa 1/εp 1/εv 1/εa 1/εt 1/εf]。
[0038] εp为载体距地心距离平方的倒数,εv为载体最大允许速度平方的倒数,εa为载体最大允许加速度的倒数,εt为接收机钟差与光速乘积平方的倒数,εf为接收机钟漂与光速乘积平方的倒数。在实际运用中,εp,εv,εa,εt和εf均为正数,取值在数量级上与接收机真实情况相近。
[0039] 步骤2:计算状态向量Xk的预测值
[0040]
[0041] 其中Φk|k-1为状态转移矩阵,来自接收机载体的动力学模型。
[0042]
[0043] 分别是ECEF坐标系下,X向,Y向和Z向运动状态量的状态转移矩阵,依据动力学模型确定; 是有关钟差和钟漂的状态转移矩阵,依据时钟模型确定。
[0044] 步骤3:计算预测值 的协方差矩阵Pk|k-1:
[0045]
[0046] 过程噪声协方差矩阵:
[0047]
[0048] 和 分别是ECEF坐标系下,X,Y,Z三向运动状态量的过程噪声矩阵;αy和αz分别为X向,Y向和Z向的机动加速度频率; 分别是X,Y,Z三向的机动加速度方差。
[0049] 步骤4:根据步骤3得到的Pk|k-1,计算滤波增益矩阵Kk:
[0050]
[0051] (a)观测矩阵Hk由 线性化而来, 和 分别为第s颗可见星的伪距方程[6]和多普勒方程[7],s=1,…,n,n为接收机观测到的参与定位计算的可见星总数。
[0052]
[0053]
[0054] 其中, 和 分别为ECEF坐标系下第s颗可见星在第k个历元的三维位置和速度, 是第s颗可见星与GNSS接收机之间的真实距离,
[0055]
[0056]
[0057] Hk中前n行由伪距方程线性化而来,后n行由多普勒方程线性化而来。
[0058]
[0059]
[0060]
[0061]
[0062] 用y和z分别代替 和 中的x,得到 和 和
[0063] ( b ) 过 程 噪 声 方 差 矩 阵
[0064] 其中,In×n为n阶方阵,β1为伪距观测噪声方差,β2为多普勒频移观测噪声方差。
[0065] 步骤5:根据步骤2得到的 计算状态向量Xk的滤波估计值
[0066]
[0067]
[0068] 和 分别为第s颗可见星的伪距观测值和多普勒观测值。
[0069]
[0070]
[0071] 步骤6:判断k的取值,若k≤m,转到步骤7,若k>m,转到步骤8。
[0072] m取值范围为2
[0073] 若m≤2,滤波收敛速度慢;如果2
[0074] 步骤7:令Pk=Pk-1。
[0075] 步骤8:根据步骤4得到的Kk,计算Pk:Pk=[I-KkHk]Pk|k-1。
[0076] 步骤9:输出
[0077] 即为第k个历元的定位和测速结果。
[0078] 步骤10:令k=k+1,转入步骤2,继续计算并输出下一个历元的状态向量的滤波估计值,直到不需要进行接收机载体的定位测速时,停止计算。
[0079] 有益效果
[0080] 本发明的DU-EKF方法不需要保存每一步的计算数据,占用计算机内存资源少;直接令 不需要考虑 的取值,操作简便,且滤波收敛快,解算精度与LS方法相比有数量级上的提升,与EKF方法相当;这种方法从第5个历元起,所得的解算结果就是有效的。

附图说明

[0081] 图1为本发明的基于改进EKF的GNSS单点动态定位方法流程图;
[0082] 图2为具体实施方式中ECEF坐标系下,LS方法、CEKF方法、DU-EKF方法解算所得的接收机Z向位置误差对比图,图中将三种方法分别记作LSM、CEKFM和DU-EKFM;
[0083] 图3为具体实施方式中ECEF坐标系下,LS方法、CEKF方法、DU-EKF方法解算所得的接收机Z向速度误差对比图,图中将三种方法分别记作LSM、CEKFM和DU-EKFM;
[0084] 图4a和图4b分别为具体实施方式中ECEF坐标系下,DU-EKF方法和ZEKF方法解算所得的接收机Z向定位和测速误差,图中将两种方法分别记作DU-EKFM和ZEKFM。

具体实施方式

[0085] 下面结合附图和具体实施例对本发明作进一步的详细说明。
[0086] 本发明提供一种基于改进EKF的GNSS单点动态定位方法,所述方法流程如图1所示,实施例中以GPS系统为卫星导航系统。
[0087] 在基于改进EKF的GNSS单点动态定位方法中,接收机载体的状态转移方程来自动力学模型,常用的动力学模型有CV模型、CA模型和Singer模型;对应于载体的动力学模型,接收机的钟差和钟漂之间的关系由时钟模型描述;观测方程来自观测模型,常用的观测模型有伪距观测模型和多普勒观测模型。实施例中,选取Singer模型和石英钟模型来描述状态转移方程,选取伪距和多普勒两种观测模型来描述观测方程,选取地心地固坐标系(ECEF)为参考坐标系。以下为实施例的具体执行步骤:
[0088] 预 设 接 收 机 处 于 ECEF 坐 标 系 下, 其 状 态 向 量包含了导航定位所需求解的全部信
息,其中, 分别为ECEF坐标下载体的三维位置、速度和加速
度, 和 分别为接收机的钟差和钟漂。
[0089] 则Xk的滤波估计
[0090] 步骤1:令k=1,设置初始状态向量 (维数为11),初始状态向量误差协方差矩阵P0=diag[1/εp 1/εv 1/εa 1/εp 1/εv 1/εa 1/εp 1/εv 1/εa 1/εt 1/εf]。
[0091] 步骤2:计算状态向量预测值Xk的预测值
[0092] (a)状态转移矩阵Φk|k-1参见公式[4]。Singer模型下,载体的状态转移矩阵如下描述,以ECEF坐标系下X向运动为例:
[0093]
[0094] 和 参见 只需将αx轮换为αy和αz。αx,αy和αz分别为X向,Y向和Z向的机动加速度频率,T为观测步长,即相邻两个观测历元间的时间差。
[0095] 实施例中选取的石英钟模型由二阶马尔科夫过程来描述,
[0096]
[0097] (b)将 和Φk|k-1代入 求
[0098] 步骤3:计算 的协方差矩阵Pk|k-1,
[0099] (a)过程噪声协方差矩阵Qk-1参见公式[5],仍以X向运动为例:
[0100]
[0101]
[0102]
[0103]
[0104]
[0105]
[0106]
[0107] 和 参见 将αx轮换为αy和αz即可, 分别是X,Y,Z三向的机动加速度方差。
[0108] 有关时钟的过程噪声解释如下:
[0109]
[0110]对于石英钟而言,h0=9.4×10-20,h-1=1.8×10-19,h-2=3.8×10-21;
[0111] (b)将Φk|k-1,Pk-1和Qk-1代入 计算Pk|k-1。
[0112] 步骤4:计算滤波增益矩阵Kk,
[0113] (a)观测矩阵Hk参见公式[8];
[0114] (b)过程噪声协方差矩阵Ok参见公式[9];
[0115] (c)将Pk|k-1,Hk和Ok代入 求得Kk。
[0116] 步骤5:计算状态向量Xk的滤波估计值
[0117] (a)观测量△Zk参见公式[10];
[0118] (b)将 Kk和△Zk代入 求得
[0119] 步骤6:判断k的取值,若k≤m,转到步骤7,若k>m,转到步骤8。
[0120] 步骤7:直接令Pk=Pk-1。
[0121] 步骤8:对Pk进行计算,Pk=[I-KkHk]Pk|k-1;
[0122] 步骤9:输出
[0123] 步骤10:令k=k+1,转入步骤2,继续计算得到下一个历元的
[0124] 下面以具体数值进一步说明本发明。
[0125] 本实施例在数学仿真环境中进行,设定仿真开始时间为UTC时间2011-6-202:00:00,仿真步长为1s(T=1s)。接收机初始位置为纬度5°,经度5°,高度0m,在ECEF坐标系中的位置是[6329853.79,553790.45,552184.40]m,接收机的速度为ECEF坐标系中[5,5,5]m/s。观测量(伪距和多普勒频移)是根据GPS的RINEX星历和载体的真实运动轨迹计算所得的真距和真实多普勒频移分别加上8m和0.2Hz的高斯白噪声构成的,符合实际情形中排除电离层、对流层和多径误差后伪距和多普勒频移观测量的真实情况。
[0126] DU-EKF方法具体实施步骤如下,如图1所示,取m=3:
[0127] 预 设 接 收 机 处 于 ECEF 坐 标 系 下, 其 状 态 向 量包含了导航定位所需求解的全部信息,其
中, 分别为ECEF坐标下载体的三维位置、速度和加速度,
和 分别为接收机的钟差和钟漂。
[0128] 则Xk的滤波估计
[0129] 步骤1:令k=1,设 (维数为11),
[0130] P0=diag[1/εp 1/εv 1/εa 1/εp 1/εv 1/εa 1/εp 1/εv 1/εa 1/εt 1/εf]其中εp=10-14,εa=0.01,εv=10-3,εt=εf=10-5。
[0131] 步骤2:计算Xk-1的预测值
[0132] (a)求取状态转移矩阵Φk|k-1,参见公式[4],Φk|k-1中αx=αy=αz=106;
[0133] (b)将 和Φk|k-1代入 求
[0134] 步骤3:计算 的误差协方差矩阵Pk|k-1。
[0135] (a)求取过程噪声协方差矩阵Qk-1,参见公式[5],Qk-1中αx=αy=αz=106,[0136]
[0137] (b)将Φk|k-1,Pk-1和Qk-1代入 计算Pk|k-1。
[0138] 步骤4:计算滤波增益矩阵Kk。
[0139] (a)求Hk
[0140] 将第k个历元中参与定位的可见星的三维位置和三维速度以及 代入公式[8],求得Hk,表1为k=1时12颗可见星在ECEF坐标系下的三维位置和速度;
[0141] 表1.第1个历元GPS可见星的三维位置和速度
[0142]
[0143]
[0144] (b)根据公式[9]求得Ok,Ok中β1=64,β2=0.04。
[0145] (c)将Pk|k-1,Hk和Ok代入 求得Kk。
[0146] 步骤5:计算状态向量Xk的滤波估计值
[0147] (a)将可见星的伪距和多普勒观测值代入公式[10],求得△Zk,表2为k=1时12颗可见星的伪距和多普勒频移观测值;
[0148] 表2.第1个历元GPS可见星的伪距观测值 和多普勒观测值
[0149]
[0150] (b)将 Kk和△Zk代入 求得
[0151] 步骤6:判断k的取值,若k≤3,转入步骤7;若k>3,转入步骤8。
[0152] 步骤7:令Pk=Pk-1。
[0153] 步骤8:令Pk=[I-KkHk]Pk|k-1。
[0154] 步骤9:输出
[0155] 步骤10:令k=k+1,转入步骤2,继续计算输出
[0156] 本实施例中,将现有技术中基于EKF的GNSS单点动态定位方法分为两种,第一种称为ZEKF方法,其特点为 取零向量,P0取为对角阵,其对角线元素取大数量级的正数;第二种称为CEKF方法,其特点为 取与真实的X0相近的概略值,P0取为对角阵,其对角线元素取大数量级的正数。
[0157] 按本实施例中的步骤1-10,计算305个历元,统计从第5个历元到第305个历元的定位和测速结果,以相同仿真条件下LS方法和CEKF方法的解算结果作对比。定位误差如表3所示,测速误差如表4所示。
[0158] 表3.不同方法的各向定位误差 单位:m
[0159]
[0160] 表4.不同方法的各向测速误差 单位:m/s
[0161]
[0162] 图2和图3分别是LS方法、CEKF方法和DU-EKF方法下,Z向的定位和测速精度。由于从第1个历元到第4个历元,DU-EKF方法和CEKF方法的定位和测速误差有5个数量级的提升,若展示在图中,后续历元的解算结果是一条0值附近的直线,不利于对三种方法解算结果的比较,因此图中横轴观测历元的取值从第5个历元开始。
[0163] 分析表3和表4,结合图2和图3可得,算例中LS方法的定位误差在10m以内,测速误差在0.05m/s以内;CEKF方法的定位误差在2m以内,测速误差在0.02m/s以内;DU-EKF方法的定位误差在1.5m以内,测速误差在0.02m/s以内。与LS方法相比,DU-EKF方法的解算精度有数量级上的提升;与CEKF方法相比,DU-EKF方法的解算精度并没有明显的提高,但是DU-EKF方法不需要获知载体的概略位置和速度。
[0164] 如图4所示,在初始状态向量同为 的情况下,DU-EKF方法的收敛速度要比ZEKF方法快很多,体现了DU-EKF方法的优越性。
[0165] 本发明的DU-EKF方法对EKF方法进行了改进,在接收机的GNSS单点动态定位中,本方法收敛速度快,不需要在滤波开始时获知接收机的概略位置和速度,且解算精度与CEKF方法相当。将本方法运用到实际导航仪中,用户不需要在其位置发生大范围变动时对导航仪的概略位置进行重新设定,且获取首次定位测速信息的时间短,定位测速的精度高,能够为用户提供方便、快捷和高质量的定位测速服务。本发明所提供的方法适用于GNSS单点动态定位。