5G和北斗,是国之重器。北斗作为卫星定位系统,目前在国际上已处于领先地位,而且已经渗透到我们工作和生活的方方面面。本文将简要介绍卫星定位的原理和应用情况,方便大家对北斗、卫星定位有更多的了解。
卫星定位系统的英文是Global Navigation Satellite System(GNSS),虽然直接翻译过来是导航卫星系统,但它真正提供的能力是定位,能定位后,导航就变得相对简单了。卫星定位的原理,是利用卫星播发时间信号,当设备接收到后,可以根据信号发射时间和本地时间,计算出信号传输时间,再结合光速获得卫星-设备距离。
有了多颗卫星的信号,可以列出一组方程,求解4个未知数:设备的三维坐标x/y/z,以及本地时间与GNSS系统的时间差。
式中的代表卫星j的三维坐标,这个坐标可以通过卫星星历计算获得。
星历是描述卫星运行轨道的一组参数,卫星轨道是一个椭圆,通过几个参数和时间,可以唯一确定卫星的准确位置。
星历的获取有两种方式,一种是卫星直接播发,这种方式的好处是定位过程不依赖卫星信号以外的任何输入,即使没有网络也可以定位成功,但问题是卫星链路带宽很小,要下载完整星历,需要30秒左右的时间,早期的手机和一些车载设备定位过程很慢,就是由于这个原因。
另一种方式,是通过互联网播发,这种方式叫A-GNSS,具体的传输协议叫SUPL(Secure
User Plane
Location),这种数据一般不对应用层透出,在手机上,操作系统会在底层定时请求SUPL数据,然后将获得的星历注入GNSS芯片。有了A-GNSS,设备就可以在秒级获得定位,不需要任何等待过程,目前所有的手机都支持这种方式。A-GNSS的服务提供商,主要是通信运营商,以及一些定位服务商,比如谷歌、千寻等。
卫星不间断的向地面广播信号,这个信号主要包括以下信息:
像其他所有的通信技术一样,这些信息也是以报文的形式发送的,以GPS为例,卫星会每隔6秒发出一个包,而这个包会分解为数据位-CA码序列-载波波形,通过天线发射到地面。地面设备持续锁定卫星,在解算时,计算每颗卫星当前时刻的时间戳(用最近一次收到的时间戳加上报文偏移量),然后进行位置解算。
载波的频率是1.5G左右,波长20厘米左右,比移动通信的波长稍长一些,所以信号的穿透性还是比较好的(波长越长,越容易绕开障碍物),可以穿透比较薄的墙壁或屋顶,所以在一些情况下即使无法直接看到天空,也是能定位的。但是卫星信号是从上往下,在室内很难穿越多层建筑。
卫星定位的另一个特点是可以解算出速度,其依据是多普勒频移原理(与交警用的测速仪原理一样)。当信号源与接收设备存在相对运动时,接收到的信号频率会发生变化。
频率变化量与相对速度存在如下公式:
其中,公式左边是频差和波长,v是设备运动速度(矢量),vj是卫星运动速度(矢量),1j是卫星的投影方向,dt'是本地设备的频漂速度。只要测量了4颗星的频差,就可以解出本地设备的运动速度(与设备姿态无关)。
除了定位和测速,定位卫星还可以完成全球授时(解算过程中获得本地钟差),这也是目前成本最低的高精度授时方法,比绝大部分设备自带的时钟都要准确。
一般而言,伪距测量值精度不如频率测量精度高(伪距定位精度在10米左右,而多普勒定速精度可以达到0.2米/秒以内,授时精度在20ns),原因是伪距测量容易受到多种路径误差影响(后面会介绍),而频率测量的干扰因素少很多。
卫星定位发展历程
最早的卫星定位系统,是美国在1960年代开发的子午仪系统,后续在70年代开发出了GPS定位系统,目前的GPS系统由24颗卫星构成。除了GPS,世界多国也开发出了自己的卫星定位系统,主要的有中国的北斗系统、欧盟的伽利略系统、俄罗斯的格洛纳兹系统,此外日本和印度在开发区域定位系统。
除了天上的卫星,各定位系统还需要地面站对卫星的运行进行监测,包括健康度、轨道参数(计算完成后要注入卫星实现全球播发)、信号质量等,另外还需要对卫星进行控制。
各种卫星定位系统使用的技术类似,大多采用中轨道卫星(MEO,卫星高度2万公里),少数采用了地球同步轨道(GEO,卫星高度4万公里)和地球倾斜同步轨道(IGSO)。同时,信号播发大多采用CDMA技术,实现在同一个频率上传输多颗卫星的信号。为了让地面设备能够较好的接收来自几万公里外的信号,信号的数据速率都比较低,比如GPS
L1频段的数据传输速率只有50字节/s,根据香农定理,C=B*log2(1+S/N),
在频率带宽B固定的情况下,随着传输速率C的降低,接收端在信噪比(S/N)比较低的时候也可以解出正确的信号,有利于持续的锁定卫星信号。
与其他定位系统相比,北斗的特点主要有:
多个卫星定位系统的信号同时被收到时,所有的卫星可以一同参与解算(每增加一个系统,只需增加一个新的参数,即这个系统相对于GPS系统的时间差),使得定位精度可以获得提升。目前手机上无法选择参与定位的星座或者卫星,所以我们无法指定只用北斗或者不用GPS定位。
我们对比了手机端GNSS定位时,使用不同系统的占比,可以看出GPS和格洛纳兹由于发展的比较早,在手机芯片侧的渗透率比较高,因此被使用的比例也最高,其次就是北斗。
按参与定位的卫星颗数统计,北斗排在第二位,仅次于GPS。
因为各系统技术类似,其定位精度也是类似的,北斗也不例外,水平定位误差一般在10米以内。垂直定位精度一般会差一些,主要是由于卫星都分布在设备的一侧,垂直方向上的误差难以修正。
卫星定位接收机构成
卫星定位接收机的原理图如上图所示,主要的模块包括:
用于接收卫星信号。由于卫星信号微弱,天线当然是越大越好,但是由于接收机需要移动,天线尺寸受到制约。天线的主要作用是放大信号和抑制多径,主要的类型有以下几种
左边的是比较常见的天线,内部是陶瓷天线,外部带磁铁,可以吸附在车顶;中间的是专业天线,旁边带扼流圈,可以抑制来自四周和地面反射的信号,只接收从天顶方向来的信号,这种天线的效果最好,一般用于专业研究和高精测绘;右侧是手机天线,长度只有几厘米,效果最差。
卫星信号的电磁波是圆极化的(传播时在垂直于传播方向的一个平面上波动),因此,采用圆极化天线(如平面的陶瓷天线)接收效果最好。但手机上天线尺寸太小,只能采用线极化天线,信号捕获能力大幅下降,再加上缺乏信号屏蔽(扼流圈),极易受到多径效应以及其他信号干扰。
这个模块主要是将原始信号进行下变频、功率放大以及滤波,提取真正有用的信号,便于解码处理。
这个模块是对卫星信号进行解码,获得卫星报文。每颗卫星的信号需要一个单独的通道进行处理,如果有100颗卫星,2个频段,那可能需要200个通道才能有效处理这些信息。通道数越多,可以获得的卫星观测值也就越丰富,定位精度也就越高。
解码的过程,分为搜索-锁定-分析三步,首先生成每颗卫星的伪码,然后与信号进行自相关操作,相关度达到一定程度就可以锁定卫星,然后进行码锁定、位同步、帧同步,最终提取出报文。这个过程要持续进行,因为多普勒效应,信号的频率会不断变化,所以本地生成的伪码也要不断变换频率去适配卫星的变化。一旦失去锁定,就会丢失信号,也就无法定位了。
PVT包括Position,Velocity和Time。这一步是真正进行定位的步骤,是利用基带解码获得的报文,提取出时间戳、星历等信息,代入公式进行计算,然后将计算结果输出给应用程序。
定位误差来源与精度提升
卫星定位虽然已经很准确了,但是在某些场景下,还是无法满足需求,比如,打车的时候定位点离车辆有一定距离、步导的时候难以区分方向甚至会定位到马路对面、静止的时候定位点总数飘来飘去、室内的时候定位点乱飘。这需要从卫星信号的发射、传输、接收过程来解释。
卫星信号从发射到被设备接收,需要经过大气层,其中,大气电离层有数千公里厚,这部分大气非常稀薄,但是存在大量被电离的电子,这部分电子会让电磁波变慢一点,从而产生延迟。在对流层,也会产生一定的延迟。在地表附近,由于各种建筑、山体、水面的影响,卫星信号可能被反射或折射(多径效应),产生延迟。
在卫星信号发射侧和接收侧,也有很多系统相关的误差,比如时钟偏差、处理延迟等,这些延迟加上传输延迟,使得卫星信号的传输时间,并不是准确的等于物理距离/光速,另一方面,卫星的星历也有误差,卫星位置和真实位置存在偏差,最终造成了定位结果产生偏差。
要提升定位精度,需要想办法消除这些误差,主要有以下几种方案。
双频GNSS
不同频率的电磁波通过电离层时会有不同的延迟,人们发现,对两个或多个频率的观测值进行线性组合,可以消除电离层误差,从而能提升精度。这就是双频GNSS定位的原理。小米8是业界第一款支持双频GNSS定位的手机,后续各大厂商均进行了跟进,一些高端手机均采用双频定位。消除电离层误差后,定位精度可以提升到5米以内。
地基/星基增强
星历误差、卫星时钟误差、甚至是电离层和对流层误差都是可以观测或建模的,一旦计算出了实时的误差值,就可以通过一个单独的通道进行播发,接收设备在定位过程中使用这些修正项,就可以提升定位精度。播发的通道一般有两种,一种是直接通过卫星播发,称为SBAS(Satellite-Based
Augmentation
System),好处是覆盖广,但设备需要增加额外的信号接收通道;另一种是地基增强,比如通过互联网,这需要设备具备联网能力。
这些增强方式对于精度提升是有限的,还是有很多误差项无法消除,比如电离层误差。
高精定位-差分定位(RTK)
RTK是Real
- time
kinematic的缩写,是一种差分定位。其原理是利用一个参考站提供基准观测值,然后用设备的观测值与基准站的观测值进行差分,差分后可以消掉星历误差、卫星钟差、电离层误差,再进行星间差分后可以进一步消除掉设备的钟差,最终可以算出设备相对基准站的相对坐标,如果基准站位置已知,就可以完成准确的绝对坐标,精度可以达到厘米级甚至毫米级。
RTK能提升精度的另一个原因是引入了载波相位观测,相比伪距观测值,载波相位观测值的误差更小。
使用RTK,需要在附近20km内有参考站(距离太远,电离层误差不一样,做差分无法完全消除误差),同时需要持续不断的获得参考站的观测数据(一般通过互联网传输,使用RTCM协议),因此相对普通的定位,RTK定位成本较高,但对于一些对精度要求很高的场景,比如车道级定位、自动驾驶等,是必不可少的。
RTK服务一般由专业服务商提供,如千寻、六分,这些服务商在全国范围内部署了数千个基准站,持续对订阅用户播发数据。
高精定位-精密单点定位(PPP)
RTK需要布设密集的参考站,有没有办法不依赖参考站?PPP(precise
point
positioning)就是一种方法,它的原理是对每一种误差进行准确建模,最终求解出卫星和设备之间的准确距离。为了确定准确的误差,PPP定位时需要不断的迭代内部参数,而且,一些卫星的误差只有当卫星位置变化后才能体现出来,所以PPP需要比较长的收敛时间,一般需要30分钟才能收敛到理想的精度,如何更快的收敛是目前学术界的一个研究热点。
组合定位
卫星定位的一个最大问题,就是丢失卫星信号后如何定位,这就需要其他定位方式来补充。组合定位是利用卫星信号和其他定位技术,比如惯性导航,来完成定位,二者相互配合。最简单的一个例子,就是卫星定位是有一个最高频率的,一般最多是10Hz,在两次定位之间,可用惯导来进行位置推算,获得更高频率的位置输出。而组合导航最重要的作用,是提升精度,比如,利用卡尔曼滤波方法,用惯导计算推算位置,用卫星定位提供观测量,对推算位置进行修正,这可以让定位结果更加平滑,而且可以对异常的卫星观测量进行过滤或降权。
手机上的卫星定位
在移动互联网出现以前,卫星定位终端是一个很专业的领域,只有测绘、军事等领域会应用这种技术,定位需要使用专用的接收机,比如Trimble、ublox等。随着智能手机将卫星定位芯片集成,卫星定位的应用得到爆发式增长,终端数量一下子提升到几十亿量级,也产生了海量的位置数据。
手机上的卫星定位与专业接收机,还是存在比较大的差异,主要体现在:
苹果手机
苹果手机的定位能力是完全封闭的,对外只透出定位结果,外部基本无法拿到任何定位相关的原始观测量,比如卫星数量、类型等。好消息是,iPhone12终于开始支持北斗了。从苹果的API上,外界甚至无法区分定位结果到底是来自卫星定位还是网络定位(目前仅能通过速度的符号来判断,但苹果对此没有任何承诺)。所以,基于苹果手机,我们基本无法做出优化,苹果手机上高德地图的定位点都是iOS底层直接提供的。
安卓手机
安卓手机比苹果手机开放的多,在定位能力方面提供了一系列API:
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。