资讯动态

GLONASS信号处理全链路解析:从FDMA体制到频间偏差校正

发布时间:2026/10/18 3:04:23 来源:尧图企业网站定制
GLONASS信号处理的教程和资料不像GPS那样遍地都是。很多人上手多系统接收机时默认把GPS那套捕获、跟踪、观测量提取的流程照搬过来结果在GLONASS这条链路上栽跟头——首星捕获慢、环路失锁、伪距跳变、定位精度始终差几十米。问题根源往往就一个字频。GLONASS是目前主流GNSS里唯一把**频分多址FDMA**作为主力信号体制的系统每颗卫星独占一个载波频率这个设计贯穿了从射频前端到定位解算的每一个环节也让它的信号处理流程比GPS整整多出一维。这篇文章我按实际调试接收机的经验把GLONASS从天线输入到位置输出的完整处理链路梳理一遍重点讲清那些和GPS/北斗不同的关键步骤以及每个环节最容易踩的坑适合正在做多系统接收机、或者想独立评估GLONASS信号的工程师和研究生参考。1. GLONASS信号体制为什么说它是一套非主流设计1.1 FDMA与CDMA的本质差异先看最底层。GPS、北斗、Galileo都采用码分多址CDMA所有卫星共用同一个载波频率靠不同的伪随机码区分。GLONASS的传统信号则采用频分多址FDMA每颗卫星不仅有不同的伪码还占有一个独立的载波频率。在L1频段GLONASS的中心频率为1602 MHz相邻卫星间的频率间隔是0.5625 MHz频道号k的范围是-7到6。某颗卫星的实际载波频率就是f_L1 1602 0.5625 × k MHz类似地L2频段的表达式为1246 0.4375 × k MHz。也就是说当你捕获一颗GLONASS卫星前它的中心频率本身就是一个未知量。这跟GPS那种所有卫星都是1575.42 MHz的假设完全不同也是后面所有处理差异的第一源头。1.2 码率与导航电文参数看着相似物理含义差一倍GLONASS的民用C/A码码长是511 chip码率0.511 Mcps码周期正好1毫秒。而GPS的C/A码码长1023 chip码率1.023 Mcps码周期同样是1毫秒。看似只是码长和码率同时减半但在工程上有一层容易被忽略的含义一个码片chip的持续时间变长了。GPS一个chip约0.978微秒GLONASS一个chip约1.957微秒。在做接收机跟踪环路时相关器间距通常以chip为单位设置比如0.5 chip、1 chip。同样的间距值对应到时间轴上GLONASS比GPS宽了一倍。这不是说GLONASS码环更好或更差而是意味着码环的伪距噪声性能、对多径的敏感度都会发生变化。后面在跟踪环路部分我再细说。导航电文方面GLONASS民用电文速率也是50 bit/s一个字符串持续2秒一个超帧包含5帧、每帧15个字符串完整超帧时长约2.5分钟。它把卫星健康状态、星历参数、时间标志等放在不同字符串中广播格式上与GPS差别很大。接收机在解电文时需要单独实现GLONASS电文解析器不能直接复用GPS的流程。1.3 频点规划给接收机前端提出的实际要求对于多系统接收机来说GLONASS频点规划带来的直接影响是射频带宽必须加宽。L1频段GLONASS频道号从-7到6加上多普勒范围实际射频信号可能分布在1602±4 MHz甚至更宽的范围。而GPS L1只有1575.42 MHz一个点。一个覆盖GPS L1和GLONASS L1的前端滤波器通带通常得从1559 MHz扩到1606 MHz左右。带宽加宽有两个代价第一带外噪声功率增加ADC的量化噪声底抬高第二射频滤波器的群时延特性在通带边缘会发生明显变化而GLONASS边缘频道的信号正好落在这个区域。这意味着不同频道的信号经过射频链路后延迟不完全一致。这个不一致最终会成为伪距里的常值偏差也就是后文要重点处理的频间偏差IFB。2. 信号捕获一场在频率和码相位间展开的搜索战2.1 搜索空间比GPS多了一个维度GPS捕获时本地频率通常只在1575.42 MHz附近按多普勒范围扫描再加上码相位的搜索是个二维问题。GLONASS则必须把未知的中心频率也纳入搜索于是变成三维频道号或对应的频率偏移、多普勒、码相位。更准确地说GLONASS的捕获频率搜索范围是本地试验频率 1602 0.5625 × k 多普勒估计值如果冷启动时没有任何星历和历书接收机不知道哪些卫星在视场内更不知道每颗卫星占用哪个频道号那就得把整个频道表-7到6都扫一遍。这个计算量比GPS冷启动大不少。2.2 频率步进与相干积分时间的取舍捕获过程中本地频率的搜索步进通常取相干积分时间倒数的二分之一部分实现取三分之一或四分之一。如果相干积分时间取1毫秒频率步进可取500 Hz到1 kHz。这个区间内信号能量的损耗可以控制在可接受范围。GLONASS的码周期也是1毫秒所以GPS常用的那些捕获算法框架比如循环相关、基于FFT的码相位搜索都能直接沿用到GLONASS。但有一点要特别注意GLONASS电文同样存在20毫秒的比特跳变相干积分超过2毫秒就会面临比特翻转问题。处理方式与GPS一致可以采用半比特方法或利用已知比特辅助但必须在GLONASS自己的电文帧格式里找到比特边界。2.3 捕获成功判定中容易出现的幽灵频点我调试GLONASS捕获时遇到过一个典型现象搜索频谱上能看到一个清晰的峰值但转入跟踪后环路几毫秒内就失锁。打印捕获峰值对应的本地频率再和预测频率做差发现偏差已经超过合理多普勒范围。问题出在接收机把频道号判断错了——真实卫星可能在频道k4捕获峰值却在k3的试验频率上被检测到两边的中间频率恰好和实际信号频率接近。所以捕获成功之后的验证步骤不能省先记录捕获峰值的载波频率和码相位再根据已有星历计算该PRN的预计多普勒两者做差落在合理范围内才允许转入跟踪。如果没有先验信息就把搜索网格加密一档宁可多算一点也不能误判。2.4 冷启动时的实用捕获策略有先验信息时的做法是根据概略位置和历书先算出可见卫星的高度角和方位角筛掉低仰角卫星再为每一颗可见卫星生成它对应频道号的频率搜索集合。这样一来搜索空间被压缩到已知频道号有限多普勒范围计算量能降一半以上。我实测下来用这个策略做冷启动首颗星的TTFF能明显缩短虽然不同场景差异很大但整体趋势是比全频道暴力扫描快很多。如果完全没有先验信息建议分两轮搜。第一轮用较短的相干积分比如1毫秒把码相位和粗略频率找出来目的是快速锁定哪颗星可能在视场第二轮再针对候选卫星做更精细的频率估计。这种粗扫精扫的思路比一次性用高分辨率扫完整个搜索空间要划算得多。3. 跟踪环路稳定守住的码相位与载波相位3.1 码环和载波环的协同关系跟踪环路的结构在GPS和GLONASS之间没有本质区别**码环DLL**通过早迟相关器维持本地码和输入码的相位对齐**载波环PLL/FLL**维持本地载波和输入载波的相位或频率对齐。两个环路相互耦合载波环提供的精确多普勒信息帮助码环平滑码环的相位误差又反馈到载波环辅助。GLONASS的码率只有0.511 Mcps一个chip持续时间约1.957微秒。如果采用相同的相关器间距比如0.5 chipGLONASS相关器在时间轴上的实际间隔是GPS的两倍这会让码环对多径的抑制特性发生变化长延迟多径对GLONASS的影响相对弱一些但短延迟多径可能更麻烦。实际调试时我建议把GLONASS的码环带宽适当收窄一点比如GPS常用1 HzGLONASS可以从0.5 Hz起步根据C/N0动态调整。3.2 每颗卫星的中频残留频率都不同这是GLONASS跟踪环节最容易被GPS惯性思维带偏的地方。GPS所有卫星共用同一个载波经过下变频后各通道的中频标称值完全一样环路NCO只需在小范围内修正多普勒。GLONASS则不同每颗卫星经过下变频后的标称中频与该卫星的频道号、接收机本振配置都有关通道频率各不相同。设计GLONASS跟踪通道时需要为每个通道单独维护一个标称中频偏移量初始化为该卫星频道号对应的频偏再叠加多普勒。如果沿用GPS的实现方式所有通道共用一个统一的标称中频环路会在一开始就存在几百千赫兹的频率误差跟踪自然失败。这个细节在模块化软件接收机里尤其常见整体框架没问题但通道初始化参数少算了一个频道项。3.3 邻频干扰GLONASS特有的信号质量问题L1相邻频点只差0.5625 MHz。卫星运动带来的多普勒可达几千赫兹可能让两颗卫星的实际接收频率进一步靠近甚至出现重叠。射频前端如果只做了一次很粗略的滤波相邻频道的强信号会成为当前通道的带内干扰。邻频干扰的表现形式是某颗卫星的C/N0出现周期性跌落载波相位噪声增大甚至在低仰角时环路失锁。处理手段有三层。第一层是在射频/中频端把信道带宽控制在一个合理范围比如GLONASS L1单系统可以收到4 MHz左右第二层是在基带做陷波或自适应滤波把落在相邻频道的强信号压下去第三层是在环路层面提高载波环的带宽或改用二阶环避免强干扰造成相位跳变。前两层属于预防第三层是补救。3.4 周跳检测在GLONASS里的特殊注意点载波相位观测量的连续性对高精度定位至关重要。周跳检测常用到无几何组合或多普勒积分法但GLONASS在这些方法上有个额外麻烦不同频率的载波相位观测值之间存在由频间偏差引起的常值偏置。如果直接用无几何组合比如L1和L2相位差来检测周跳这个常数偏置会被当作误差源检测门限不好设小周跳可能被淹没。我的做法是先通过一段静态数据估计出各通道的频间偏差常数再用修正后的组合量做周跳检测对单频用户优先使用相位-伪距组合加上多普勒积分辅助。这样在GLONASS上检测小周跳的可靠性会高不少。4. 观测量生成与误差修正把粗伪距变成准伪距4.1 码伪距与载波相位观测量的生成码伪距来自码环的相位估计本质上是本地码和卫星码的时间对齐误差乘以光速。由于GLONASS码率较低码伪距的理论噪声精度会比GPS略差这个在性能预算里要提前考虑。载波相位观测量则由载波环的整周计数和瞬时相位两部分组成其精度不受码率影响可以达到毫米级到厘米级。观测量的时间戳必须一致。GPS依靠导航电文中的周内时TOW来对齐GLONASS没有完全等价的强对齐机制各通道观测量之间可能存在毫秒级的时间偏差。工程上是把它们统统标记到接收机本地钟的同一时刻再在定位解算时对每颗卫星的标称时间差异做修正或者先做观测量内插对齐。前者实现简单后者精度更高两者我都试过如果接收机动态不大内插不是必须的但高动态场景下必须处理。4.2 频间偏差IFBGLONASS最让新手头痛的一项频间偏差这个话题每个做GLONASS的人都绕不开。它的来源是接收机自身射频滤波器、放大器、ADC驱动电路对不同频率信号的电气延迟并不完全一致。对GPS来说所有卫星同一频率这项偏差被统一吸收进接收机钟差但GLONASS各卫星频率不同这条共享的延迟曲线就变成了随频道号变化的伪距偏置。处理IFB有三种常见路径。第一种是出厂标定用可调频的信号模拟器逐个频道注入信号测出每个频道的相对延迟做成校准表存在固件里。第二种是在线估计把IFB当作未知参数放进定位解算中和钟差一起解代价是自由度增加DOP会略变差。第三种是事后提取利用双频消电离层组合数据反推IFB适合后处理软件。早期没有模拟器的时候我用的是第二种效果可接受但前提是参与解算的卫星数量要足够一般要求8颗以上才稳。4.3 电离层修正逐颗卫星算频率而不是用一个统一值电离层延迟和频率的平方成反比。GPS单频用户做Klobuchar模型修正时全场统一用L1频率代入公式GLONASS用户如果也照抄把每颗卫星都当成1602 MHz来处理会在频道号跨度大的场景下产生分米级的修正误差。正确做法是对每一颗GLONASS卫星先根据它的频道号算出真实载波频率再把这个频率代入电离层模型。这需要接收机在生成观测量时就把该通道的载波频率作为元数据一并保存下来而不是只存一个GLONASS L1的类型标签。对流层延迟与频率无关按照高度角和气象参数建模即可这部分GPS和GLONASS的处理完全一致。4.4 地球自转改正与坐标基准统一伪距测量时卫星信号从发射到接收这几十毫秒内地球自转导致接收机在地心地固系里的位置发生了微小的平移这就是Sagnac效应。所有GNSS系统都需要做这项改正GLONASS也不例外改正量与伪距和站星位置有关公式在各类教材里都能找到直接套用即可。坐标基准则要留意GLONASS广播星历用的是PZ-90坐标框架GPS用的是WGS-84两者之间存在平移和微小旋转差异。对一般单点定位来说这个差异带来的误差在厘米级很多场景可以忽略但在多系统联合处理和精密测量场景就要显式转换。我的做法是在软件里内置一套PZ-90与WGS-84的转换参数处理和输出时统一转换到与GPS相同的框架避免后续混用数据时出现系统偏差。5. 定位解算坐标系统、时钟偏差与频间偏差如何一起处理5.1 单GLONASS定位的基本观测方程记第i颗GLONASS卫星的伪距观测值为ρ_i那么ρ_i ||r_sat_i - r_rec|| c·(δt_rec - δt_sat_i) I_i T_i ε_i其中||r_sat_i - r_rec||是站星几何距离δt_rec是接收机钟差δt_sat_i是卫星钟差由导航电文给出I_i和T_i是电离层和对流层延迟。单GLONASS系统解算时所有卫星共享同一个接收机钟差因此至少需要4颗星才能解出位置三维坐标加一个钟差。这里有一个细节GLONASS广播星历中的卫星钟差参数其参考是卫星实际发送信号的频率。也就是说钟差项已经包含了该卫星具体频率上的发射端延迟接收机端不需要再额外调整。这与GPS星历处理存在微妙差别但对于只读星历的用户来说两者的处理方式其实是一样的——直接应用星历中的钟差参数即可。5.2 多系统组合系统间偏差与频道分组的折中GPS和GLONASS联合定位时两个系统的时间基准不同伪距观测方程里至少要添加一个**系统间偏差ISB**参数。简单的做法是把它当作一个常数未知量估计复杂一点可以做随机游走。ISB估计对GPSGLONASS组合定位的精度影响很大尤其是在混合观测数量不均衡的情况下。当GLONASS也参与解算时问题又回到IFB。如果接收机没有对IFB做标定定位软件会把IFB合并进ISB里导致整个系统的误差增大。折中方案是在定位解算中把GLONASS卫星按频道号分成若干组比如相邻两个频道一组每组独立估计一个ISB。分组的代价是参数增多需要更多观测才能稳定。卫星数量少的时候我见过有人直接退化成不分组的单ISB方案——精度波动大一点但至少不发散。具体分组数量要在实际中权衡没有万能的配置。5.3 多普勒测速别忘了每颗卫星的真实波长不同利用多普勒观测值测速时径向速度的计算需要用到载波波长。GPS统一用L1波长GLONASS则必须逐颗卫星计算波长λ_i c / f_if_i是该卫星的真实频率。如果软件里只存了一个GLONASS L1标称值测速结果会出现每秒零点几米到几米的偏差视频道号而定。这只是个多乘一个系数的问题但是由于GPS处理流程里这个系数是常量很多人重构多系统代码时会漏掉。排查思路很直接把单点定位算出的位置差分速度和多普勒解算的速度做对比如果GLONASS单星参与时速度始终带一个随卫星变化的偏差基本就是频率项没写对。5.4 观测量输出与分发格式观测量输出到上位机或后处理软件时格式会影响后续所有处理。RINEX 2.x对GLONASS的频率信息记录不完整解析多频数据时容易丢失频道号上的频率标记。RINEX 3.03以上版本对GLONASS信号标记更完善在交换双频GLONASS数据时建议优先使用RINEX 3.x。如果只能用RINEX 2.x那至少要在自定义扩展字段里保留频道号否则下游做精密解算的人拿不到频率信息IFB根本没法定量计算。6. 实测排错GLONASS接收机故障的几个排查切口6.1 先看四个基础指标判断问题落在哪一段拿到一套GLONASS接收机或自研信号处理链路我不会急着改代码而是先抓四个指标做定位各通道C/N0一致性正常情况下GLONASS各通道载噪比应在35~50 dB-Hz范围。如果某个频道号普遍比其他频道低5 dB以上多半是射频滤波器在频带边缘衰减过大属于前端问题。伪距残差做完定位解算后看各颗星的伪距残差。若某个特定频道号的卫星残差系统性偏大高度指向IFB未校准。载波相位周跳率接收机静置半小时统计各通道周跳次数。理想应该是0如果频繁出现检查环路带宽和邻频干扰。定位连续性看位置输出是否有周期性跳变或短时中断跳到下一层去查跟踪状态切换。这四个指标组合起来基本能把问题范围缩小到射频前端、捕获、跟踪、解算中的某一个环节。6.2 冷启动首颗星捕获慢的排查如果冷启动捕获第一颗GLONASS卫星的时间明显过长优先检查两处。第一处是频率搜索步进步进大于2 kHz时会漏掉部分信号能量建议拿1毫秒相干积分对应的整数分之一来设。第二处是频道号与本地频率的映射表是否正确很多软件从历书提取频道号的逻辑写错了导致本地生成的全是错误频率自然搜不到。排查时可以把捕获检测到的峰值频率打印出来和星历推算的预测频率做差。差值得不到合理解释时不要怀疑天空先怀疑频道表。6.3 定位跳变与观测量阶跃的关系定位突然跳变几十米又恢复正常这类问题在GLONASS接收机上并不少见而且多数原因在跟踪通道管理不在解算算法。典型场景是这样一颗卫星信号弱到临界资源调度器把它从旧通道重新分配到新通道。如果旧通道的观测量没有及时作废新通道的观测量已经开始产生两者会在某一刻混进同一组定位解算伪距瞬间出现阶跃。解决思路是通道重新分配时先把旧通道标记为无效等待几个历元后再启用新通道同时利用多普勒和伪距的连续性检测在两个通道交替时做一次平滑过渡。这也是我在实际调试中踩过的坑当时排了很久最后发现是调度逻辑少了一个置无效操作。6.4 模拟器是最省力的验证工具调试GLONASS信号处理强烈建议准备一台支持GLONASS FDMA信号的星座模拟器。模拟器的价值在于场景可重复你可以设置静态环境设定某几颗卫星的载噪比甚至注入一个已知的邻频干扰然后观察接收机每个环节的输出。真实环境受多径、遮挡和天气影响问题复现和对比都很困难模拟器能把变量控制在一个效率高很多。没有模拟器时退而求其次用静态户外数据已知基准点做后处理也能定位一部分问题但排错周期会长不少。6.5 多系统对比能快速暴露GLONASS链路的拖累评估GPSGLONASS联合定位的整体表现时不要只看联合输出还要分别记录单GPS、单GLONASS的独立定位结果。如果单GPS表现良好联合解精度反而变差问题大概率出在系统间偏差估计或GLONASS伪距质量上。我用这个办法排查过多次联合解标准差偏大切换到单GLONASS看到某个固定频道号残差始终偏正顺着这个方向才找到IFB校准表里漏了一个频道。调GLONASS这一年多下来最大的体会是别拿GPS的思维去套它。频道号、FDMA、IFB、坐标框架差异这一串看似细碎的点任何一步偷懒都会在定位结果上现形。如果你手里正有一个始终差几十米的GLONASS问题优先检查射频带宽和IFB校准这两项——我遇到的案例里十有八九出在这两个地方。希望这篇流程梳理能帮你省掉我当初反复排错所花的时间。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑