Global navigation satellite system (GNSS)是手机或者无人车定位中的关键一个部分。GNSS是当前主要的可以提供绝对定位信息的一种信息来源。无人车的基于地图匹配定位的这一个部分中,GNSS经常用来提供初始化。就目前来看,GNSS的定位方式主要包括单点定位(SPP),也就是我们手机常用的单点定位方式;RTK定位和DGNSS定位。对于一个接收机所收到的数据,主要包括载波(carrier-phase),伪距(code)和导航数据(navigation data)。GPS定位的主要误差源及其误差范围如下:
- 电离层误差:0~30 米,由于电离层对GPS信号的干扰,在不同的电离层情况下,误差在一定范围内波动。
- 对流层误差:0~30 米,由于对流层对GPS信号的干扰,在不同的对流层情况下,误差在一定范围内波动。
- 卫星时钟误差:0~3米,也叫satellite clock bias。
- 接收时钟误差:0~10米,也叫receiver clock bias。
- 多路径和非视距信号(multipath/NLOS):0~100米。
单点定位(Single Point Positioning): 单点定位是基于接收机收到的卫星伪距(距离)信息,计算接收机的绝对位置。在空旷区域下,精度可达3~10米。
差分GPS定位:当前流行的差分GPS定位主要原理是通过接收基站的数据,对伪距进行差分,可有效的消除电离层误差,对流层误差,卫星时钟误差和接收机时钟误差。但是由于只采用伪距,且伪距的精度有限,定位精度大约在0.5~2米之间。
RTK GPS定位:RTK GPS定位技术是当前自动驾驶领域广泛应用的高精度定位技术。和差分GPS定位相比较,RTK也是有赖于来自基站的观测数据,可有效的消除电离层误差,对流层误差,卫星时钟误差和接收机时钟误差;RTK同时采用了载波观测量进行位置解算。本篇主要介绍如何解算RTK GPS定位。从伪距,载波的观测量建模开始,到基于Ceres Solver的非线性优化求解float解,然后采用流行的LAMBDA算法求解模糊度(ambiguity)。在读以下RTK定位的内容之前,如果没有了解基本的GNSS定位原理,强烈建议先读之前的一篇关于GNSS单点定位的文章(https://zhuanlan.zhihu.com/p/48086556)。