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)比较低的时候也可以解出正确的信号,有利于持续的锁定、跟踪卫星信号。
与其他定位系统相比,北斗的特点主要有:
- 亚太地区覆盖好。北斗系统由3颗地球同步卫星、3颗地球倾斜轨道同步卫星和24颗中轨道卫星构成,与GPS相比,北斗有6颗星持续覆盖亚太地区,极大提升了亚太地区可见卫星的颗数,一方面提高定位成功率,另一方面也能提升精度(改善了GDOP,减少了误差)。
- 北斗的同步卫星可用来进行通信,地面设备可以将短报文发送到卫星(只用GEO卫星支持短报文)上,然后转发给目标终端,这种通信是免费的,但是需要专门的天线和设备(需要将信号发射到4万公里远的地方,普通手机肯定是不行的)。
多个卫星定位系统的信号同时被收到时,所有的卫星可以一同参与解算(每增加一个系统,只需增加一个新的参数,即这个系统相对于GPS系统的时间差),使得定位精度可以获得提升。目前手机上无法选择参与定位的星座或者卫星,所以我们无法指定只用北斗或者不用GPS定位。
我们对比了手机端GNSS定位时,使用不同系统的占比,可以看出GPS和格洛纳兹由于发展的比较早,在手机芯片侧的渗透率比较高,因此被使用的比例也最高,其次就是北斗。
按参与定位的卫星颗数统计,北斗排在第二位,仅次于GPS。
因为各系统技术类似,其定位精度也是类似的,北斗也不例外,水平定位误差一般在10米以内。垂直定位精度一般会差一些,主要是由于卫星都分布在设备的一侧,垂直方向上的误差难以修正。
卫星定位接收机构成
卫星定位接收机的原理图如上图所示,主要的模块包括:
- 天线
用于接收卫星信号。由于卫星信号微弱,天线当然是越大越好,但是由于接收机需要移动,天线尺寸受到制约。天线的主要作用是放大信号和抑制多径,主要的类型有以下几种
左边的是比较常见的天线,内部是陶瓷天线,外部带磁铁,可以吸附在车顶;中间的是专业天线,旁边带扼流圈,可以抑制来自四周和地面反射的信号,只接收从天顶方向来的信号,这种天线的效果最好,一般用于专业研究和高精测绘;右侧是手机天线,长度只有几厘米,效果最差。
卫星信号的电磁波是圆极化的(传播时在垂直于传播方向的一个平面上波动),因此,采用圆极化天线(如平面的陶瓷天线)接收效果最好。但手机上天线尺寸太小,只能采用线极化天线,信号捕获能力大幅下降,再加上缺乏信号屏蔽(扼流圈),极易受到多径效应以及其他信号干扰。
- 射频前端
这个模块主要是将原始信号进行下变频、功率放大以及滤波,提取真正有用的信号,便于解码处理。
- 基带处理
这个模块是对卫星信号进行解码,获得卫星报文。每颗卫星的信号需要一个单独的通道进行处理,如果有100颗卫星,2个频段,那可能需要200个通道才能有效处理这些信息。通道数越多,可以获得的卫星观测值也就越丰富,定位精度也就越高。
解码的过程,分为搜索-锁定-跟踪三步,首先生成每颗卫星的伪码,然后与信号进行自相关操作,相关度达到一定程度就可以锁定卫星,然后进行码锁定、位同步、帧同步,最终提取出报文。这个过程要持续进行,因为多普勒效应,信号的频率会不断变化,所以本地生成的伪码也要不断变换频率去适配卫星的变化。一旦失去锁定,就会丢失信号,也就无法定位了。
- PVT解算
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:
- 可以单独获取卫星定位结果或网络定位结果,也可以同时进行两种定位。
- 提供了NMEA格式(一种卫星定位结果的规范化表达)的结果数据,可以获取每颗卫星的ID、类型、信号强度,以及xDOP等细粒度的误差描述。
- 提供了GnssStatus来描述每颗卫星的状态,内容比NMEA更全面。
- 提供了GnssMeasurement来描述原始观测量,包括伪距测量值、载波相位测量值、卫星锁定状态等。
- 提供了GnssClock描述本地时钟的状态。
- 提供了GnssNavigation透出最原始的未解码报文。
有了这些信息,通过一些App就可以实时看到当前的卫星状态,例如Androits gps test, GPStest等
另外,我们还可以进行卫星定位的软解算,对卫星定位结果进行修正,甚至替代。我们主要尝试解决两类问题:
- 定位不准:对卫星定位结果进行质量判断,识别其中的大误差点,优化精度,或者优化精度半径,使下游使用定位点的时候,能够差异化的处理。
定位不准的原因,主要是来自卫星信号中含有误差,而影响最严重,也是最难抑制的,就是多径造成的影响。
另一类定位不准的问题,是系统将其他定位结果伪造为卫星定位结果。比如,将网络点冒充为卫星定位点。
- 无法定位:系统不输出定位结果时,尝试进行软件解算。
无法定位最主要的原因,是信号接收条件不好,比如室内遮挡、高架遮挡、高楼遮挡。在开阔地带无法定位,一般是设备Bug,重启设备后一般都能解决。
卫星定位未来展望
随着移动用户量持续增长,以及物联网的大范围普及,卫星定位技术还会持续快速发展。
在卫星侧,将出现低轨定位卫星(距地面几百公里)。传统上的定位卫星由于要覆盖较大的地理范围,高度一般都比较高,运行在中轨轨道上。随着火箭发射技术的革命,卫星发射成本急剧下降,向太空发射大批量低成本卫星的方案成为可能。比如spacex已经发射了上千颗“星链”卫星。
低轨卫星进行定位有几个好处:
- 距离近,信号更强,设备侧接收到的卫星信号更好。
- 可以传输更多的数据,比如各种修正数据。
- 位于电离层底部,电离层误差小。
- 卫星仰角变化快,PPP定位可以更快收敛。
在设备侧,高精定位将大范围普及,华为P40是首个支持RTK的智能手机,可以做到0.5米的精度。高通也即将发布支持RTK的移动芯片,在2021年上半年,更多支持RTK的智能手机将会上市。
在应用侧,高精定位的应用场景会不断涌现,现在的一些典型应用场景包括:
- 传统测绘
- 精准农业,机械化自动化种植和收割
- 车道级导航和自动驾驶
- 共享单车的精准停放
- 无人机导航
参考资料
北斗官方网站 http://www.beidou.gov.cn/
GPS官方网站 https://www.gps.gov/
伽利略官方网站 https://www.gsa.europa.eu/