GPS全球定位系统:系统组成、工作原理与信号结构

GPS,全称Global Positioning System,是美国从上世纪70年代开始建设的全球卫星导航系统。我入行那会儿,GPS几乎是定位领域的唯一选择,现在虽然有了北斗、GLONASS、Galileo,但GPS依然是全球应用最广、技术最成熟的系统。理解GPS,是理解所有GNSS系统的基础。

说白了,GPS就是通过天上的卫星告诉你:你现在在哪儿,现在几点。但要做到这一点,背后是一整套精密的设计。咱们今天就把这套系统拆开来看。

GPS系统三大组成部分

GPS系统由三个段组成:空间段、控制段和用户段。这三个段缺一不可,我当年做接收机开发时,曾经因为没考虑控制段的上行注入误差,导致定位结果偏差很大——嗯,这个坑后面会细说。

空间段:天上的卫星星座

空间段就是天上的GPS卫星。标准配置是24颗卫星,分布在6个轨道平面上,每个轨道4颗。轨道高度约20200公里,倾角55度,周期约11小时58分钟。

为什么要24颗?你想想看,要保证地球上任何地方、任何时间都能看到至少4颗卫星,24颗是最低配置。实际上现在在轨的GPS卫星通常有31-32颗,冗余设计让系统更可靠。

关键参数:GPS卫星轨道高度20200km,属于中地球轨道(MEO)。这个高度选得很有讲究——太高了信号衰减大,太低了卫星覆盖范围小。20200km刚好平衡了覆盖和信号强度。

控制段:地面的"大脑"

控制段包括一个主控站(位于科罗拉多州施里弗空军基地)、多个监测站和地面天线。它的工作是什么?

  • 监测卫星状态——监测站全天候跟踪卫星,收集数据
  • 计算星历和钟差——主控站根据监测数据推算卫星轨道和时钟误差
  • 上行注入——把更新的导航电文上传给卫星
  • 卫星控制——轨道调整、姿态控制、故障处理

我遇到过一个问题:有一次测试发现定位精度突然变差,排查了半天,发现是控制段更新星历数据时出了延迟,接收机还在用旧的星历。这个教训让我养成了一个习惯——做定位解算时,一定要检查星历的年龄。

用户段:我们手里的接收机

用户段就是GPS接收机,从手机里的定位芯片到专业测绘设备都算。接收机负责:接收卫星信号、解算伪距、计算位置和时间。

用户段的核心任务就四个字:测距定位。通过测量信号从卫星到接收机的传播时间,乘以光速得到距离,再用至少4颗卫星的距离数据解算出三维位置和时间。

GPS工作原理:从信号到位置

GPS定位的基本原理是三边测量法。但这里有个关键问题——接收机的时钟通常不准,比卫星上的原子钟差好几个数量级。所以实际上我们解算的是四个未知数:x、y、z和接收机钟差Δt。

这就是为什么需要至少4颗卫星。3颗卫星解三个位置坐标,第4颗用来解钟差。我刚开始学GPS时一直想不通为什么是4颗,后来亲手推导了一遍方程才明白——原来接收机时钟误差是个必须处理的变量。

个人经验:实际项目中,可见卫星数超过4颗时,我会用最小二乘法或加权最小二乘法来解算,这样能利用更多卫星数据,提高定位精度和鲁棒性。但要注意——卫星几何分布不好时,即使卫星数量多,定位精度也可能很差。

定位流程可以概括为:

  1. 接收机捕获并跟踪卫星信号
  2. 从信号中提取导航电文,获得卫星位置和时钟信息
  3. 测量伪距(含各种误差的测量距离)
  4. 建立观测方程,解算位置和钟差

下面这张图展示了GPS定位的核心流程:

GPS定位核心流程 GPS卫星1 GPS卫星2 GPS卫星3 ...卫星N 信号传播:L1/L2载波 + C/A码/P码 + 导航电文 GPS接收机:捕获 → 跟踪 → 解调 定位解算:伪距测量 → 最小二乘法 → 位置(x,y,z) + 钟差Δt 至少需要4颗卫星 才能解出4个未知数

GPS信号结构:藏在无线电波里的信息

GPS卫星发射的信号,本质上是一个经过调制的无线电波。信号结构分为三个层次:载波、测距码和导航电文。

载波频率

GPS使用两个主要载波频率:

频段 频率 主要用途
L1 1575.42 MHz 民用C/A码 + 军用P(Y)码
L2 1227.60 MHz 军用P(Y)码,现代民用L2C
L5 1176.45 MHz 生命安全服务(航空等)

为什么用两个频率?我做过双频接收机的开发,说白了就是为了消除电离层延迟。电离层对不同频率的信号延迟不同,通过比较L1和L2的到达时间差,可以精确估算并补偿电离层误差。

测距码

GPS使用两种测距码:

  • C/A码(粗捕获码):码长1023个码片,码率1.023 MHz,周期1毫秒。民用信号,精度约3-5米(无SA时)。
  • P(Y)码(精密码):码率10.23 MHz,周期7天。军用信号,精度更高,但加密使用。

C/A码的码率只有1.023 MHz,意味着每个码片对应的距离约293米。接收机通过跟踪码相位,可以实现码片长度1%左右的测量精度——也就是大约3米的测距精度。这个精度对于民用定位来说已经相当不错了。

注意:我曾经在项目中遇到一个典型问题——多径效应。城市峡谷中,信号反射导致C/A码相关峰变形,测距误差能到几十米。解决方法是使用窄相关技术或双天线抗多径接收机,但成本会高不少。

导航电文

导航电文是卫星播发的数据,包含:

  • 星历参数:卫星的精确轨道位置,每2小时更新一次
  • 历书参数:所有卫星的粗略轨道信息,用于卫星搜索
  • 时钟校正参数:卫星时钟相对于GPS时间的偏差
  • 电离层校正参数:用于单频接收机校正电离层延迟
  • 卫星健康状态:哪些卫星可用,哪些有问题

导航电文的传输速率是50 bps,非常慢。所以接收机首次定位时,需要花30秒到几分钟来收集完整的导航电文。这就是为什么冷启动定位那么慢的原因。

定位精度影响因素

GPS定位精度受多种因素影响。我整理了一个表格,把主要误差源和典型量级列出来:

误差源 典型量级(米) 说明
卫星时钟误差 1-2 尽管有原子钟,仍有残余误差
卫星轨道误差 1-2 星历预报不完美
电离层延迟 2-10 白天大,夜间小;低仰角大
对流层延迟 1-3 与温度、湿度、气压有关
多径效应 1-50 城市环境最严重
接收机噪声 0.5-1 与接收机质量相关
几何精度因子(DOP) 放大倍数 卫星几何分布越差,误差越大

这里面我想重点说说几何精度因子(DOP)。你想想看,如果4颗卫星都集中在头顶一个小区域,那定位结果的水平精度会很差。反之,如果卫星均匀分布在天空各个方向,定位精度就好。DOP值越小越好,一般PDOP(位置精度因子)小于3就算不错了。

避坑指南:我做过一个车载导航项目,测试时发现车辆在隧道出口处定位跳变严重。排查后发现是卫星信号刚恢复时,接收机用了几何分布很差的卫星组合。解决方案是:在信号恢复初期,强制使用DOP值最优的卫星子集,而不是用所有可见卫星。

还有一个容易被忽略的因素——卫星仰角。低仰角卫星的信号穿过大气层的路径更长,误差更大。我一般会设置一个仰角截止角,比如10度或15度,低于这个角度的卫星数据直接丢弃。虽然可见卫星数少了,但定位精度反而提升了。

总结一下GPS定位精度的核心:误差来源多,但大部分可以通过差分技术、双频技术、模型校正来削弱。真正难处理的是多径效应和恶劣的卫星几何分布——这两个问题,直到今天也没有完美的解决方案。