什么是GNSS
GNSS的全称是全球导航卫星系统(Global Navigation Satellite System).
它是泛指所有的卫星导航系统,包括全球的、区域的和增强的,如美国的GPS、俄罗斯的Glonass、欧洲的Galileo、中国的北斗卫星导航系统,以及相关的增强系统,如美国的WAAS(广域增强系统)、欧洲的EGNOS(欧洲静地导航重叠系统)和日本的MSAS(多功能运输卫星增强系统)等,还涵盖在建和以后要建设的其他卫星导航系统。
image.png
三边测量定位算法(Trilateration)
image.png
Trilateration(三边测量)是一种常用的定位算法:
已知三点位置 (x1, y1), (x2, y2), (x3, y3) 已知未知点 (x0, y0) 到三点距离 d1, d2, d3 以 d1, d2, d3 为半径作三个圆,根据毕达哥拉斯定理,得出交点即未知点的位置计算公式:
image.png
这样就可以算出来位置点的坐标.
在2维平面,一个固定点用已知的半径长确定一个圆,两个固定点用已知的半径确定两个点,三个固定点可以确定一个点。这个原理映射到3维,两个球相交确定一个圆,三个球相交确定两个点。远离地球的点舍弃,另一个点就是你的位置了。
但是实际上真正应用比这个复杂,首先就要想,原理上三颗卫星可以解决的问题问什么一定要4颗。因为前面的简单解释是已知卫星和接受机/使用GPS 的人)的距离。在实际应用中这距离是不知道的,这个距离需要去计算。就是常说的伪距(pseudorange)。
卫星定位的组成
卫星是有三个成分组成的分别是空间部分,控制部分和用户部分。
用户部分
image.png
只要能使用卫星定位的仪器都是用户部分,比如专业接收机,手机,智能手表等等能收到GNSS信号的都可以。
空间部分
image.png
最直接的就是天上的卫星了。这些卫星是在中轨道上运行,大概有20200km那么高。平均是6个平面,一个平面上有四个点,每个点上至少一个卫星,也就是说也许有多个。之前是是24颗卫星, 这种安排基本上全球大部分地区可以看到至少4颗卫星。
控制部分
image.png
这个分为三个,1个主要控制站,1个备用控制站,11个地面的天线,16个地面的监测站。主要用于跟踪,监测,接收和传输一些数据和命令。监测站的主要功能是当卫星从头顶飞过时,收集数据(载波和伪距)然后穿给控制站。
GPS
GPS是70年代规划,80年代实施,90年代运营,耗资300亿美元,仅次于阿波罗登月计划和航天飞机计划的美国第三大航天工程。其主要目的是为陆、海、空三大领域提供实时、 全天候和全球性的导航服务,并用于情报收集、核爆监测和应急通讯等一些军事目的。其次,也为民用、商用提供导航、定位、测速和授时等服务。1994年3月,全球覆盖率高达98%的24颗GPS卫星星座己布设完成。
数据格式
GPS 上电后,每隔一定的时间就会返回一定格式的数据,数据格式为:
代码语言:javascript复制$信息类型,x,x,x,x,x,x,x,x,x,x,x,x,x
每行开头的字符都是'$',接着是信息类型,后面是数据,以逗号分隔开。
GPS信息类型:
类型 | 解释 |
---|---|
GPGSV | 可见卫星信息 |
GPGLL | 地理定位信息 |
GPRMC | 推荐最小定位信息 |
GPVTG | 地面速度信息 |
GPGGA | GPS定位信息 |
GPGSA | 当前卫星信息 |
GPGSV 可视卫星状态
标准格式:
代码语言:javascript复制$GPGSV,(1),(2),(3),(4),(5),(6),(7),…(4),(5),(6),(7)*hh(CR)(LF)
含义为:
- (1)总的GSV语句电文数;2;
- (2)当前GSV语句号:1;
- (3)可视卫星总数:08;
- (4)PRN码(伪随机噪声码)也可以认为是卫星编号
- (5)仰角(00~90度):33度;
- (6)方位角(000~359度):240度;
- (7)信噪比(00~99dB):45dB(后面依次为第10,16,17号卫星的信息); *总和校验域hh 总和校验数:78; (CR)(LF)回车,换行。 注:每条语句最多包括四颗卫星的信息,每颗卫星的信息有四个数据项,即: (4)-卫星号,(5)-仰角,(6)-方位角,(7)-信噪比。
GPRMC 最小定位信息
标准格式:
代码语言:javascript复制$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
含义为:
- <1> UTC 时间,hhmmss(时分秒)格式
- <2> 定位状态,A=有效定位,V=无效定位
- <3>纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
- <4> 纬度半球N(北半球)或S(南半球)
- <5>经度dddmm.mmmm(度分)格式(前面的0也将被传输)
- <6> 经度半球E(东经)或W(西经)
- <7>地面速率(000.0~999.9节,前面的0也将被传输)
- <8>地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)
- <9> UTC 日期,ddmmyy(日月年)格式
- <10>磁偏角(000.0~180.0度,前面的0也将被传输)
- <11> 磁偏角方向,E(东)或W(西)
- <12>模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
GPGGA GPS定位数据
标准格式:
代码语言:javascript复制$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR><LF>
含义为:
- <1> UTC 时间,格式为hhmmss.sss;
- <2> 纬度,格式为ddmm.mmmm(第一位是零也将传送);
- <3> 纬度半球,N 或S(北纬或南纬)
- <4> 经度,格式为dddmm.mmmm(第一位零也将传送);
- <5> 经度半球,E 或W(东经或西经)
- <6> 定位质量指示,0=定位无效,1=定位有效;
- <7>使用卫星数量,从00到12(第一个零也将传送)
- <8>水平精确度,0.5到99.9
- <9>天线离海平面的高度,-9999.9到9999.9米M指单位米
- <10>大地水准面高度,-9999.9到9999.9米M指单位米
- <11>差分GPS数据期限(RTCMSC-104),最后设立RTCM传送的秒数量
- <12>差分参考基站标号,从0000到1023(首位0也将传送)。
GPVTG 地面速度信息
标准格式:
代码语言:javascript复制$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh
含义为:
- <1> 以正北为参考基准的地面航向(000~359度,前面的0也将被传输)
- <2> 以磁北为参考基准的地面航向(000~359度,前面的0也将被传输)
- <3> 地面速率(000.0~999.9节,前面的0也将被传输)
- <4> 地面速率(0000.0~1851.8公里/小时,前面的0也将被传输)
- <5> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效
GPGSA 当前卫星信息
标准格式:
代码语言:javascript复制$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A
北斗定位
参考
Trilateration三边测量定位算法 GPS数据包格式 数据解析