3、GNSS基础:GPS原理、伪距测量、单点定位精度分析

各位同学,欢迎来到第三章。这一章我们聊聊GNSS,说白了就是全球导航卫星系统。你手机里那个定位功能,核心就是它。我刚开始做自动驾驶定位时,觉得GPS这东西太成熟了,没啥好学的。结果第一次路测就栽了跟头——车在高架桥下直接“漂移”到隔壁车道。嗯,从那以后我再也不敢小看GNSS了。

3.1 GPS定位原理:三球交会

GPS的原理其实不复杂。你想想看,如果我们知道一颗卫星的位置,又知道它到接收机的距离,那接收机一定在以卫星为球心、距离为半径的球面上。如果同时知道三颗卫星的距离,三个球面相交于一点,那就是你的位置。

这就是所谓的“三球交会”原理。但实际中,我们至少需要四颗卫星。为什么?因为接收机的时钟和卫星时钟不同步,存在一个钟差未知数。三个位置坐标加一个钟差,一共四个未知数,所以需要四颗卫星才能解算。

核心公式:

伪距观测方程:ρ = r + c·Δt + ε

其中ρ是伪距测量值,r是真实几何距离,c是光速,Δt是钟差,ε是其他误差项。

我在项目中遇到过一个问题:明明天空视野很好,卫星数量也够,定位精度却很差。后来排查发现,是卫星几何分布太差——所有卫星都挤在天顶附近。这就好比用三根几乎平行的棍子去支撑一个点,稍微有点误差就晃得厉害。

3.2 伪距测量:我们到底测了什么?

伪距测量,名字里带个“伪”字,说明它不是真正的距离。GPS卫星发射的是伪随机噪声码(C/A码),接收机通过比对本地复制的码和接收到的码的时间延迟,来算出信号传播时间,再乘以光速得到距离。

为什么叫“伪”呢?因为这里面有太多误差源了:

  • 卫星钟差:卫星上的原子钟也不是绝对精准的
  • 接收机钟差:你手机里的石英钟就更别提了
  • 电离层延迟:信号穿过电离层时速度会变
  • 对流层延迟:大气折射也会影响
  • 多路径效应:信号反射导致路径变长

避坑指南:

我曾经在隧道出口处做测试,定位突然跳了十几米。查了半天发现是信号刚从隧道出来时,多路径效应特别严重——周围建筑物的反射信号和直射信号混在一起,伪距测量值直接崩了。后来我们在算法里加了多路径检测,遇到这种情况直接降权处理。

伪距测量的精度一般在米级。C/A码的码片宽度约293米,理论上测距精度能达到码片宽度的1%左右,也就是3米左右。但实际中受各种误差影响,单点定位精度通常在5-10米。

3.3 单点定位精度分析

单点定位,就是只用一台接收机,不依赖任何差分改正信息。它的精度受两个主要因素影响:

  1. 测距误差:上面说的那些误差源的总和
  2. 几何精度因子(DOP):卫星空间分布的好坏

DOP值越小,定位精度越高。一般PDOP(位置精度因子)小于3算很好,3-6算一般,大于6就比较差了。我个人的习惯是,在路测前先看看卫星星历,如果PDOP超过5,我会换个时间再测。

DOP值 等级 定位精度(米)
< 3 优秀 2-5
3-6 良好 5-10
6-10 一般 10-20
> 10 > 20

单点定位的误差模型可以用下面这个公式估算:

σ_position = PDOP × σ_pseudo_range

其中:
σ_position:位置误差标准差
PDOP:位置精度因子
σ_pseudo_range:伪距测量误差标准差(约3-5米)

举个例子,如果PDOP=4,伪距误差3米,那位置误差就是12米。这个精度对于车道级定位来说远远不够——车道宽度才3.5米左右。所以自动驾驶里,单点GPS只能用来做粗略的全局定位,真正的高精度定位还得靠RTK或者组合导航。

注意:

单点定位在城市峡谷、隧道、高架桥下等场景会严重退化。我建议在做自动驾驶定位系统时,永远不要把GPS当作唯一的定位源。一定要和IMU、轮速计、视觉/激光雷达做融合,否则你会被各种“幽灵定位”搞疯的。

3.4 小结

这一章我们聊了GPS的基本原理——三球交会,伪距测量的概念和误差来源,以及单点定位的精度分析。说白了,单点GPS就是个“大概知道你在哪”的东西,精度在米级到十米级。对于自动驾驶来说,它只能提供初始化和粗略的全局约束。

下一章我们会讲差分GPS和RTK,那才是真正能到厘米级的东西。不过在那之前,建议你把这一章的内容吃透——基础不牢,地动山摇。我当年就是急着学RTK,结果连伪距和载波相位的区别都没搞明白,调试时出了不少洋相。

好,今天就到这里。有什么问题欢迎在课程群里讨论。