定位基础知识-GNSS、惯导、基站、WIFI定位
1.NMEA语句
常用的NMEA语句有GGA(位置信息)、RMC(最简导航传输信息)、GSV(可视卫星状态)、GSA(参与定位卫星以及DOP值等信息)、ZDA(UTC时间信息)、VTG(地面速度信息)、GLL(大地坐标位置信息)、GST(伪距误差统计信息)
还有其他一些语句DTM(参考坐标系信息)、GBS(GNSS卫星故障检测)、HDT(航向角,真北方向)、NTR(输出移动站与基准站距离)、ORI(定向数据)、ROT(转向速率信息)、TRA(航向角信息)
GGA语句:
$GPGGA,134658.00,5106.9792,N,11402.3003,W,2,09,1.0,1048.47,M,-16.27,M,1.8,0000*60
Num | 字段 | 具体内容 | 格式 | 备注 |
0 | $GPGGA | 协议头,除了GP(GPS),还有GNGGA(组合星系)、BDGGA(单北斗星系)、GLGGA(单单格洛纳斯星系)、GAGGA(单伽利略星系) | $XXGGA | |
1 | UTC(134658.00) | UTC时间戳--时分秒.秒。可以从小数点看出频率,分度是0.1,则代表10Hz,0.01代表100Hz | hhmmss.ss | |
2 |
Lat (5106.9792) |
纬度(ddmm.mmmm) | ddmm.mmmm | |
3 | Lat Dir(N) | N-北纬 S-南纬,中国是北纬N | N或S | |
4 | Lon(11402.3003) | 经度(dddmm.mmmm) | dddmm.mmmm | |
5 | Lon Dir(W) | E-东经 W-西经,中国是东经E | E或W | |
6 | Qual(2) |
解算状态 0=无效定位 1=单点定位 2=伪距差分解 3=PPS模式(一般用于时间同步,单独的PPS脉冲信号部不能用于定位解算) 4=固定解 5=浮点解 6=惯导推算解 7=用户输入 8=PPP解(精密点位定位,厘米级或亚米级定位,无需依赖差分信号) |
固定解精度高于浮点解 | |
7 | satellite num(09) | 参与解算的卫星数量 | XX | |
8 | HDOP(1.0) |
水平精度因子, 维基百科中,<1理想置信度水平高 2-4优秀置信度水平满足所有的应用需求 4-6良好置信度水平满足高精度应用需求 6-8中等置信度水平满足大部分应用需求 8-20一般置信度水平较低,应评估应用风险 20-50很差置信度水平很差,基本无法满足应用需求。经验值,HDOP<5,单点定位精度一般比较好。 |
X.X | HDOP值很小,并不代表当前误差很小,有时候与真值仪比较,会发现误差很大,几十米也有。一般<4是可以有效定位。 |
9 | alt (1048.47) | 海拔高度,单位米 | XXX.XXXX | |
10 | M | 海拔高单位,米 | ||
11 | -16.27 | 海拔异常值 | ||
12 | M | 海拔异常值单位,米 | ||
13 | 1.8 | 差分数据龄期,单位秒,代表持续多长时间没有收到差分数据,一般要求5秒内 | ||
14 | 0000 | 差分站台ID号,取值范围0000-1023 | ||
15 | * 60 | 校验位,*为固定符号,校验码为十六进制的60 |
RMC语句:
$GPRMC,123518.00,A,2814.1132530,N,11252.1601402,E,0.004,264.354,080321,,,A,A*36
Num | 字段 | 具体内容 | 格式 | 备注 |
0 | $GNRMC | 协议头,除了GP(GPS),还有GNGGA(组合星系)、BDGGA(单北斗星系)、GLGGA(单单格洛纳斯星系)、GAGGA(单伽利略星系) | ||
1 | UTC时间123518.00 | UTC时间,hhmmss.ss | ||
2 | A | 数据状态: A = 有效, V = 无效 | 准确 时间有效性需要判断这个标志位 | |
3 | 2814.1132530 | 纬度(ddmm.mm) | ||
4 | N | 纬度方向(N-北纬 S-南纬) | ||
5 | 11252.1601402 | 经度(dddmm.mm) | ||
6 | E | 经度方向(E-东经 W-西经) | ||
7 | 0.0041 | 地面速度,单位:节 | 单位是节,不是km/h。km/h在ZDA语句可以获取 | |
8 | 264.354 | 地面航向,单位:度。 以真北为基准, 沿顺时针方向计算角度 |
航向角,一般使用双天线接入接收机可以消除静止时航向角飘移问题 | |
9 | 080321 | 日期, 格式: ddmmyy(日月年) | ||
10 | - | 磁偏角,单位:度 | ||
11 | - | 磁偏角方向: E-从真实航向角中减去, W-与真实航向角相加 |
||
12 | A | 定位状态: A-自主模式 D-差分模式 E-航位推算模式 M –手动输入模式 P-PPP 模式 S-模拟器模式 N-数据无效 |
||
13 | V | 航行状态: S = 安全, C = 警告, U = 不安全, V = 航行状态标识无效 |
||
14 | *36 | 校验 | XX |
GSV语句:
$GPGSV,3,1,12,08,27,194,39.7,27,55,168,42.8,26,47,030,41.4,04,50,305,42.1*75
Num | 字段 | 具体内容 | 格式 | 备注 |
0 | $GPGSV | 协议头,除了GP(GPS),还有GNGGA(组合星系)、BDGGA(单北斗星系)、GLGGA(单单格洛纳斯星系)、GAGGA(单伽利略星系) | ||
1 | 3 | 当前卫星系统 GSV 语句总数 | ||
2 | 1 | 当前卫星系统 GSV 语句序号 | ||
3 | 12 | 可见的卫星总数 | 可视卫星总数 | |
4 | 08 | 卫星号 GPS: 1~32 GLONASS: 65~96 Galileo: 1~38 BDS: 1~37 QZSS: 193~202 |
QZSS是日本的区域卫星系统 还有印度的区域卫星系统NAVIC 这两个系统在中国不可用 |
|
5 | 27 | 卫星仰角, 单位:度 | 仰角太低,卫星容易手受到建筑物、树木、山岭遮挡 | |
6 | 194 | 卫星航向角,单位: 度 | ||
7 | 39.4 | 信噪比 | 一般超30的信噪比的卫星是代表很强的卫星信号 |
8-19 | 27,…,42.1 | 重复 4~7 字段,每条语句最多输出 4 颗卫星信 息,如不足 4 颗卫星则其余字段用“,”补齐。 |
||
20 | *75 | 校验 |
GSA语句:
$GNGSA,M,3,10,12,14,20,22,25,26,29,31,32,,,1.8,1.6,0.8,1*35
Num | 字段 | 具体内容 | 格式 | 备注 |
0 | $GNGSA | 协议头,除了GP(GPS),还有GNGGA(组合星系)、BDGGA(单北斗星系)、GLGGA(单单格洛纳斯星系)、GAGGA(单伽利略星系) | ||
1 | M | 模式指示: M = 手动,强制用于 2D 或 3D 模式 A = 自动, 允许 2D/3D 自动变换 |
||
2 | 3 | 1-未定位 2-2D 定位 3-3D 定位 | 也可以用于定位情况的判断 | |
3-14 | 10,…,,, | PRN 卫星号, 每条语句最多输出 12 颗卫星, 如 不足 12 颗卫星则其余字段用“,”补齐。 取值范 围: BDS:1~37,GPS:1~32,GLO:65~90,GAL:1~36 |
||
15 | 1.8 | PDOP 值, 位置精度因子 | ||
16 | 1.6 | HDOP 值, 水平精度因子 | ||
17 | 0.8 | VDOP 值, 高程精度因子 | ||
18 | 1 | 系统标识符: 1 = GPS,2 = GLONASS,3=GALILEO,4 = BDS |
||
19 | *35 | 校验 |
ZDA语句:
$GNZDA,054828.00,28,02,2020,,*73
Num | 字段 | 具体内容 | 格式 | 备注 |
0 | $GNZDA | 协议头,除了GP(GPS),还有GNGGA(组合星系)、BDGGA(单北斗星系)、GLGGA(单单格洛纳斯星系)、GAGGA(单伽利略星系) | ||
1 | 054828.00 | UTC 时间 | hhmmss.ss | |
2 | 28 | 日期 | ||
3 | 02 | 月份 | ||
4 | 2020 | 年度 | ||
5 | - | 本地时区, 一般不可用 | ||
6 | - | 本时区分钟差, 一般不可用 | ||
7 | *73 | 校验 |
VTG语句:
$GPVTG,4.047,T,,M,0.003,N,0.005,K,A*0C
Num | 字段 | 描述 | 格式 | 备注 |
0 | $GNVTG | 协议头,除了GP(GPS),还有GNGGA(组合星系)、BDGGA(单北斗星系)、GLGGA(单单格洛纳斯星系)、GAGGA(单伽利略星系) | ||
1 | 4.047 | 地面航向,以真北为参考, 单位:度 | 一般使用双天线接入接收机可以消除静止时航向角飘移问题 | |
2 | T | 真北标识符 | ||
3 | - | 地面航向,以磁北为参考, 单位:度 | ||
4 | M | 磁北标识符 | ||
5 | 0.003 | 水平运动速度,单位:节(海里/小时) | ||
7 | N | 速度单位标志, N 表示海里/小时 |
||
8 | 0.005 | 水平运动速度,单位: km/h |
||
9 | K | 速度单位标志, K 表示km/h |
||
10 | A | 定位状态: A-自主模式 D-差分模式 E-航位推算模式 M–手动输入模式 P-PPP 模式 S-模拟器模式 N-数据无效 |
||
11 | *0C | 校验 |
GLL语句:
$GPGLL,2814.1127864,N,11252.1607467,E,021018.00,A,A*63
Num | 字段 | 描述 | 格式 | 备注 |
0 | $GNGLL | 协议头,除了GP(GPS),还有GNGGA(组合星系)、BDGGA(单北斗星系)、GLGGA(单单格洛纳斯星系)、GAGGA(单伽利略星系) | ||
1 | 2814.1127864 | 纬度(ddmm.mm) | ||
2 | N | 纬度方向(N-北纬 S-南纬) | ||
3 | 11252.1607467 | 经度(dddmm.mm) | ||
4 | E | 经度方向(E-东经 W-西经) | ||
5 | 021018.00 | 定位时间(UTC 时间) | hhmmss.ss | |
6 | A | 数据状态: A = 有效, V = 无效 | ||
7 | A |
解算模式指示: A = 自动模式 D = 差分模式 E = 航位推算 M = 手动输入 P = PPP 模式
|
||
8 | *63 | 校验 |
GST语句:
$GPGST,024331.00,,,,,0.009,0.007,0.014*5B
Num | 字段 | 描述 | 格式 | 备注 |
0 | $GPGST | 协议头,除了GP(GPS),还有GNGGA(组合星系)、BDGGA(单北斗星系)、GLGGA(单单格洛纳斯星系)、GAGGA(单伽利略星系) |
1 | 024331.00 | UTC 时间 | hhmmss.ss | |
2 | - | 用于定位计算的伪距标准偏差(RMS),包括观 测的伪距和 DGPS 改正信息 |
||
3 | - | 误差椭球的长半轴, 单位:米 | ||
4 | - | 误差椭球的短半轴, 单位:米 | ||
5 | - | 误差椭球与真北的夹角, 单位: 度 | ||
6 | 0.009 | 纬度标准差,单位:米 | ||
7 | 0.007 | 经度标准差,单位:米 | ||
8 | 0.014 | 高程标准差,单位:米 | ||
9 | *5B | 校验 |
二、多频多模GNSS
多频多模指GNSS接收器可以同时接收多个频段多个卫星系统的卫星信号,并同时处理,融合后输出定位数据。
一般接收GNSS信号会发生延迟,双频定位是通过双频引起的电离层延迟差异,可以消除电离层延迟对电磁波信号的影响,从而实现更高精度的定位。
多模系统定位也称为组合系统定位,每种卫星系统的频段不一样,参考如下:
系统 | 频段 | 备注 |
GPS | L1:1572.42 | |
L2:1227.60 | ||
L5:1176.45 | ||
北斗 | B1(B1I):1561.089 B1(B1C):1575.42 | |
B2(B2b、B2I):1207.14 B2(B2a):1176.45 | ||
B3(B3I):1268.52 | ||
格洛纳斯(GLONASS) | L1:1575.42 | 与GPS频段相同 |
L2:1227.60 | ||
L3:1176.45 | ||
伽利略(Galileo) | E1:1575.42 | E1与L1相同,E5a与L3相同 |
E5a:1176.45 | ||
E5b:1207.14 | ||
E6:1278.75 |
大多数场景下,多个组合系统输出的定位精度是优于单个系统的。这也与各个厂商的算法有关,融合多个组合系统卫星输出定位,处理所接收到的卫星数据增多,存在的故障星(信号受遮挡、折射、反射、干扰等影响)增多,需要多轮剔除故障星,如果系统资源不足,要求输出定位时间很短,故障星参与了解算位置,那么组合定位可能稍差于单系统定位。北斗卫星在国内的覆盖率远远超过GPS、格洛纳斯和伽利略卫星,单北斗卫星系统也可以满足国内基本定位需求。
三、定位环境的影响
GNSS定位依赖于GNSS信号的接收,环境对信号的接收影响相当大。典型的场景有:
1.长隧道、地下车库全遮挡。一般GNSS无法接收到信号,无法有效定位,需要借助惯导才能辅助定位。通过基站或WIFI定位,偏差太大。
2.城市峡谷或湖泊水面(多路径影响)。在城市峡谷中,可以接收到信号,但遮挡非常严重,一些仰角比较小的卫星将无法参与定位,另外高楼大厦很多是玻璃,有些信号会反射/折射/多路径效应而产生干扰,一般单点定位精度比较差,误差达到50-150m,一些定位能力稍弱的设备误差甚至达到200-300m。湖泊水面主要考虑是信号反射、折射、多路径效应(水面反射导致通过多条路径到达接收器),对GNSS信号产生干扰。
3.高架、树荫遮挡(半边天或2/3天遮挡)。主要考虑信号有些遮挡,定位误差大部分在10m-15m。
4.高速路、快速路等开阔路段。信号没有遮挡,定位误差大部分是10m内,也有些设备定位误差可做到2-5m,有些厂商的测试数据甚至做到2m内的。
一般给测试报告时,测试条件可分为:
1.静态测试与动态路试。
2.不同测试场景,城市峡谷严重遮挡、高架树荫半遮挡(也叫half of open sky)、高速路快速路无遮挡(也叫open sky)等
3.使用的卫星系统,北斗、GPS、伽利略、格洛纳斯等
测试数据一般采集大量数据,处理成CEP50 、CEP68 (1sigma)、CEP95(2sigma)、 CEP98(3sigma)的圆概率误差指标数据,也有处理成RMS均方根指标数据。
城市峡谷环境:
水平精度(m) | 高程精度(m) | |||||
RMS | CEP95 | 最大值 | RMS | CEP95 | 最大值 | |
全系统 | 8.123 | 9.568 | 11.044 | 11.226 | 13.568 | 17.689 |
单 BDS | 9.516 | 10.265 | 11.568 | 11.897 | 13.986 | 18.156 |
有效定位,一般对信噪比、卫星数、仰角、DOP值有要求
信噪比>25 (25-35)
卫星数>3 (3-5)
卫星仰角>5°(5°-10°)
DOP值<4
四、首次启动定位耗时(TTFF:time to first fix)
一般是在空旷环境下测试TTFF,在其他环境测试不太可控,因为同类型测试场景(例如城市峡谷)其具体的遮挡不一样、测试时间不一样卫星轨迹就不一样。一般可以分为冷启动/温启动/热启动。
冷启动(Cold Start): 在冷启动中,接收器从完全关闭状态开始。接收器需要重新获取卫星信号并对其进行跟踪,以确定接收器的位置、速度和时间。冷启动通常需要最长的时间,因为接收器需要对卫星信号进行搜索和跟踪,并且需要解算一些起始参数。有些GNSS芯片厂商认为冷启动的表现是flash没有数据、没有历书(粗/细星历都没有。粗星历是历书,历书可以预测30天,一般没什么作用。细星历是广播星历,细星历可以用于定位)、没有时间(精确与概率时间都没有,概率时间几分钟内、精确时间需要1s内)、距离上一次关/待机超过4小时(实际上会远超4小时,达到一两周才算冷启动)、没有概略位置或设备位置误差有1000公里。一般耗时需要30s-45s
温启动(Warm Start): 在温启动中,接收器已经在最近的过程中获得了一些卫星信号,并且保存了一些状态信息。这可能是由于接收器最近关闭了一段时间,但是它仍然保持着一些卫星信号的跟踪。温启动通常比冷启动快,因为接收器可以使用已知的卫星信息和状态信息来加速初始化过程。一般距离上一次关/待机2-4小时(实际上3天内都算温启动)、设备位移100-1000公里,可以简单理解为没有时间、没有概略位置。非冷和热启动的,都划分为温启动。一般耗时需要15s-25s
热启动(Hot Start): 在热启动中,接收器已经处于活动状态,并且保持了最近的卫星信号跟踪状态。这可能是因为接收器刚刚关闭了一个短暂的时间,并且仍然保持了对卫星信号的跟踪。热启动是初始化过程中最快的,因为接收器可以直接使用保存的卫星信息和状态信息,而不需要重新获取和跟踪卫星信号。一般关/待机2小时内星历有效(广播星历仍是有效)、有时间(GNSS模块有RTC时间)、设备位移少于100公里。一般3s-5s内
为了加速首次定位,一般可以使用AGNSS技术,通过网络从服务器获取星历,将星历文件注入到GNSS模块,加速GNSS锁定上空周围运行的卫星。这是利用网络传输完整星历数据比卫星信号传输要快的原理。一般可分为实时星历和离线星历。实时星历一般有效期是2-4小时,离线星历又称为预测星历,可以做到3-7天。星历数据也是区分卫星系统的,有GPS、北斗、格洛纳斯、伽利略等各自使用的星历不相同,实时星历一般是几KB,例如BD+GPS的实时星历大概是8KB,离线星历要比实时星历大得多,具体要看可以预测多少天。一般预测星历,距离预测起始点时间越长,加速效果越弱。一般3天内的预测星历可以媲美实时星历。一般注入星历后,冷启动/温启动首次定位时间<15s,甚至一些厂商测试数据可达5s-10s。
注入AGNSS数据,也是有要求,一般要求时间要精确,注入UTC时间误差在3-10s,注入位置一般是几公里内。位置可以不用注入,类似通过记忆定位、WIFI定位、移动基站定位获取的经纬度注入GNSS模块,加速缩短首次定位时间并不大,最多1-2s。
一般在无效定位连续1小时,会注入一次实时星历。至于离线星历,比较复杂,每24小时或48小时,需要下载一次离线星历,然后根据适合策略注入星历(比如连续定无效定位1小时、首次开机/唤醒设备时注入等等)
五、高精度定位
主流的GNSS高精度定位技术有地基差分(RTK OSR差分数据)、星基差分(PPP SSR差分数据)和地基+星基融合差分(PPP-RTK或PPK),还有基于机器学习的高精度算法。提供RTK服务的厂商有千寻、六分、中国移动等,其中千寻做的最早、覆盖率也最高。
一般精度号称是厘米级,不过不同场景下可达到的精度不同,一般输出NMEA数据频率典型值是10Hz,也有20Hz、50Hz,甚至100Hz的(20Hz、50Hz、100Hz比较少用,成本比较高)。
开阔路段:水平精度可达0.1m,高程精度可达0.15m,固定率99%
半遮挡路段:水平精度可达0.2-0.3m,高程精度可达0.3-0.45m,固定率80%
严重遮挡或干扰路段:水平精度可达0.4-0.5m,高程精度可达0.5-0.7m,固定率35%
观测域(OSR)校正:
传统GNSS校正服务供应商提供,用户需要将其大致位置发送给服务提供商,服务商通过参考站网络计算用户所处位置的预期观测误差,然后将这些信息无线传输给用户。
OSR被应用于实时差分定位(RTK)和网络RTK(NRTK)中,当用户与最近的参考站距离在约30公里以内时,OSR服务的精度能达到厘米级甚至毫米级,但基于OSR的方法需要用户发送大致位置信息给参考站,这就要求用户与校正服务提供商之间能实现高带宽的双向通信并且参考站和用户处理的是相同的信号,如果使用人数众多,移动通信网络几乎很难保持稳定的通信水平,这使得它们难以扩展服务规模,来服务于大众市场应用。
状态域(SSR)校正:
SSR校正服务是新型企业和较大的传统提供商提供的最新一代GNSS校正服务,技术路线是使用参考站网络接收到的GNSS数据进行状态空间的物理建模,模拟整个地区的误差,通过建模可以描述任何给定时间的状态空间模型的参数然后发送给建模区域中的用户。基于SSR的方法通过向所有用户广播整个服务区域的单个校正数据流来提供校正服务,它可以在相对较低的参考站密度(150-250公里)内提供可靠服务,同时单通道的通信方式使得SSR校正服务可以同时服务无限量的用户,使其成为大众市场应用(例如高辅助驾驶)的唯一可行方法。
六、组合惯导定位
IMU作为组合导航的核心器件,可以提供更高频率的高精信号(一般可达200Hz),在GNSS信号无效或者更新间隔内(GNSS信号频率为10Hz),可以用来进行高精度的航位推算。
IMU分为陀螺仪和加速度计两部分,陀螺仪输出车辆的横滚、俯仰和航向角,加速度计输出三个方向的加速度。一般与安装位置有关,包括臂杆位置、安装方。另外,在车载领域,还需要输入轮速、档位等信息给到惯导模块,提高定位精度。
习惯上,大家可能更习惯用算法指标来衡量IMU,即在隧道等GNSS信号完全丢失的情况下,车辆行驶1000米后,测量值与真值的偏差。行业较为普遍指标为千分之一到千分之五(1sigma)左右。
引申其他组合定位情况:
七、基站定位
从协议上,3GPP是有基站定位协议部分。原理上是,模组终端搜到周围基站小区信息,拿到位置信息,根据信号强度标定得到大概距离,通过三角定位法得出模组终端位置。
一般精度是在500米内,首次定位时间取决于搜网速度和解算速度,正常是几秒钟。小区越密集,信息量越多,获取的位置会越精确。
国内有两种方案:
(1)解算位置在终端侧。模组终端直接可以获取到基站位置信息,直接解算出位置,这需要终端与运营商都支持。国内运营商一般不免费开放获取基站位置服务,需要收费,或者不会直接与终端共享位置信息。一些高通终端会支持。
(2)解算位置在服务器侧。有高德、百度服务器会提供基站定位服务,把周围基站小区信息搜集发给服务器,服务器上有存储基站位置等数据,服务器根据模组终端的小区信息解算完成后,返回位置给模组终端,也是收费的。手机终端大多数是用这种服务。此时首次定位时间需要考虑与服务器网络交互的耗时了。
八、WIFI定位
原理上与基站定位相似,一般解算位置在服务器侧,高德、百度服务器会提供WIFI定位服务,把周围WIFI信息搜集后发给服务器,服务器上有存储WIFI的位置等信息,服务器根据模组终端的WIFI信息解算完成后,返回位置给模组终端,也是收费的。精度一般比基站定位要好,因为WIFI本身可覆盖范围比基站要小很多,精度最好可以做到30-50米,较差时也是几百米。