本发明涉及卫星导航技术领域,具体涉及一种提高便携设备定位精度的方法。
背景技术:
gps(全球定位系统)与bds(北斗导航系统)都是基于卫星的导航系统,可以提供接收端的空间位置和速度等信息。这两种导航系统在便携导航设备中都有着广泛的应用,例如手持gps导航仪、手机定位、车载导航设备等。导航设备在接收到卫星发出的电文后解算出其中空间坐标和速度等信息。但是受到相关政策以及环境因素比如电离层延迟等的影响,普通接收端的定位的精度以及准确度往往不尽如人意,有时还会出现较为严重的漂移,严重的减弱了定位效果。
由于高精度gps价格昂贵,导航型gps往往采用普通gps芯片,定位精度低于预期,在gps信号不好的地方会出现明显的漂移。提高定位精度则需要考虑处理器的运算能力,不能采用过于复杂的算法,以免对处理器造成过重的负担降低定位的实时性。如果采用多个普通gps芯片进行定位,需要确定一个合理的数量,既要能够有效的消除误差,又要考虑经济性和处理器的运算能力,还需要考虑如何才能最好的利用多个gps芯片结构产生的优势。
卡尔曼滤波是一种用于时变线性系统的递归滤波器,其计算过程只需要k时刻的测量值与k-1时刻的最优估计值就能获得当前最优状态估计,不需要存储大量数据,而且每一个步骤的计算量都较小,能够提供较好的实时性,比较适合便携设备的应用场景。
技术实现要素:
本发明所要解决的技术问题是:受限于政策和环境因素以及普通gps芯片本身的性能,便携导航设备容易出现定位不准确和漂移现象,不能够提供精准和稳定的定位服务。
针对上述情况,提出了一种利用多个普通gps/bds芯片同时进行定位,将每个普通gps/bds芯片的数据不同的权重进行融合,然后用卡尔曼滤波器对融合后的数据进行滤波,从而提高便携设备定位精度。
一种提高便携设备定位精度的方法,包括以下步骤:
步骤一、将四个普通gps/bds定位芯片摆放成一个边长为a的正方形,定位芯片的txd引脚、rxd引脚分别与单片机rx、tx引脚连接,必要时可为每个定位芯片连接有源天线增强搜星能力。通过四个芯片采集位置信息,得到初始gps坐标。
步骤二、将步骤一种四个芯片采集到的定位信息按如下方式处理后得到所需的权值:将四个gps坐标点生成一个四边形,从左上顶点开始按顺时针方向依次记为a、b、c、d,分别计算各顶点对应内角的角度θi。计算每个顶点相邻两边的长度di,j和di,k,其中i表示两边的公共顶点,j,k表示与i相邻的两顶点。计算角度权值:
更新顶点gps坐标。以上两式xi’、yi’分别表示所述gps/bds芯片测得的纬度和经度,其余各标记含义同前。
步骤三、计算加权后四个坐标值的平均值:
步骤四、将步骤三所得平均值输入卡尔曼滤波器,对下一步的状态做出最优估计。具体如下:
步骤1、建立系统状态方程:xk=axk-1+wk-1;xk为k时刻系统状态变量,a为状态转移矩阵,wk-1为系统噪声向量。根据实际需要选取纬度、经度的位置以及相应方向上的速度和误差。
确定状态转移矩阵a,a的选取根据不同的模型有多种选择,例如cv模型、ca模型、singer模型、cs模型。
考虑到算法的复杂度,以及实际情况中不论是行人还是汽车总以匀速运动的时间居多,选择cv模型:
其中
步骤2、建立观测方程:zk=hxk+vk;仅考虑平面坐标时系统的输出为经纬度,故zk=[xy]t,观测矩阵用于转换维度,故取:
步骤3、给定第一次执行下一步骤所需的初始条件:状态向量
步骤4、预测:
步骤5、更新:
完成上述步骤后,转步骤二,重新获取当前gps坐标更新权重,直到被打断(如断电、中断等)。
本发明与现有方法相比,优点在于:相对于单gps/bds芯片结构,本发明中的多gps/bds芯片结构的定位精度有明显的优化,并且大大克服了普通gps/bds芯片受到干扰产生漂移的问题。加权方法用gps/bds芯片间的相对几何位置对检测数据进行约束,从而解决了多个gps数据间的加权问题,相比于“多数表决法”的加权更加可以削弱漂移数据的影响。没有复杂的数学计算,既有利于工程实现,又有利于减轻处理器的运算负担。
附图说明
图1为gps/bds芯片位置示意图;
图2为本发明的流程图;
图3为卡尔曼滤波的流程图。
具体实施方式
以下结合附图及实施例,对本发明进一步的详细说明。
一种提高便携设备定位精度的方法,如图1所示,通过固定四个gps/bds芯片的位置,将它们的位置关系作为已知条件,将四边形的角度和边长作为加权的依据,计算出各个gps/bds芯片数据的权重,加权后再取平均值,输入到卡尔曼滤波器,滤波器采用匀速运动模型,对下一时刻的位置给出最优估计,在滤波结束前,滤波器需要不断的计算卡尔曼增益、后验估计协方差的矩阵,但是其每一步的计算量都很小,而且只需要存储当前的测量值和前一个采样周期的估计值就可以得到最优估计值。
如图2所示,本发明所述方法包括以下步骤:
步骤一、将四个gps/bds芯片固定成边长为a的正方形,且每个芯片都给定一个标号。例如应用在汽车定位时空间较大可选择a=0.5m,从左上角开始顺时针标记为a、b、c、d,采用相应的标号来表示所接收到的数据来自哪一个芯片。通过四个芯片采集定位信息,得到初始gps坐标。
步骤二、将步骤一中正方形的每个角标记为θi,两个点之间的距离标记为di,j。例如顶点a所在的角为θa,a、b间的距离为da,b。计算角度权值:
计算边长权值:
以上两式;xi、yi分别表示所述gps/bds芯片测得的纬度和经度,通过芯片解读接收到的电文获取,左侧为加权结果。
步骤三、计算加权后四个坐标值的平均值:
步骤四、将步骤三所得平均值输入卡尔曼滤波器,对未来的状态做出最优的估计:具体如下:前三步是初始化,第4步是用初始值或第5步的最优估计值进行不可靠预测,第5步是根据不可靠预测得到最优估计值。
步骤1、建立系统状态方程:xk=axk-1+wk-1;选择系统状态变量以及状态转移矩阵:
步骤2、建立观测方程:zk=hxk+vk;仅考虑平面坐标时系统的输出为经纬度,故zk=[xy]t,观测矩阵h用于将状态向量xk转换到二维的zk故取:
步骤3、给定第一次执行步骤4时所需的初始条件:卡尔曼滤波是递推算法,因此需给定状态向量初始值等。这里给出一组初始值:
步骤4、预测:
步骤5、更新: