2、定位原理基础:GNSS定位三要素(卫星、接收机、时间),伪距测量与定位解算

聊定位,绕不开一个核心问题:你到底是怎么知道自己在哪的?

很多人觉得GNSS定位很玄乎,好像手机一开,位置就出来了。其实拆开来看,原理并不复杂。我个人习惯把GNSS定位比作一个「三脚架」——三条腿分别是卫星、接收机和时间。缺了任何一条,这个架子都立不起来。

2.1 定位三要素:卫星、接收机、时间

卫星,说白了就是天上的「灯塔」。它们不停地在广播自己的位置和当前的时间。你想想看,如果天上只有一颗卫星,你只能知道自己离它有多远,但不知道具体在哪个方向。所以至少需要三颗卫星,才能通过「三角测量」的方式确定你的二维位置(经度、纬度)。

但这里有个坑——接收机的时间通常不准。卫星上用的是原子钟,精度极高,但咱们手里的接收机(比如手机里的GPS芯片)用的是石英钟,便宜但容易漂移。所以实际上需要第四颗卫星来修正时间误差。这就是为什么我们常说「至少需要4颗卫星才能定位」。

核心记忆点: 3颗卫星定位置(二维),4颗卫星定位置+时间(三维)。

接收机,就是咱们手里的设备。它的任务很简单:接收卫星信号,测量距离,然后解算位置。我在项目中遇到过不少新手,以为接收机只是「听」信号,其实它还要做大量的计算——比如捕获、跟踪、解调、解算。每一步都可能引入误差。

时间,这是最容易忽略的一环。GNSS系统本质上是一个「时间同步系统」。卫星和接收机之间的时间差,直接决定了测距的精度。光速是30万公里/秒,如果时间误差只有1微秒(百万分之一秒),距离误差就是300米。嗯,这里要注意:时间同步是定位精度的基石。

2.2 伪距测量:我们是怎么测距离的?

伪距测量,名字听起来挺唬人,其实原理很简单。

卫星发射一个信号,信号里带着「我是在什么时间发出的」。接收机收到这个信号后,记录下「我是在什么时间收到的」。两个时间一减,乘以光速,就是卫星到接收机的距离。

但问题来了——接收机的时间不准。所以这个「距离」并不是真实距离,而是带有误差的「伪距」。伪距的数学表达式是这样的:

ρ = r + c * (δt_u - δt_s) + I + T + ε

其中:

  • ρ:伪距测量值(我们实际测到的)
  • r:卫星到接收机的真实几何距离
  • c:光速
  • δt_u:接收机时钟误差(这是我们要解算的)
  • δt_s:卫星时钟误差(可以通过导航电文修正)
  • I:电离层延迟误差
  • T:对流层延迟误差
  • ε:其他噪声和误差
我的经验: 伪距测量中,最大的误差来源往往是电离层延迟。白天和夜晚的误差差异很大,我曾经在赤道附近测试时,电离层延迟导致伪距误差超过50米。所以双频接收机(比如L1+L5)能有效消除这个误差。

2.3 定位解算:从伪距到坐标

有了伪距测量值,接下来就是解算位置了。这个过程本质上是在解一个非线性方程组。

假设我们有n颗卫星,每颗卫星的位置是已知的(通过导航电文获得),那么我们可以列出n个方程:

ρ_i = sqrt((x - x_i)² + (y - y_i)² + (z - z_i)²) + c * δt_u

其中:

  • (x, y, z):接收机的未知位置(我们要解的)
  • (x_i, y_i, z_i):第i颗卫星的已知位置
  • ρ_i:第i颗卫星的伪距测量值
  • δt_u:接收机时钟误差(也是未知的)

你看,这里有4个未知数(x, y, z, δt_u),所以至少需要4个方程,也就是4颗卫星。

解这个方程组,最常用的方法是最小二乘法。具体步骤是:

  1. 先猜一个初始位置(比如上次定位的结果)
  2. 计算预测的伪距值
  3. 计算预测值与实际测量值的差值(残差)
  4. 用残差修正初始位置
  5. 重复迭代,直到残差足够小
注意: 如果初始位置猜得太离谱,迭代可能不收敛。我曾经在室内测试时,接收机捕获到的是多径反射信号,导致初始位置偏差巨大,解算直接发散。所以良好的初始估计很重要。

2.4 知识体系图:定位解算的核心逻辑

下面这张图,是我自己总结的定位解算流程。你看一遍,基本就能理解整个链条了。

GNSS定位解算核心流程 卫星1 卫星2 卫星3 卫星4 伪距测量:ρ = r + c·(δt_u - δt_s) + I + T + ε 定位解算:最小二乘法迭代求解 (x, y, z, δt_u) 输出:经度、纬度、高度、时间

这张图把整个定位解算的链条串起来了。从卫星发射信号,到接收机测量伪距,再到解算位置和时间。每一步都有误差源,每一步也都有对应的修正方法。

2.5 避坑指南:我踩过的几个坑

  • 伪距测量中的多径效应:我曾经在城市峡谷测试,信号被高楼反射,导致伪距测量值偏大,定位结果直接漂移了上百米。后来加了多径检测算法,才把问题压下去。
  • 卫星几何分布(DOP值):卫星分布越分散,定位精度越高。如果卫星都挤在天上同一个方向,即使有8颗星,定位精度也可能很差。我建议在选星时,优先考虑GDOP值小的组合。
  • 接收机时钟的初始偏差:冷启动时,接收机时钟可能偏差很大。如果直接用这个偏差去解算,迭代可能不收敛。我的做法是先做一次「粗同步」,把时钟偏差拉到毫秒级以内,再开始精解算。
一个小技巧: 如果你在做嵌入式开发,接收机的晶振温漂是个大问题。温度变化10度,晶振频率可能漂移几个ppm,换算成时间误差就是几十微秒。我习惯在接收机里加一个温度补偿算法,效果很明显。

好了,这一章的内容就到这里。定位三要素和伪距测量是GNSS定位的根基,理解透了,后面讲误差源和漂移诊断就轻松多了。

可可精品资料库