3. GPS定位原理:从卫星信号到位置坐标

GPS这东西,大家手机里都有,但真正搞明白它怎么工作的,其实不多。我最早接触GPS是在一个无人机项目里,当时飞机飞着飞着突然偏了十几米,查了半天才发现是定位模块的伪距计算出了偏差。从那以后,我就把GPS原理老老实实啃了一遍。

说白了,GPS定位就是三件事:知道卫星在哪儿、测出你到卫星的距离、然后解算出你的位置。听起来简单,但每一步都有坑。

3.1 GPS系统组成:三大部分缺一不可

GPS系统由三个段组成,我习惯叫它们「天上、地上、手上」。

  • 空间段(天上):24颗卫星分布在6个轨道面上,轨道高度约20200公里。每颗卫星都带着原子钟,不断广播自己的位置和时间。
  • 地面控制段(地上):主控站、监测站和注入站。它们负责跟踪卫星、计算星历、修正时钟误差。我记得有一次项目里卫星星历没更新,定位误差直接飙到50米,后来强制刷新了星历数据才恢复正常。
  • 用户段(手上):就是你的GPS接收机。它接收卫星信号,解算位置。接收机的质量直接影响定位精度,便宜的和贵的能差一个数量级。

关键点:GPS定位至少需要4颗卫星才能解算出三维位置(经度、纬度、高度)和时间。3颗卫星只能做二维定位,而且高度是假设的。

GPS系统三大部分 空间段 24颗卫星 6个轨道面 原子钟 + 导航电文 地面控制段 主控站 监测站 注入站 用户段 GPS接收机 天线 + 处理器 导航解算软件 工作流程 ① 地面站监测卫星状态,计算星历和时钟修正 ② 注入站将修正数据上传给卫星 ③ 卫星广播导航电文(含星历、时钟、历书) ④ 接收机接收信号,解算位置

3.2 伪距定位原理:时间差里的学问

伪距,说白了就是「假装的距离」。为什么叫「伪」?因为测出来的距离包含各种误差,不是真实距离。

原理其实很简单:卫星发一个信号,告诉你「我在时间t1发了这个信号」,接收机收到时记录时间t2,那么距离 = (t2 - t1) × 光速。但问题来了——卫星的时钟和接收机的时钟不同步。

卫星上有原子钟,精度在纳秒级别。接收机呢?一般就是个石英晶振,一天能差几毫秒。你想想看,光速是3×10⁸米/秒,1毫秒的误差就是300公里。所以必须把接收机时钟误差也当作一个未知数来解算。

我的经验:伪距观测方程有4个未知数(x, y, z, 接收机钟差),所以至少需要4颗卫星才能解算。如果只有3颗卫星,你可以假设高度已知(比如海平面),但精度会大打折扣。我在山区做测试时就吃过这个亏。

伪距观测方程长这样:

ρ = √[(x_s - x_r)² + (y_s - y_r)² + (z_s - z_r)²] + c·Δt + ε

其中:

  • ρ — 伪距测量值
  • (x_s, y_s, z_s) — 卫星位置(从星历中获取)
  • (x_r, y_r, z_r) — 接收机位置(待求)
  • c — 光速
  • Δt — 接收机钟差(待求)
  • ε — 其他误差项

解算方法一般用最小二乘法或卡尔曼滤波。我建议你在实际项目中用卡尔曼滤波,因为它能处理动态场景,而且对噪声有平滑作用。

3.3 单点定位与差分定位:精度差在哪?

单点定位就是一台接收机自己算位置。精度一般在3-10米,看环境和卫星几何分布。差分定位就不一样了——它用两台接收机,一台在已知位置(基准站),一台在未知位置(流动站),通过差分消除公共误差。

对比项 单点定位 差分定位(DGPS) RTK定位
精度 3-10米 0.5-2米 1-5厘米
设备 1台接收机 2台接收机 + 数据链 2台接收机 + 高频数据链
实时性 实时 实时 实时(厘米级)
适用范围 消费级导航 农业、海洋 测绘、无人机
成本 低 中 高

差分定位的原理其实不复杂。基准站知道自己的精确坐标,它测量伪距后算出误差,然后把误差通过数据链发给流动站。流动站用这个误差修正自己的测量值。说白了就是「我帮你把公共误差减掉」。

注意:差分定位的有效范围有限。基准站和流动站的距离越远,空间相关性越差,误差修正效果就越差。一般DGPS的有效范围在100公里以内,RTK在10公里以内。超过这个距离,精度会急剧下降。

我在一个农业无人机项目里用过RTK。那台无人机要沿着田埂自动喷洒农药,单点定位根本不行,飞着飞着就偏到隔壁田里去了。后来上了RTK,精度到了2-3厘米,飞机沿着田埂走得笔直。但代价是——基准站架设麻烦,数据链容易受干扰,而且贵。

3.4 GPS误差源分析:为什么定位不准?

GPS的误差来源很多,我把它分成三类:卫星端、传播路径端、接收机端。每一类都有几个大头。

卫星端误差

  • 星历误差:卫星实际位置和广播星历算出来的位置有偏差。地面站虽然一直在修正,但做不到100%准确。
  • 卫星钟差:原子钟也有漂移,虽然很小,但乘以光速后影响不小。
  • 相对论效应:卫星在高速运动,引力场也和地面不同,时钟会变快。这个效应已经通过硬件补偿了,但补偿不可能完美。

传播路径误差

  • 电离层延迟:信号穿过电离层时,传播速度会变慢。白天比晚上严重,太阳活动期更严重。双频接收机可以消除这个误差,单频机只能靠模型修正。
  • 对流层延迟:对流层对信号的折射,和温度、气压、湿度有关。这个误差比较稳定,模型修正效果不错。
  • 多路径效应:信号反射后进入接收机,造成测距误差。在城市峡谷、建筑物旁边特别严重。我做过一个测试,在玻璃幕墙大楼旁边,多路径误差能到几十米。

接收机端误差

  • 接收机噪声:电路热噪声、量化误差等。好的接收机噪声低,差的就高。
  • 天线相位中心偏差:天线的电气中心和几何中心不重合。高精度测量时需要校准。
  • 通道间偏差:不同卫星信号经过不同通道,通道特性不一致。

误差量级参考(单点定位,典型值):

  • 星历误差:1-3米
  • 卫星钟差:1-2米
  • 电离层延迟:2-10米(白天)/ 0.5-2米(夜间)
  • 对流层延迟:0.5-2米
  • 多路径效应:1-10米(严重时可达50米)
  • 接收机噪声:0.1-1米

你可能会问:这么多误差,怎么提高精度?其实方法就几个方向:

  1. 用差分定位:消除公共误差(星历、钟差、大气延迟)
  2. 用双频接收机:直接消除电离层延迟
  3. 选好天线位置:避开反射面,减少多路径
  4. 用精密星历:后处理时用IGS精密星历代替广播星历

我记得有一次做车载导航测试,在城市高架桥下面,定位直接跳了20多米。查了半天,是多路径和卫星遮挡共同作用的结果。后来我们把天线装到了车顶中央,远离车身金属面,情况好了很多。嗯,天线位置这个细节,很多人容易忽略。

避坑指南:我曾经在一个项目里发现定位精度突然变差,排查了两天才找到原因——附近新装了一个大功率基站,干扰了GPS信号。所以做高精度定位时,别忘了做电磁环境调查。

总结一下,GPS定位的核心就是伪距测量加误差修正。单点定位够用但精度有限,差分定位精度高但成本也高。选哪种方案,取决于你的任务需求——是导航用、测绘用、还是控制用。后面几章我们会深入讲定位模块在任务规划中的具体集成方法,到时候这些原理都会用上。