NMEA是National Marine Electronics Association(美国国家海事电子协会)的缩写。该协会是一家专门从事海洋电子设备方面研究的机构,它制定了关于GPS(全球定位系统)电子设备之间的通信接口和协议的NMEA标准。
NMEA-0183协议是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。
2023年北斗三号系统备份卫星已经发射,至此北斗二号三号系统已经完全建成,2025年大陆境内将全面调整为北斗优先。之前不管高通平台,以及其他的一些国内生产GNSS芯片的厂商,一般的策略都是GPS优先,随后加上北斗。但是2025年要全面推进北斗优先策略。
GGA语句是关于
主要数据;UTC时分秒,经纬度,GPS状态,卫星数量,高程,差分延时,基站号
第七个参数,0表示无效解,1表示单点定位,2表示伪距差分,4表示固定解,5表示浮动解
$GNGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)
1 UTC 时间,格式为 hhmmss.ss;
2 纬度,格式为 ddmm.mmmmm(度分格式);
3 纬度半球,N 或 S(北纬或南纬);
4 经度,格式为 dddmm.mmmmm(度分格式);
5 经度半球,E 或 W(东经或西经);
6 GPS 状态,0=未定位,1=非差分定位,2=差分定位;
7 正在使用的用于定位的卫星数量(00~12)
8 HDOP 水平精确度因子(0.5~99.9)
9 海拔高度(-9999.9 到 9999.9 米)
10 大地水准面高度(-9999.9 到 9999.9 米)
11 差分时间(从最近一次接收到差分信号开始的秒数,非差分定位,此项为空)
12 差分参考基站标号(0000 到 1023,首位 0 也将传送,非差分定位,此项为空)
GSA语句是关于
定位模式(自动,手动定位,二维三维定位),
定位模式下,使用的卫星编号(最多12个),包括当前使用的卫星编号,信噪比,以及集合因素(DOP)
以及定位精度,HDOP水平精度因子,VDOP垂直精度因子,TDOP时间精度因子
精度因子
精度因子分等级99级,1-99级 精度因子40以上较差
1~2——理想——这是最高的信任级别,精度极高,信号比较好,卫星的几何分布都很好
2~3——极好——值得信任的级别,位置的测量相当精确,可以应用于绝大多数应用程序,但是有些非常敏感的应用程序就不行了
4~6——好——这是用来做商业应用的最低等级。位置的测量可以用来做线路导航建议。
超过6以上的,定位精度就很低了,不建议使用,而且还会存在位置漂移,静态抖动等多种问题。
GLL语句是关于地理位置信息
南北半球经纬度(度度分分.分分分分),定位UTC时间(时时分分秒秒.秒秒秒)
GSV语句是关于搜星状况的(语句总数,语句编号,总卫星数量,卫星编号,俯仰角,方位角,载噪比等),关于GSV语句,多说一句,小日本的导航系统(QZSS),会显示到GPS系统内,编号一般都会是在190+
$GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,…<4>,<5>,<6>,<7>*hh<CR><LF>
<1> GSV语句的总数
<2> 本句GSV的编号
<3> 可见卫星的总数(00~12,前面的0也将被传输)
<4> PRN码(伪随机噪声码)(01~32,前面的0也将被传输)
<5> 卫星仰角(00~90度,前面的0也将被传输)
<6> 卫星方位角(000~359度,前面的0也将被传输)
<7> 信噪比(00~99dB,没有跟踪到卫星时为空,前面的0也将被传输)
注:<4>,<5>,<6>,<7>信息将按照每颗卫星进行循环显示,每条GSV语句最多可以显示4颗卫星的信息。其他卫星信息将在下一序列的NMEA0183语句中输出。
RMC语句是关于定位状态,解析出来的状态第三位,A表示有效定位,V表示无效定位
主要数据,UTC时分秒年月日,速度航向,当前磁偏角和磁偏方向角 ,经纬度,速度,航向角
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
<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> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
VTG语句是关于 速度方面的
$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh<CR><LF>
$GPVTG,359.95,T,,M,15.15,N,28.0,K,A04
<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=数据无效)
关于VTG语句
就是说:(国内某GNSS芯片厂商)
车辆行驶起来以后也是空的,只有以真北为参考基准的地面航向,这个数据是有的,以磁北为参考基准的地面航向,这个数据是没有的。
以磁北为参考基准的地面航向,这个值是否输出主要是受速度和定速精度影响,如果速度比较慢或者定速精度不好,速度会被认为不可靠,然后就不会输出,
在底层算法里面会进行过滤直接输出空值,防止有错误的输出。
这个主要是在算法那边判断的,定速精度是主要变量之一,定速精度自身又可能和信号质量有关,包括CN0、卫星分布状态、多径等等。
这个航向值的输出,有两个判断标准:一种可能速度很小,算法认为航向意义不大可以不输出;另一种是因为定速精度差(受CN0的影响,但不是CN0控制),就不会把结果输出
GST语句是关于
当前时间和卫星接收器的状态,输出定位标准差信息
$GNGST,031801.00,2.0,,,,3.0,4.2,1.8*62
UTC时间,导航过程量程输入标准偏差的RMS值,误差椭圆半长轴标准偏差,误差椭圆半短轴标准偏差,误差椭圆的半长轴方向(正北度),纬度误差标准差,经度误差标准差,高度误差标准偏差
ZDA语句是关于时间与日期的信息
NMEA GNSS定位状态
XXGGA:GPS状态(第七位数据:0=未定位,1=单点定位,2=伪距/SBAS,3=无效PPS,4=RTK固定,5=RTK浮动,6=正在估算,7=手动启动基准站,8=RTK宽巷解,9=伪距)
XXGSA:定位模式,A=自动手动2D/3D,M=手动2D/3D
XXGSA:定位类型,1=未定位,2=2D定位,3=3D定位
XXRMC:定位状态,A=有效定位,V=无效定位