全球卫星导航系统(GNSS)常用的NMEA-0183标准协议解析

全球卫星导航系统(GNSS)接收机常用的NMEA-0183标准协议语句。NMEA-0183是导航设备之间通用的数据通信标准格式。


1. GNRMC - 推荐最小定位信息

这是最核心、最常用的语句,包含了最基本、最关键的定位、时间和导航数据。

  • 格式示例$GNRMC,123519.00,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A

  • 关键字段(按顺序逗号分隔):

    1. UTC时间123519.00 -> 12:35:19.00

    2. 定位状态A -> 有效定位;V -> 无效警告

    3. 纬度4807.038 -> 48度07.038分

    4. 纬度半球N -> 北纬

    5. 经度01131.000 -> 11度31.000分

    6. 经度半球E -> 东经

    7. 地面速率022.4 -> 22.4节

    8. 地面航向084.4 -> 84.4度(真北)

    9. UTC日期230394 -> 1994年3月23日

    10. 磁偏角003.1 -> 3.1度

    11. 磁偏角方向W -> 西

    12. 模式指示 (新版本):A=自主定位,D=差分,E=估算,N=无效


2. GNGGA - GPS定位信息

提供详细的定位质量、高程和参与解算的卫星数等信息,是另一个核心语句。

  • 格式示例$GNGGA,123519.00,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47

  • 关键字段

    1. UTC时间

    2. 纬度

    3. 纬度半球

    4. 经度

    5. 经度半球

    6. 定位质量指示0=无效,1=GPS单点,2=差分,4=RTK固定解,5=RTK浮点解等。

    7. 正在使用的卫星数量08 -> 8颗卫星参与解算。

    8. 水平精度因子(HDOP)0.9 -> 数值越小,水平精度越高。

    9. 海拔高度545.4

    10. 大地水准面起伏46.9


3. GNGLL - 地理位置(经纬度)

纯粹输出地理位置和时间,没有速度、航向等信息。

  • 格式示例$GNGLL,4916.45,N,12311.12,W,225444.00,A,A*53

  • 关键字段

  1. 纬度

  2. 纬度半球

  3. 经度

  4. 经度半球

  5. UTC时间

  6. 定位状态:A -> 有效定位;V -> 无效警告

  7. 模式指示:A=自主定位,D=差分,E=估算,N=无效


4. GNGSA - 当前卫星的精度和活动卫星

输出参与解算的卫星PRN号 和关键的精度因子

  • 格式示例$GNGSA,A,3,01,02,03,04,05,06,07,08,09,10,11,12,1.0,1.0,1.0*30

  • 关键字段

    1. 模式M=手动,A=自动。

    2. 定位类型1=未定位,2=2D定位,3=3D定位。

    3. 卫星PRN号 :第3至14字段,列出最多12颗用于解算的卫星ID(例如,0132是GPS,3364是北斗等)。

    4. 位置精度因子(PDOP)

    5. 水平精度因子(HDOP)

    6. 垂直精度因子(VDOP)


5. GPGSV - GPS卫星状态信息

用于查看GPS卫星在天空中的分布状态,如方位角、仰角和信噪比。一条GSV语句最多包含4颗卫星的信息,可能需要多条语句才能输出所有可见卫星。

  • 格式示例$GPGSV,3,1,11,03,03,111,00,04,15,270,00,06,01,010,00,13,06,292,00*74

  • 关键字段

    1. 总GSV语句数

    2. 本句的序号

    3. 可见卫星总数

    4. 卫星PRN号

    5. 卫星仰角(0-90度)

    6. 卫星方位角(0-359度,真北)

    7. 信噪比(SNR):单位为dBHz,值越大信号越好,空则未跟踪。


6. BDGSV - 北斗卫星状态信息

GPGSV功能完全相同,但专门针对中国北斗卫星系统。格式完全一致,只是语句头标识了系统来源。

  • 格式示例$BDGSV,2,1,08,01,40,083,46,02,00,000,40,03,23,290,48,04,11,226,47*72

  • 注意:PRN号为北斗卫星的编号。


关键点总结与关系

语句头 系统来源 核心用途
GNRMC GNSS混合数据 核心导航数据(时间、位置、速度、航向)
GNGGA GNSS混合数据 核心定位质量数据(质量、卫星数、海拔、HDOP)
GNGLL GNSS混合数据 纯粹的经纬度和时间
GNGSA GNSS混合数据 参与解算的卫星列表与精度因子(DOP)
GPGSV 仅GPS GPS卫星的详细状态(方位、仰角、信噪比)
BDGSV 仅北斗 北斗卫星的详细状态(方位、仰角、信噪比)
  • 前缀含义

    • GP: 仅GPS系统数据。

    • BD/GB: 仅北斗系统数据。

    • GN多系统混合数据 。这是目前多模接收机最常用的输出方式。例如,GNRMC的数据可能来自GPS、北斗、GLONASS等多个系统的融合解算结果,精度和可靠性通常更高。

  • 使用场景

    • 获取基本位置、速度、时间:主要解析 GNRMC

    • 判断定位精度和质量:主要解析 GNGGAGNGSA

    • 进行卫星天空图绘制、分析信号强度:需要解析 GPGSVBDGSV

在实际编程解析时,通常以 $ 开头,以 * 后跟两位校验和结束。需要根据逗号分隔字段,并校验数据的完整性。

相关推荐
格林恩德高精度定位2 天前
厘米级定位如何成为无人机的“标配”?
无人机·gps·定位·rtk
爱睡觉的王宇昊6 天前
2025年中国高精度定位技术总结分析(上篇)
蓝牙定位·gps·uwb·高精度定位技术·雷达感知·定位原理
gihigo199817 天前
基于GPS星历文件的卫星位置计算详解
gps
jz_ddk23 天前
[学习] 卫星导航的码相位与载波相位计算
学习·算法·gps·gnss·北斗
jz_ddk23 天前
[学习] NCO原理与误差分析
fpga开发·gps·gnss·北斗
Evand J1 个月前
【MATLAB例程】GNSS高精度定位滤波的例程分享,使用维纳滤波+多频段加权融合,抗多径、延迟等带来的误差
开发语言·matlab·gnss·北斗·滤波·维纳滤波·bds
AndrewHZ1 个月前
【python与生活】从手机定位到车辆导航:GPS定位算法原理与Python实现
python·智能手机·生活·gps·定位算法·北斗卫星·车辆导航
云卓SKYDROID1 个月前
无人机GPS技术要点解析
无人机·gps·遥控器·高科技·云卓科技
DIY机器人工房1 个月前
解决方法:关于上传经纬度绑定到onenet可视化平台地图上位置偏移的问题
stm32·单片机·嵌入式硬件·gps·定位·diy机器人工房