当前位置:首页 期刊杂志

基于SoCFPGA的BDS/GPS双模定位算法研究

时间:2024-07-28

张文德,刘怡俊

(广东工业大学 信息工程学院,广东 广州 510006)

0 引 言

目前,北斗卫星导航系统(BDS)和GPS卫星导航系统能够为用户提供高精度、全天候的定位服务。但是,单个卫星导航系统在观测卫星数目有限的情况下,定位能力较低。BDS和GPS在定位原理、系统设计方面存在共通性,能够同时接收两个卫星导航系统的卫星信号并组合定位,不仅解决了上述问题,而且提高了精度[1-2]。本文描述了BDS/GPS的组合定位算法,并在基于SoCFPGA的BDS/GPS接收机上使用嵌入式软件实现该算法。

一般的定位解算方法会使用卡尔曼滤波器。卡尔曼滤波的计算过程是递推过程。递推过程中会产生舍入误差,SoCFPGA上的CPU也会产生计算误差。这两种误差可能使估计的均方误差阵失去非负定性或对称性,使增益阵的计算逐渐丧失加权作用,导致卡尔曼滤波产生发散现象[3]。为了克服发散现象,本文使用平方根滤波算法优化传统卡尔曼滤波算法,并通过嵌入式软件实现该算法,最终在接收机上运行。

1 BDS/GPS双模定位的卡尔曼滤波算法

计算机系统是离散的系统,本文描述了用于BDS/GPS双模定位的离散卡尔曼滤波模型[4-5]。

系统状态方程:

系统观测方程:

其中,X(k)是系统k时刻的目标状态向量,Φ(k+1,k)是系统从k时刻到k+1时刻的状态转移矩阵,G(k)是系统噪声增益矩阵,Z(k+1)是系统k+1时刻的观测向量,H(k+1)是观测矩阵。卡尔曼滤波要求系统噪声V(k)和观测噪声W(k+1)是相互独立、均值为零的白噪声,即:

定义误差向量为:

定义预测误差的相关矩阵为:

当k+1时刻输入Z(k+1)时,求得的新息向量为:

其中,Z(k+1)为新息向量。

定义新息向量Z(k+1)的相关矩阵为:

卡尔曼滤波的增益:

其中,Q(k)为系统噪声矩阵,R(k+1)为观测噪声矩阵,要求它们分别是已知的非负定矩阵和正定矩阵。

2 平方根滤波优化的卡尔曼滤波算法

本文基于SoCFPGA的接收机中使用卡尔曼滤波算法出现了发散现象。因此,本文引入平方根算法解决滤波过程中的发散问题,使接收机在定位方面更加稳定。卡尔曼滤波中,状态均方差阵p(k)表示状态估计误差的平方。平方根滤波主要针对均方差更新过程而设计,采用桥莱斯基分解均方差阵更新平方根,减少计算误差[5]。

2.1 均方差的观测更新

将增益公式带入卡尔曼滤波测量公式,得:

其中,γ(k+1)为待定系数。

2.2 均方差状态更新

将Δ(k+1)、Δ(k)、Δ(k+1,k)代入卡尔曼滤波器的状态公式,可以得到均方差阵的状态更新为:

同时简记:

2.3 平方根滤波

若简记:

本节描述了避免估计的均方误差阵失去非负定性或对称性的方法。

3 基于SoCFPGA接收机的实验

本文的接收机式基于SoCFPGA平台,如图1所示,使用的FPGA类型为Altera的DE2-115。在FPGA上写入数据采集、卫星信号捕获和跟踪等模块的硬件代码,在FPGA上烧写LEON3处理器,处理器中运行裸机的嵌入式处理程序,实现射频前端驱动、捕获和跟踪环路的控制,位同步、帧同步处理以及定位解算等功能。本文使用平方根滤波算法优化卡尔曼滤波算法也在LEON3处理器上运行。

实验平台的天线接到华力创通卫星导航信号模拟器,接收机工作25 min后观察定位结果,如图2、图3和图4所示[6]。

图1 实验平台实物

图2 接收机启动完成工作不到1 min的定位结果

图3 接收机工作5 min后的定位结果

实验结果可以看出,接收机连续工作25 min后,定位精度在2 m以内,验证了算法的有效性,能够解决因计算机计算精度误差和舍入精度误差而引起的卡尔曼滤波发散问题。

图4 接收机工作25 min后的定位结果

4 结 论

本文着重研究基于卡尔曼滤波算法的BDS/GPS双模定位。由于接收机设备存在计算精度误差、卡尔曼滤波迭代存在舍入误差等原因,卡尔曼滤波算法会出现发散问题[7-8]。本文引入了平方根滤波算法优化卡尔曼滤波算法,通过在接收机上进行试验观察,验证了算法的有效性和可行性,对实际工程应用具有一定借鉴意义。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!