头三篇分别是GNSS与高精度定位,IMU与惯性导航,高精度地图原理与应用。
1. 定位技术的划分
定位最早的需求来自航海,其实导航的英文navigation,词源来自拉丁文navis(船)+agare(引导),表示从A地到B地航行中对船只的操作。通过下图的航海示意,可以把定位技术分为三类。
与其他物体的相对定位:相对定位的核心是对目标的测量。
卫星定位(绝对定位):由天体定位演化而来,核心是已知运动规律的星体+准确的时钟+对星体的有效观测。
惯性导航:核心准确的时间和对运动的有效测量。
2. GNSS系统和信号说明
目前全球范围共有GPS、CAMPASS/BEIDOU、GLONASS、Galileo,四大全球GNSS系统,在局部范围有QZSS(日本)IRNSS(印度)等区域GNSS系统。国内主要是使用GPS,北斗以及伽利略系统。
任一GNSS系统可以划分由卫星、地面观测站、用户接收机三部分组成。卫星上有精密原子钟,可以让所有卫星时间同步精度在纳秒级。地面观测站是对卫星位置,运动状态进行长时间精密观测,用来修正卫星的运动轨道信息。这也是为什么GLONASS应用比较少的原因之一,因为国际ZZ因素,俄罗斯的观测站在其国外比较少,这就导致在俄罗斯之外的地方定位精度会差一些。而用户接收机我们在车端可以直接控制和操作的设备了。
导航电文有什么?
含有卫星钟改正参数,周数、电离层改正参数、卫星状态等
星历:当前卫星的轨道数据,1*参考时间,6*轨道参数,9*摄动力参数
历书:所有卫星的轨道数据(有效期更长、精度更低)
需要注意的是无A-GPS辅助时,冷启动需要接受完整1帧的导航电文才能够定位。也就说冷启动的时间至少大于30s。
信号调制解调相关问题
多卫星信号问题:
PRN码的正交性和自相关性,不同卫星的信号可以通过PRN码来区分,码分多址(Code Division Multiple Access, CDMA)
GLONASS采用频分多址(Frequency Division Multiple Access, FDMA)
接收机有多个通道,每个通道对指定的PRN码和载波频率进行处理。
信号解调处理:
卫星信号解调的流程如下
3.码伪距定位
上一篇讲了GNSS的信号,通过调制在载波上的测距码和导航电文,我们可以有途径获得接收机到卫星的距离,卫星在天上的运行位置。通过这些就可以尝试计算接收机的位置了。那么问题来了:
需要几颗卫星才能确定接收机的位置呢?
已知卫星到接收机的伪距,需要几颗卫星可以定位?
在上面这张图的误导下可能有的同学会答3颗卫星,确实不同线的三个球体可以确定2个交点,但是接收机到卫星的距离,是通过确定信号传播的时间来确定的。卫星上的原子钟非常精密,并且卫星之间的时间是精密同步过的,可以视为精确的(当然实际上是要通过相对论来修正的),但是接收机上的时间可能是不准的,这就会对卫星距离的测量引入由于接收机时间不准的误差,称为接收机钟差。这样距离的测量就是有误差的了。
接收机钟差使得三颗卫星无法定位
这里面有X,Y,Z距离坐标的三个未知数,以及第四个未知数时钟相关误差,如果有4颗卫星的信号,就可以求解出这4个未知数。所以GNSS定位至少需要四颗卫星。
伪距测量精度通常为码元宽度的1/10~1/100。C\A码宽293m,伪距测量精度3-30m。依赖伪距定位能够做到的精度水平为5-10m。这也就是我们普通车机和手机上GNSS的定位精度,显然这样的定位精度只能确定我们的车是在哪条道路上,但是没法精确到哪条车道上,更不用说是在车道中的哪个位置了。
显然自动驾驶需求更高的定位精度,那么想要获得更高的定位精度,就需要分析清楚具体的测量误差。
4. GNSS信号的误差
所有影响测量接收机到卫星之间距离的因素,都会产生误差。误差可以分为几个方面:
卫星相关误差
卫星时钟误差:没错,原子钟也会有不准的时候;
星历误差:就是GNSS卫星轨道的误差,卫星在空间中总会受到一些扰动,轨道发生偏差;
信号传播相关误差
电离层误差:从离地面约50公里开始一直伸展到约1000公里高度的地球高层大气空域被称作电离层,里面充满了自由电子和离子,当GPS信号通过电离层时,会发生信号延迟,载波相位超前,多普勒频移等影响,引入误差;
对流层误差:对流层温湿度,云雨雪等造成信号传播误差;
多路径效应:高楼,高墙反射造成同一信号被多次接收;
接收机相关误差:
接收机时钟误差:接收机时钟和卫星时间的偏差;
接收机信号时延、噪声等。
GNSS信号相关误差
了解了这些误差之后,伪距的表达就可以由之前的简单公式,变成下面这个复杂的多的公式了。
5.载波相位伪距测量
回顾一下前面说的伪距测量精度通常为码元宽度的1/10~1/100,也就是尺子有多准的问题。GPS信号中C/A码宽为293m,精度是30-3m,即使了解了这些误差的组成,单纯依靠码伪距无法获得车辆智能驾驶所需定位精度。这个时候就需要新的测距方法,载波相位伪距测量。
载波波长
载波相位测量
除了测距码之外,调制测距码的载波本身也可以用来测距。接收的卫星载波信号,与接收机产生的参考载波信号之间的相位差为ϕ。
那么我们就可以得到载波伪距: ̃=( + )∙
这时候会引入新的问题:整周模糊度N。测量只能测定不足一周的部分,而卫星信号经过了多少个整周数不确定。
那么思考一下,需要几颗卫星才能确认整周模糊度?
答案是多少颗都不行,因为每颗卫星的载波信号中的整周模糊度都是不同的,无法通过单纯的GNSS卫星数量增加来确认。这个时候我们需要来自观测站信息的辅助。
如果有方法能够便捷的获取当前接收信号中的误差值,就能够计算得到精准的整周模糊度,可以利用载波相位来获取自身的位置,静态精度可达2cm,动态精度也可以做到10cm以内。而目前常用的方法有RTK(OSR)类和PPP(SSR)类。
6. RTK(OSR)的原理
上一篇讲过,实际的卫星信号中有大量的误差项,有卫星相关的误差和传播路径相关的误差,这些误差很多和地域是强相关的,如果在我们接收机附近,有另一个已知精准位置的接收机(基站),由于这个接收机的位置已知,就可以通过已知的位置和接受的信号,计算出这个误差之和有多少。当我们待求位置的接收机和已知位置的基站足够近,可以认为二者的误差是相同的,这样载波伪距误差项公式就表达为:
基站将误差项和通过信号告诉接收机,就可以求解上式,得到精准的载波定位结果。这种方法叫做差分GNSS,差分GNSS中技术也有很多代,目前应用最广泛的是RTK, Real-Time Kinematics,实时动态差分。而这种方法是对接收机观测的信号进行误差描述的,又被成为OSR,Observation Space Representation,观测空间表达。
RTK原理示意
从上图中可以看出RTK的一些特点,由于是对观测值进行描述,那么对于接收机和基站之间的基线距离有要求,通常距离不能超过50km,这样就需要非常多的基站数量。想覆盖中国大部分区域,需要2000+个观测基站。同时为了获取到接收机附近的观测误差,需要车辆将初始位置发送给服务商,然后再从服务商网络中获取到需要的纠偏数据,这就需要双向通讯。
RTK的好处也非常明显,因为是直接获取到误差的值,计算起来非常快捷,收敛速度较快,状态好时可以在几秒内收敛。
7. PPP(SSR)的原理
另一种模式是用建立观测误差模型来描述卫星信号中的误差项,特别是电离层误差和大气层误差,由于这些误差模型的特性,使得通过少量的参数就可以获取到误差的值,这就使得所需要的参数的数据量和基站的数量大大减小,带来一系列的好处。
传输的数据量大幅减小,可以通过广播的形式播发所有的参数,不需要获取车辆位置,这就只需要单向通讯,从原理上对隐私的安全性更好;
由于单向通讯和数据量小,除了传统蜂窝网络外,还可以通过GEO通讯卫星进行播发,这样可以双链路通讯,从原理上对通讯的可靠性更好;
基站数量少,维护成本低。
这种定位方式,用户通过自己单接收机就可以获取精准位置,所以被称为PPP,Precise Point Positioning,精密单点定位,同时这种方法是对误差模型的状态进行描述,又被称为SSR,State Space Representation,状态空间表达。
PPP原理示意图
8. 定位服务概念
提供定位服务的供应商就是定位服务商,目前国内有千寻位置,六分科技,中移智行等公司提供相应的服务,国外则有Trimble, Hexagon,Sapcorda等定位服务商公司。下图是一些概念的辨析。
而由于这些外部依赖的存在,车用的高精GNSS定位系统除了车端之外,还需要GNSS卫星和观测站,定位服务商和通讯服务商的网络。而车端也需要GNSS信号的接收机和对应的天线,LTE网络接收机和对应的天线,以及使用二者信息进行高精定位求解计算的算法集成方——Host Processor。