德思特干货 | 从0到1搞懂定位导航: GNSS 定位原理 + NMEA 报文分析

你有没有这样的经历?打开手机地图,蓝色圆点稳稳地落在你所在的街道上;坐上自动驾驶出租车,车辆精准地在路口前变道、转弯;在野外徒步时,手表的轨迹记录下你走过的每一条山路。

这些场景背后,藏着一个我们每天都在用、却很少真正理解的技术——GNSS定位。

我们知道它靠卫星工作,知道“卫星越多定位越准”,但当定位出现漂移时,我们只能归咎于“信号不好”。究竟什么是“信号好”?为什么同样在开阔地,有些设备定位快,有些慢?为什么同一地点,不同的地图软件显示的经纬度不一样?接收机输出的那一串以$开头的NMEA报文,到底在说什么?

本文将深入剖析GNSS定位的数学原理、四大全球系统的技术特点、常用坐标系的转换逻辑,并逐句拆解NMEA协议的核心字段。

GNSS定位的核心原理:从“听雾号”到“测卫星”

GNSS定位的强大能力,根植于其简洁而精妙的数学内核。其核心思想可以追溯到最朴素的导航场景:已知多个信标的位置,测量自己到每个信标的距离,即可确定自己的位置。

在二维海面场景中,海员通过记录雾号鸣响到听见声音的时间差,乘以声速得到距离,从而判断自己位于以雾号为圆心的圆上。两个雾号给出两个交点,三个雾号即可唯一确定位置。

二维定位示意图

将这一原理扩展到三维空间,卫星取代了雾号,光速取代了声速。接收机测量信号从卫星到自己的传播时间,乘以光速得到距离,从而位于以卫星为球心的球面上。三颗卫星给出两个可能的交点(其中一个通常在地球之外),四颗卫星即可唯一确定位置。

两颗卫星测距
三颗卫星定位有两个可能的位置

这一纯数学过程带来了三个核心挑战与突破:

  • 时间同步的精度要求:光速极快,1微秒的时间误差对应300米的距离误差。卫星搭载高精度原子钟,但接收机无法配备同等精度的时钟。因此,接收机钟差必须作为第四个未知数参与解算——这正是为什么至少需要4颗卫星才能定位的根本原因。
  • 空间基准的统一性:卫星的位置是基于WGS-84坐标系发布的,接收机必须在这个相同的框架下解算自己的坐标。如果坐标系不统一,再精确的距离测量也会导致位置偏差。
  • 误差源的建模与补偿:信号穿越电离层和对流层时速度会变化,近地面可能发生多径反射,卫星轨道和时钟本身也存在微小偏差。这些都需要通过数学模型和差分技术进行修正。

全球导航版图:四大系统与坐标系的选择

理解GNSS定位,不能绕过对全球卫星系统本身的认知。目前,全球有四大成熟运行的GNSS系统,各有技术特点与优势场景:

四大系统覆盖特性对比图

除了系统本身,坐标系是另一个容易被忽视但至关重要的概念。地球是不规则的球体,GNSS使用的是WGS-84椭球模型定义的经纬度。而国内常用的地图(如高德、百度)出于国家安全考虑,对坐标进行了非线性偏移,形成了GCJ-02(火星坐标系)和BD-09(百度坐标系)。

理解这一差异,对于将GNSS接收机输出与地图显示、高精地图匹配、多传感器融合等应用至关重要。椭球高、正高、大地水准面——这三种“高度”的数学转换关系,也是高精度定位中必须处理的基础问题。

德思特分享 | GNSS 仿真测试之三种常用坐标系与转换

从原理到数据:

NMEA报文解析实战

GNSS接收机解算出位置后,如何将结果输出给自动驾驶域控制器、无人机飞控或测绘终端?NMEA协议是事实上的行业标准。

NMEA 0183协议以ASCII码形式传输,每帧报文以 $ 开头,后跟5位标识符(前2位为Talker ID,后3位为Message Type),数据字段用逗号分隔,以 * 加校验和结尾。

NMEA报文结构示意图

在实际应用中,最常见的几条语句包括:

NMEA报文常用语句

通过解析这些语句,开发者可以获取定位的原始数据、评估当前的定位质量、判断卫星分布状况,甚至反推接收机的算法行为。例如,通过GSV语句中的信噪比分布,可以初步判断是否受到多径干扰;通过GSA语句中的DOP值,可以量化当前卫星几何构型对定位精度的影响。

德思特干货 | 为什么所有 GNSS 厂商都认 NMEA ?这份报文解读手册工程师必藏

德思特GNSS模拟器GTS-P72

• 软件定义的GNSS模拟器

高性能GNSS模拟器具有灵活的软件定义平台和API,且支持所有的GNSS星座与波形,具有超高的精度,分辨率,以及动态性能,模拟迭代率可达1000 Hz,强大的软件定义实现通道数无限制。广泛应用于汽车HIL测试,导航芯片、消费电子、终端测试,航空航天模拟,以及干扰抵抗测试等领域。