热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于卫星定位,你想知道的一切

关于,卫星,定位,
简介:   本文将简要介绍卫星定位的原理和应用情况,方便大家对北斗、卫星定位有更多的了解。

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米以内。垂直定位精度一般会差一些,主要是由于卫星都分布在设备的一侧,垂直方向上的误差难以修正。

卫星定位接收机构成

卫星定位接收机的原理图如上图所示,主要的模块包括:

  1. 天线

用于接收卫星信号。由于卫星信号微弱,天线当然是越大越好,但是由于接收机需要移动,天线尺寸受到制约。天线的主要作用是放大信号和抑制多径,主要的类型有以下几种

左边的是比较常见的天线,内部是陶瓷天线,外部带磁铁,可以吸附在车顶;中间的是专业天线,旁边带扼流圈,可以抑制来自四周和地面反射的信号,只接收从天顶方向来的信号,这种天线的效果最好,一般用于专业研究和高精测绘;右侧是手机天线,长度只有几厘米,效果最差。

卫星信号的电磁波是圆极化的(传播时在垂直于传播方向的一个平面上波动),因此,采用圆极化天线(如平面的陶瓷天线)接收效果最好。但手机上天线尺寸太小,只能采用线极化天线,信号捕获能力大幅下降,再加上缺乏信号屏蔽(扼流圈),极易受到多径效应以及其他信号干扰。 

  1. 射频前端

这个模块主要是将原始信号进行下变频、功率放大以及滤波,提取真正有用的信号,便于解码处理。

  1. 基带处理

这个模块是对卫星信号进行解码,获得卫星报文。每颗卫星的信号需要一个单独的通道进行处理,如果有100颗卫星,2个频段,那可能需要200个通道才能有效处理这些信息。通道数越多,可以获得的卫星观测值也就越丰富,定位精度也就越高。

 解码的过程,分为搜索-锁定-分析三步,首先生成每颗卫星的伪码,然后与信号进行自相关操作,相关度达到一定程度就可以锁定卫星,然后进行码锁定、位同步、帧同步,最终提取出报文。这个过程要持续进行,因为多普勒效应,信号的频率会不断变化,所以本地生成的伪码也要不断变换频率去适配卫星的变化。一旦失去锁定,就会丢失信号,也就无法定位了。

  1. 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的智能手机将会上市。

在应用侧,高精定位的应用场景会不断涌现,现在的一些典型应用场景包括:

  • 传统测绘 

  • 精准农业,机械化自动化种植和收割

  • 车道级导航和自动驾驶

  • 共享单车的精准停放

  • 无人机导航

原文链接
本文为阿里云原创内容,未经允许不得转载。


推荐阅读
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 查找给定字符串的所有不同回文子字符串原文:https://www ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 题目描述http:acm.nyist.netJudgeOnlineproblem.php?pid306Dr.Kong设计的机器人卡多非常爱玩,它常常偷偷跑出实验室,在某个游乐场 ... [详细]
  • 一维和二维数组的前缀和与差分 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • [转载]从零开始学习OpenGL ES之四 – 光效
    继续我们的iPhoneOpenGLES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可 ... [详细]
  • Myappcrashedandthecodeisthefollowing:我的应用程序崩溃,代码如下:elseif(){CGDetailVie ... [详细]
  • Xcode离线安装帮助文档1.在线查看帮助文件:Xcode下查看帮助文件,菜单Help-DeveloperDocumentation在右上角搜索框中即可检索,但速度很慢 ... [详细]
  • 一份来自清华的数据分析笔记,请查收!
    之前发过很多数据分析的文章,收到不少好评,但也有一些困惑:入门数据分析该学哪些知识点?该看哪些书?是从Pyth ... [详细]
  • SLAM优秀开源工程最全汇总
    https:zhuanlan.zhihu.comp145750808 1、CartographerCartographer是一个系统,可跨多个平台和传感器配置以2D和3D形式提供实 ... [详细]
author-avatar
懒羊羊2502880053
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有