本科生学习GNSS算法 中级教程(一)- rtklib多系统多频单点定位算法-伪距码偏差修正

前言

本系列开始GNSS的进阶,主要是在前一个的基础上 《测绘工程本科生如何入门GNSS算法》系列教程的基础上,开始初步介绍如何将自己的idea实现。

rtklib中的单点计算逻辑,只使用了第一频点进行定位,进阶教程将做以下提升:

①从单频扩展到多频定位

②增加简单的抗差逻辑


伪距公式

首先多频单点可以认为是单频的叠加,只是需要有以下两个地方要特殊留意:第一点,电离层延迟的计算,rtklib其实已经计算了第一频点的延迟大小,我们需要计算其他频点的电离层延迟;第二点,需要修正卫星码偏差。其实还需要考虑接收机端的码偏差,但此次我们不考虑这个。

伪距公式如下:

义为两个天线相位中心之间的距离,对于卫星来说,天线相位中心肯定不是信号产生的地方。那从信号发生器到天线相位中心这段距离的耗时该如何考虑?

伪距硬件延迟

对于同一系统同一频率,从信号产生到相位中心的耗时是基本相同的,但是不同频率之间是有偏差的,对于伪距来说,这个偏差就是码偏差,也就是我们今天的主角。为什么我们要强调不同频率之间的偏差,不能直接确定绝对的硬件延迟吗?首先,绝对延迟的测量是比较困难的;其次,随着硬件老化等问题,延迟量也会发生变化,所以一般都是计算相对值。

为了方便不同频率接收机或者模组的使用,广播星历中提供了相应的参数进行修改。但又有了另外一个疑惑,既然绝对延迟量无法获得,那广播星历播发的卫星钟怎么处理这个绝对延迟量?

前面提到,对于同一频率,卫星的伪距硬件延迟是相同的,对于所有卫星均相同的误差,那么就可以在解算方程时被接收机钟状态量吸收;所以如果我们知道了第二频点相对于第一频点的修正量,如果忽略接收机端的伪距延迟,那么第二频点的处理就和第一频点一样。所以问题就转移了,从求绝对延迟变成了求第一频点和第二频点之间的硬件延迟差异,也就是码偏差。如何计算码偏差,不在本文讨论范围内,这也是GNSS研究方向之一。

但是有了伪距偏差,以及卫星钟差,依然需要了解更多的知识才能正确使用码偏差产品。使用过程中我们需要知道,卫星钟差是怎么得到的。

卫星钟

单个卫星在空中运行,其时间主要依赖自身的卫星钟进行时间维护;卫星钟虽稳定,但长时间也会存在偏差。卫星无法通过自身计算自己的钟差,需要地面运控站计算卫星钟差,并上注到卫星,通过卫星信号播发给用户,用以改正。

那卫星钟差是如何计算得到呢?其实也是利用定位的原理,需要将卫星钟作为待估参数,经过一段时间收敛。为了高精度的估计卫星钟,传统算法均使用无电离层组合观测值进行计算。何为无电离层组合?前文提到电离层的非弥散特性,其和频率的平方成反比的关系。通过两个频率的观测值组合,则可以消除电离层的影响。

在使用无电离层组合观测值估计卫星钟差时,直接使用原始的双频数据,并不会对伪距硬件延迟进行修正。所以卫星播发的广播星历中的钟差是以无电离层组合为基准的。

但也并不是所有的卫星系统的钟差都是以无电离层组合为基准,比如我们的北斗系统。

TGD

下图为北斗ICD中的规定,星上设备时延差即上文中伪距偏差。北斗播发的广播星历钟差是以第三频点为基准的。

北斗ICD全称叫作北斗卫星导航系统空间接口控制文件,可在北斗官网下载。

另外还准备了一篇硕士论文,题目为《全系统GNSS组合伪距单点定位关键技术研究》。第3.1章节有详细的关于如何使用广播星历修正各个频率硬件延迟的的方法,编程实现过程中我们会用到这里面的公式。另外,论文中也有相关的基础知识,可以作为入门阅读。我上面的写了这么多,只是希望能帮助大家更快速的理解论文。

ICD和论文 公众号回复 “单点定位”获取。

下一章会讲代码实现。

欢迎关注个人公众号

个人公众号 GNSS和自动驾驶,会持续更新GNSS的基础教程/进阶教程/GNSS在自动驾驶中的应用/自动驾驶技术进展等。

猜你喜欢

转载自blog.csdn.net/dong20081991/article/details/126324396