2. GNSS定位原理:卫星定位基础、伪距测量、载波相位测量、定位解算流程

各位好,我是老张。今天咱们聊聊GNSS定位的核心原理。说实话,很多做定位开发的朋友,代码写得溜,但一碰到漂移问题就抓瞎。为什么?因为底层原理没吃透。我个人习惯是,遇到问题先回到原理层去思考,往往能找到根因。

2.1 卫星定位基础:三边测量法

GNSS定位的本质是什么?说白了,就是解一个几何问题。你想想看,如果我们知道三颗卫星的位置,又知道它们到接收机的距离,那接收机的位置不就确定了吗?这就是三边测量法。

但这里有个坑——我们测得的距离不是真实距离,而是伪距。为什么叫伪距?因为信号从卫星到接收机,中间有各种误差:卫星钟差、接收机钟差、电离层延迟、对流层延迟……这些都会让测量值“掺水”。

核心公式:

伪距 ρ = 真实距离 r + 光速 × (接收机钟差 - 卫星钟差) + 电离层延迟 + 对流层延迟 + 多路径误差 + 噪声

你看,一个简单的距离测量,背后藏着这么多“猫腻”。

我在项目中遇到过一件事:某次在楼宇密集区测试,定位结果忽东忽西。排查了半天,发现是多路径效应在作祟。信号从高楼反射过来,伪距一下子多了几十米。嗯,这就是典型的“看得见摸不着”的问题。

2.2 伪距测量:最基础的定位手段

伪距测量,是GNSS定位的“老黄牛”。它通过测量信号从卫星到接收机的传播时间,乘以光速,得到距离。原理简单,但精度有限——一般只能做到米级。

为什么精度上不去?我给大家算笔账:

  • 卫星钟差:约几纳秒到几十纳秒,对应距离误差几米到十几米
  • 接收机钟差:更夸张,普通晶振一天能漂几微秒
  • 电离层延迟:白天强、晚上弱,误差几米到几十米
  • 多路径效应:严重时能到上百米

这么多误差叠加在一起,伪距定位能到米级精度,其实已经不错了。但如果你做的是车道级导航、无人机精准降落,那伪距就远远不够用了。

我的经验:伪距定位适合做粗定位、冷启动时的初始位置估计。一旦进入稳定跟踪状态,我建议切换到载波相位测量,精度能提升两个数量级。

2.3 载波相位测量:厘米级的秘密武器

载波相位测量,才是高精度定位的“王牌”。它不测信号传播时间,而是测载波信号的相位变化。L1载波频率1575.42MHz,波长约19厘米。你想想看,如果能测到1%的相位变化,那就是毫米级的精度!

但问题来了——载波相位测量有个“整周模糊度”问题。说白了,我们只能测到不足一个波长的相位值,但不知道信号走了多少个整周。这就像你只知道钟表指针的位置,却不知道现在是几点几分。

注意:整周模糊度的解算,是高精度定位的核心难点。我见过不少团队,算法跑得飞快,但模糊度就是解不对,定位结果直接偏了几十厘米。我曾经花了两周时间,才把RTK的模糊度固定率从80%提升到95%。

载波相位测量的另一个坑是“周跳”。当信号短暂失锁再恢复时,整周计数会跳变。如果不处理,定位结果会像“过山车”一样剧烈抖动。

我给大家一个对比表,一目了然:

测量方式 原理 典型精度 主要问题
伪距测量 测信号传播时间 米级(1-10米) 误差源多,精度受限
载波相位测量 测载波相位变化 厘米级(1-10厘米) 整周模糊度、周跳

2.4 定位解算流程:从原始观测到位置坐标

好了,有了伪距和载波相位观测值,怎么算出位置?我给大家画个流程图,一看就明白。

GNSS定位解算流程 步骤1:原始观测 步骤2:误差修正 步骤3:方程构建 步骤4:最小二乘/卡尔曼滤波 步骤5:位置输出 伪距、载波相位 电离层、对流层、钟差 4颗卫星以上 迭代求解 经纬高、速度、时间

这个流程看着简单,但每一步都有讲究。我重点说说步骤4——解算方法。

伪距定位,一般用最小二乘法。说白了,就是找一组位置参数,让所有卫星的伪距残差平方和最小。但最小二乘法有个缺点:它对异常值很敏感。如果某颗卫星的伪距被多路径污染了,解算结果会跟着跑偏。

我个人的做法是:先用最小二乘法做粗解,然后用残差检验剔除异常卫星,再重新解算。这样能有效抑制漂移。

伪距定位解算的数学本质:

设接收机位置为 (x, y, z),接收机钟差为 dt,则对第 i 颗卫星有:

ρ_i = sqrt((x_i - x)² + (y_i - y)² + (z_i - z)²) + c × dt

这是一个非线性方程,需要线性化后迭代求解。一般3-5次迭代就能收敛。

载波相位解算就复杂多了。除了位置和钟差,还要估计整周模糊度。常用的方法有LAMBDA算法,通过整数最小二乘搜索,找到最优的模糊度组合。我当年第一次实现LAMBDA时,调试了整整一周才跑通。嗯,那种从“完全不对”到“终于对了”的感觉,做技术的都懂。

避坑指南:我曾经在解算时忽略了卫星仰角加权。低仰角卫星的信号穿过大气层路径更长,误差更大。后来我加了仰角加权函数,定位精度提升了约20%。这个细节,很多教科书上不会讲,但实际工程中非常关键。

2.5 小结:原理是解决漂移的“根”

好了,这一章的内容就这些。从三边测量法,到伪距和载波相位,再到解算流程,我们一步步把GNSS定位的“底牌”翻了个遍。

你可能会问:知道这些原理,对解决漂移问题有什么帮助?我告诉你,帮助太大了。当你看到定位结果在漂,你能立刻判断:是伪距误差太大?还是载波相位发生了周跳?还是解算时卫星几何构型太差?只有找到根因,才能对症下药。

下一章,我们会深入分析漂移的具体表现和成因。但在此之前,我建议你把这一章的原理吃透。原理通了,后面的问题就迎刃而解了。