关键词:
北斗卫星导航系统
伪距
定位解算
EKF
软件接收机
摘要:
北斗导航系统是我国重要的空间基础设施,其建设对于维护我国的国家安全、促进我国的经济发展等都具有重大意义。卫星导航定位最基本的功能就是为用户提供定位服务,相应的导航接收机定位解算模块的研究及其软件实现也一直是卫星导航领域的研究热点。因此,本文选择对导航接收机中的定位解算模块进行研究,重点研究该模块中的解算算法对定位精度的影响以及该模块的软件实现。本文首先对北斗导航系统进行了概述,介绍了该系统的构成、各构成模块的功能特点以及与导航定位密切相关的时间系统和坐标系统。紧接着,论述了伪距定位的基本原理,并设计了完整的伪距定位实现流程。之后,本文具体介绍了北斗卫星原始数据文件的存储格式,讨论了如何从北斗原始数据文件中解析出相应的轨道参数。然后,本文详细讲解了如何利用轨道参数计算可见卫星的位置、提取并修正伪距的方法,通过仿真验证了伪距修正方法和卫星位置计算方法的正确性。在上述研究的基础上,本文讲解了三种常用解算算法的原理,并通过仿真验证了三种算法的性能。仿真结果表明,卡尔曼滤波算法的定位精度要高于另外两种算法。之后,本文重点对卡尔曼滤波算法进行了研究,研究了状态初值对该算法的影响以及实际应用中滤波发散现象的产生原因。通过分析滤波初值对卡尔曼滤波结果的作用,发现滤波初值越精确,卡尔曼滤波结果更能快速趋于稳定,因此本文提出采用阿尔法贝塔滤波的结果作为卡尔曼滤波的初值;通过讨论滤波发散的产生原因,提出一种抑制滤波发散的算法,即在多历元连续定位情况下,当检测发现某一时刻的扩展卡尔曼滤波(Extended Kalman Filter,EKF)结果远远大于最小二乘法的定位误差时,系统认为出现了滤波发散,此时舍弃当前的EKF的滤波结果,采用当前时刻的最小二乘定位结果代替该滤波结果,并重置EKF滤波中的状态协方差矩阵。仿真结果表明,该方法可以有效抑制EKF滤波中出现的发散问题。同时,本文基于VS 2012平台和MFC开发框架,设计实现了一个北斗定位解算模块的软件。该软件由界面和后台程序两部分组成。所设计的软件界面能够全面实时显示定位解算中的伪距观测值提取、卫星位置计算、定位解算算法等模块的结果。对于软件的后台模块,本文利用了面向对象的思想,将定位解算中的各个主要模块封装成C++中类以及类的函数。软件运行时,导入实测的北斗观测文件和星历文件之后,可以在界面上看到各个时刻的定位结果,将该软件运行结果与真实的用户位置做比较,两者结果一致,证明所设计的定位解算软件是有效的。