ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

GPS北斗L1/B1伪距偏差实测:多系统融合定位精度的关键校准

GPS北斗L1/B1伪距偏差实测:多系统融合定位精度的关键校准 GPS和北斗联测这事我在外场干了快八年从最早的U-blox NEO系列一路测到今天的双频多系统板卡最深的感受是单系统单频点玩得再溜也架不住多系统融合时那点看不见的偏差。尤其是GPS L1和北斗B1名义上都叫1575.42MHz附近可真把两台接收机摆在一起跑同一条路线伪距解出来的位置差个三五米是常有的事。这里面的门道全在频点设计和伪距偏差这两个词上。这篇文章写给两类人一类是做高精度定位的工程师手头有测量型接收机但不太清楚L1/B1的偏差到底怎么测、怎么用另一类是刚入行的学生想搞明白为什么GPS和北斗放在一起用反而要先做偏差校准。我会从频点结构、伪距偏差的来源、实测流程、数据处理四个维度拆开讲最后附上我在外场踩过的坑和排查经验都是可以直接抄作业的级别。1. 频点设计与伪距偏差同一频率下的两套语言很多刚接触多系统融合的人会有一个朴素疑问GPS L1和北斗B1频率都是1575.42MHz信号频率一样为什么还要单独做偏差分析卫星导航不是你发我也发手机收下来直接用就行了吗答案在信号结构里也藏在伪距这两个字的定义里。1.1 从频率到码率L1与B1的信号结构差异GPS L1频段目前民用主用信号是L1 C/A码码率1.023Mchips/s码长1023位周期1ms。北斗B1频段情况复杂一些老一代的B1I信号用的是I支路码率2.046Mchips/s是GPS的两倍码长2046位周期1ms。新一代北斗B1C信号则是BOC调制码率也做了重新设计带宽更宽抗多径能力更强但底层逻辑和L1 C/A完全不同。这里有个关键点伪距是通过比对卫星发射的伪随机码和接收机本地复现码的相位差来测量的。码率越高码片越窄理论上测距精度就越高。GPS L1 C/A一个码片对应约293米北斗B1I一个码片对应约146米仅从码片宽度看B1I的伪距分辨率理论上优于L1 C/A。但这是理想情况真实测量精度还受信号带宽、接收机环路带宽、多径抑制能力制约。从工程角度讲GPS L1和北斗B1不能简单视为同一个频率的同一类信号它们共享了中心频点但码型、调制方式、信号带宽都不一样。这就好比两条公路都修在同一个位置但路面宽度、标线规则、限速要求都不同跑在上面的车自然不能直接画等号。1.2 伪距偏差的物理构成不是单一来源是四类误差的叠加伪距偏差是一个总称工程上可以拆成四类第一类是星端偏差。卫星发射链路里的射频滤波器、功率放大器、天线会引入群延迟这个延迟对频率敏感不同频点上表现不一样。GPS Block IIF卫星和北斗M1测试星的L1/B1群延迟特性就不同这类偏差在星历里会以TGD群延迟时间差参数给出但TGD本身的修正精度有限残差会落在伪距里。第二类是接收机端偏差。接收机前端滤波器、低噪声放大器、ADC采样时刻、基带处理算法都会引入额外延迟而且不同品牌接收机、不同固件版本之间差异很大。实测中我见过同一批板卡之间伪距偏差差到1.5米的这在精密定位里完全不能忽略。第三类是传播路径偏差。电离层延迟和一阶项有关载波相位和伪码在电离层里的传播速度不同所以电离层延迟对码和相位的影响是反号的。GPS L1和北斗B1中心频率一样电离层延迟理论上相同但两条信号的频率响应不同残余差异依然存在。对流层延迟基本与频率无关可以认为对两者影响一致。第四类是多径误差。这个不展开讲细节但必须提醒L1和B1的信号带宽不同多径误差包络完全不同B1I更宽的带宽使其在多径抑制上略占优势但B1C的BOC调制又引入了新的多径特性。伪距偏差不是某一个环节的错误而是星端、接收机端、传播路径、多径四类误差叠加的结果。明白了这一点你才能理解为什么实测分析必须严格控制变量否则你测出来的根本不是频点间的偏差而是两台接收机之间的个体差异。1.3 为什么伪距偏差会影响定位精度伪距测量值直接进入定位解算方程。如果是单GPS系统接收机位置和时间这四个未知数用四颗以上的GPS卫星伪距就能解出来此时TGD、接收机延迟等偏差通过星历参数和接收机内部校准已经做了修正残余部分虽然存在但影响相对可控。一旦GPS和北斗联合解算问题就变了。两个系统的伪距里各带了各的偏差如果直接把它们的伪距丢进同一个最小二乘解算器相当于把两个不同基准的长度单位混在一起用。你会发现GPS卫星的残差和北斗卫星的残差之间存在一个系统性的偏移这个偏移在位置域可能表现为固定几米的跳变。我在实测中遇到过一个典型场景单GPS解出来位置在北纬31.2001度单北斗解出来在北纬31.2000度看起来差不了太多但两个系统联合解算时位置反而在31.1998度和31.2003度之间来回跳定位精度还不如单系统。这就是伪距偏差没校准的表现——联合解算不是简单的卫星多就准而是系统间的偏差必须先用参数吸收掉。2. 实测环境与设备选型一半的误差是在架天线时埋下的伪距偏差实测听起来是个数据处理问题实际上是个设备环境问题。我见过太多人拿着高精度接收机随便往楼顶一放就开测最后数据处理时发现偏差曲线乱七八糟根本分不清是频点差异还是环境干扰。这里把我在外场的设备选型和架设经验完整列一遍。2.1 接收机、天线与参考真值的三角关系实测伪距偏差你需要三样东西一台能同时输出GPS L1和北斗B1伪距观测值的接收机、一根相位中心稳定的天线、一个能提供参考真值的手段。接收机方面测量型板卡是底线例如NovAtel OEM7系列、u-blox F9P这类支持双系统双频的板卡都能输出原始观测量。消费级模块不是不行但问题在于它们的内部固件已经做了大量平滑和校正你拿到的伪距不是原始伪距做偏差分析等于隔靴搔痒。所以我的建议是预算允许一定上测量级预算紧张也要选能输出原始观测值的模块。天线是全链路最容易被忽略的环节。GPS L1和北斗B1中心频率相同按理说天线对两个信号的相位响应应该一致但实际天线在1575.42MHz附近的相位中心随频率变化曲线并做不到绝对平坦尤其是一些低成本的陶瓷贴片天线带内相位中心偏移能到几个厘米。这个量级对定位影响不大但对伪距偏差分析来说已经是不可接受的误差源了。陶瓷贴片天线的设计有几个注意事项基板介电常数越高天线尺寸可做得越小但带宽和效率会下降馈电位置偏心会直接导致方向图不对称和相位中心偏移地面的大小对贴片天线的辐射特性影响极大同一颗天线放在不同尺寸的地面上相位中心变化能达到厘米级。所以我做L1/B1偏差测试时优先选测量型扼流圈天线或者双频螺旋天线实在要用贴片天线也要保证测试期间天线固定不动、地面环境不改变。参考真值这块有两条路。第一条是做短基线差分两台接收机架在已知距离上一台做基准站一台做流动站通过差分消除卫星钟差、轨道误差、大气误差剩下就是接收机端的偏差项。第二条是静态长时间观测用精密星历和PPP精密单点定位事后处理获得厘米级坐标作为参考值然后把伪距观测值和这个参考值对比得到伪距残差。我实际用的是第二条路。短基线差分虽然干净但需要两台高精度接收机同时工作成本高、架设麻烦。PPP事后处理只需要一台接收机连续观测24小时以上用开源软件就能算出厘米级坐标成本低得多而且完全不依赖基准站的已知坐标尤其适合野外没有控制点的情况。2.2 观测点选择与时长外场选址的四个硬指标观测点选择直接决定数据质量我的硬指标有四条头顶遮挡要小。视线仰角10度以下最好没有建筑物和树木遮挡卫星在低仰角时的信号受多径影响最严重如果你在楼群中间测低仰角卫星的多径误差会直接污染伪距偏差统计。远离强反射面。水面、玻璃幕墙、金属屋顶都是多径重灾区。水面反射的信号和直射信号叠加伪距会出现周期性的正弦波动这种误差在数据处理时极难剔除。电磁环境要干净。基站、雷达、对讲机中继台都会在L1频段附近产生干扰。我吃过一次亏在某个港口测试位置域偏差一直有规律性的抖动排查到最后发现是港区调度用的VHF电台谐波干扰。所以架天线前用频谱仪扫一遍环境是必要动作。连续观测时间要够。伪距偏差不是固定值它随卫星高度角变化。低高度角的卫星穿透电离层路径长残余电离层误差大高高度角的卫星误差相对小。你要把两者都覆盖到至少要连续观测12小时我一般开24小时确保每种几何分布都被充分采样。2.3 数据采集格式与时间同步避免数据对齐的灾难伪距偏差分析需要在同一时刻比较GPS和北斗的伪距观测值。如果两台接收机各自输出数据时间基准不同步比较就毫无意义。实际操作中我用的是一台接收机同时输出GPS和北斗观测值这样时间基准天然一致省掉了时间对齐的麻烦。数据格式方面RINEX 3.03以上版本是必须的因为只有RINEX 3.x才能在同一个文件里同时包含GPS和北斗的观测数据并且用不同的观测码标识区分。GPS L1 C/A对应C1C码北斗B1I对应C2I码B1C对应C1X码这些观测码在RINEX 3.03里有明确定义读取时务必确认你读的是哪个码别把B1I的码当B1C用。采样率我建议设1秒或者30秒。30秒采样适合事后静态分析数据量小处理快1秒采样适合做短时动态对比能看到伪距偏差随高度角变化的细节。如果同时开1秒采样和24小时观测RINEX文件会非常大注意预留存储空间。数据采集还有一个容易忽略的坑接收机的截止高度角设置。如果设置太高比如30度低高度角卫星的伪距偏差数据就全丢了如果设置太低比如0度低质量数据会混进统计里。我的经验是设置5度截止角既保证低高度角卫星的数据覆盖又能在数据处理阶段用信噪比阈值再过滤一遍。3. 实测流程与核心环节实现从原始观测值到偏差曲线设备架好后真正的技术活才开始。这一节把处理流程完整走一遍从数据预处理到偏差计算每个步骤给出具体操作和参数选择依据你可以直接对照自己的数据操作。3.1 数据预处理粗差剔除与信噪比过滤拿到RINEX文件后的第一步是质量检查我通常用RTKLIB自带的或开源的工具先跑一遍主要看三件事观测值数量是否连续、有没有周跳、信噪比分布是否正常。周跳对伪距偏差分析影响极大。载波相位观测值出现周跳还能通过分段处理补救伪距观测值一旦受干扰出现跳变直接表现为伪距偏差曲线上的毛刺。我的做法是先用Melbourne-Wübbena组合和GF几何无关组合检测周跳在周跳发生的历元处把整段数据切断周跳之后的观测值重新作为独立弧段处理。信噪比过滤的阈值没有统一标准我的经验是GPS L1 C/A设35dB-Hz北斗B1I设32dB-HzB1C设30dB-Hz作为最低接收门限。这个差异主要来自信号调制方式和接收机实现差异实际使用中要根据你手头设备的接收灵敏度微调。过滤太严格会丢掉低高度角卫星的数据太宽松会把低质量观测值混入影响偏差统计的稳定性。粗差剔除我用的是迭代中位数法不用均值。伪距测量里可能有10米级的粗差这种异常值对均值的拉动远大于对中位数的影响。我的做法是先算整个弧段伪距偏差的中位数和标准差把偏离中位数超过3倍标准差的历元剔除然后重新计算中位数和标准差再剔除一次直到没有新的粗差出现。一般迭代两到三次就收敛了。3.2 伪距偏差计算的核心公式与坐标系统一伪距偏差的基本计算思路是先用载波相位观测值对伪距做平滑得到一个高精度的伪距变化趋势然后用事后PPP解算的接收机位置作为参考真值最后把平滑后的伪距观测值和理论几何距离做差扣除已知的卫星钟差、对流层延迟、电离层延迟等剩下的残差就是包含伪距偏差的待分析量。写成分步公式更清晰。假设在历元t卫星s发射信号接收机r接收伪距观测值为P则P ρ c·(δt_r - δt^s) I T ε其中ρ是接收机到卫星的几何距离c是光速δt_r是接收机钟差δt^s是卫星钟差I是电离层延迟T是对流层延迟ε是伪距噪声、多径和硬件延迟的混合项。这里需要特别说明两点卫星钟差δt^s可以从广播星历或精密星历里获得但要注意广播星历里的钟差参数是相对于该卫星的L1/P1或B1I/B3I组合的不同频点的TGD修正不同。如果你做的是GPS L1和北斗B1偏差对比必须分别用各自系统的TGD修正方式不能拿GPS的TGD去修正北斗。接收机钟差δt_r在单星历元里是未知数无法单独求解。这就是为什么要用PPP在PPP解算里接收机钟差作为未知参数和位置一起估计解算完成后接收机钟差和位置同时确定这样伪距残差里就不再包含接收机钟差项可以直接反映频点间偏差。几何距离ρ的计算需要统一坐标系。GPS的卫星轨道是WGS-84坐标北斗是CGCS2000坐标两个坐标系的定义非常接近差异在厘米量级。做亚米级分析时这个差异可以不考虑但如果你要做到厘米级必须加坐标系转换参数或者使用IGS提供的精确坐标基准框架。3.3 关键参数处理电离层、对流层与TGD修正的实践选择电离层延迟是伪距偏差分析中最需要小心的参数。GPS L1和北斗B1中心频率相同电离层延迟一阶项相同严格说在做L1/B1对比时可以不用电离层模型修正因为两者的电离层延迟是共模的做差后自动消掉。但如果你要把伪距偏差的绝对值算准比如拿来做接收机硬件延迟标定那电离层延迟必须修正。我用的是双频消电离层组合做PPP解算得到参考位置这样位置本身不受电离层一阶项影响。然后在伪距偏差计算这一步考虑到L1和B1频率相同直接用原始单频伪距做差分析即可残余的电离层高阶项对两者影响一致不会对偏差曲线造成趋势性污染。对流层延迟和频率无关对L1和B1的影响完全相同所以做偏差对比时可以直接忽略。但做绝对伪距残差分析时还是要用模型修正。我常用Saastamoinen模型加映射函数干分量用天顶静力学延迟湿分量用天顶湿延迟加湿映射函数。TGD修正要分系统讨论。GPS L1 C/A的TGD参数在广播星历里有直接用。北斗B1I的TGD参数同样在北斗广播星历里B1C在北斗的B1C导航电文里也提供TGD但注意B1C的TGD基准和B1I不一样混用会引入系统性偏差。实测中我遇到过有人拿B1I的TGD去修正B1C的伪距结果偏差曲线整体平移了近两米这个错误在数据处理阶段很难发现只能在结果分析时通过与已知坐标的对比暴露出来。3.4 实测数据对比表一组典型的L1/B1偏差统计结果下面放一组我在开阔郊外实测24小时的统计结果接收机为某测量型双频板卡天线为测量型扼流圈天线采样率30秒截止高度角5度PPP解算位置作为参考真值统计项GPS L1 C/A北斗B1I北斗B1C参与统计卫星数241814伪距偏差均值米0.3260.508-0.214伪距偏差标准差米0.4520.6180.537最大偏差绝对值米2.1862.9752.438高度角30度时均值米0.1580.412-0.115高度角30度时均值米0.4790.639-0.372从这组数据可以读出几个信息不同信号在均值上存在系统性差异B1C和L1之间差了约0.54米这个偏差如果不做修正直接融合位置域就会出现明显跳变标准差和高度角强相关低高度角下伪距偏差明显放大说明多径和残余电离层误差是主要贡献项B1I的均值比L1 C/A大了约0.18米这个量级可能来自B1I信号体制本身或星端TGD残差。需要再次说明这只是单台接收机、单天线的统计结果不代表所有设备的普遍规律。不同接收机前端滤波器设计和不同天线的相位中心特性会直接影响偏差值。因此实测分析的核心目的不是得到一组通用常数而是为你的特定设备组合建立偏差档案。4. 常见问题与排查技巧实录伪距偏差实测的技术栈不难真正考验人的是排查问题的能力。下面把我这几年遇到最多的四类问题一次性讲清楚希望能帮你在外场少走几个弯路。4.1 偏差曲线出现周期性波动先查多径而不是接收机周期性波动是最常见的伪距偏差异常现象。表现为偏差曲线呈现正弦或类似正弦的起伏周期在几十秒到几分钟不等。新手第一反应往往是接收机有问题或者是卫星钟差修正没做对但我的经验是先查天线周围的情况。水面、大面积平整屋顶、金属围栏都会产生镜面反射。反射信号比直射信号晚到达接收机多径误差以正弦形式叠加在伪距上。水面反射的特征是低高度角卫星特别严重而且当卫星高度角变化时多径误差的振荡频率会跟着变化。排查方法很直接把天线搬到空旷草地或者把天线升高看偏差曲线是否变平滑。还有一种隐蔽的多径源是天线自身和它的安装支架。天线离金属杆太近金属杆会产生散射这种多径随天线方位角变化而变且不太容易通过移动天线位置来排除。我的做法是给天线加装一个地面扼流环或者加大天线到金属结构件的距离至少要有半波长的间距。4.2 单颗卫星的伪距偏差跳变显著先检查星历和钟差修正有时候你会发现大部分卫星的偏差曲线都很稳定突然某颗卫星的偏差曲线跳了很大一截。这类问题多半出在星历和卫星钟差修正上。检查广播星历里的TGD参数是否被正确使用。我遇到过一次北斗GEO卫星的B1C偏差曲线整体跳了1.8米排查到最后一查卫星播发的TGD参数和精密星历的估计值差了将近7纳秒。广播星历的TGD在正常情况下是精确的但偶尔会有跳变或异常处理时应该以精密星历的估计值为准。卫星钟差在广播星历里是用多项式拟合播发的拟合残差在毫秒级都是正常的换算到伪距就是几十厘米的误差。卫星钟差参数更新时刻前后多项式拟合的边界效应明显容易出现跳变。处理方式是在钟差参数切换时刻前后人为剔除一段数据不要用跨越切换点的连续弧段做偏差统计。4.3 双系统融合定位出现固定偏移检查接收机内部延迟校准这是工程应用中最常见的问题单系统定位精度正常双系统融合时位置出现一个固定的偏移而且这个偏移不随时间和环境变化是一个常量。这种情况十有八九是接收机内部延迟校准没做好。接收机的L1和B1信号在射频前端、AD采样、基带处理链路中经过的延迟不完全相同这个硬件延迟差是出厂时校准的。校准参数存在接收机固件的配置文件里。如果你拿到一台二手设备或者设备刷过非官方固件校准参数可能丢失或错误导致两个频段的伪距观测值之间存在一个固定的系统差。验证方法也不复杂在同一位置做两个静态观测时段一个时段用出厂默认配置另一个时段把接收机做一次冷启动并恢复出厂设置对比两个时段的偏差曲线。如果偏差曲线整体平移说明内部延迟校准参数有问题需要送厂家重新标定。如果偏差曲线形态完全一致说明问题不在这里继续往下查天线相位中心。4.4 关于载波同步仿真在L1/B1研究中的延伸应用做伪距偏差分析时很多人会忽略接收机基带信号的同步过程。其实COTAS环载波跟踪辅助码环的跟踪精度直接影响伪距测量值。我在用MATLAB做L1/B1信号仿真时试过COTAS环核心是载波环NCO输出的频率用以辅助码环的码率估计载波相位变化率被转换为码相位变化率这样码环的带宽可以压窄伪距噪声更小。这类仿真对理解伪距偏差很有帮助。在仿真里你可以精确控制信噪比、多径、电离层延时观察不同环路参数对伪距偏差的影响。我用COTAS环做过一个实验把码环带宽从2Hz降到0.5Hz伪距观测值的标准差下降了一半但动态响应能力显著变差。这个权衡在实测数据分析中同样存在——有些接收机的伪距偏差标准差偏大不一定是硬件差可能是基带环路参数配置偏动态牺牲了静态精度。5. 结果解读与工程应用建议数据处理结束后你手上有一堆偏差统计结果但测出来了和用起来之间还有一步距离。这一节讲清楚如何把这些数据变成工程上可用的东西。5.1 偏差档案的建立与更新策略不要指望测一次偏差就能一劳永逸。接收机内部延迟会随温度漂移天线相位中心会随老化发生变化卫星的TGD参数在每次更新后也会有细微变化。我的做法是新设备到货时做一次24小时基线观测建立初始偏差档案之后每三个月复测一次每次固件升级后必须复测。偏差档案里至少记录以下内容接收机型号和固件版本、天线型号和序列号、观测日期和时间、期望位置坐标、每个频段的伪距偏差均值和标准差、偏差随高度角变化的拟合多项式系数。记录越详细以后排查问题越容易。顺便提一个实用技巧如果你经常在同一个区域做测试可以在测试点留下一个已知坐标的永久控制点标记。每次过去架好天线直接开测省掉PPP事后处理的等待时间。PPP解算虽然精度高但需要下载精密星历和钟差文件处理时间长在有已知控制点的场景下用已知坐标做参考真值效率翻倍。5.2 将伪距偏差用于双系统融合定位校准在双系统融合定位时伪距偏差的直接应用方式是作为系统间偏差参数在接收机钟差的状态向量里额外增加一个偏移量。具体做法在GNSS定位的卡尔曼滤波器或最小二乘解算器里把接收机钟差分成两个状态——一个对应GPS系统一个对应北斗系统两者之间的差值就是系统间偏差。这个差值可以在初始化阶段用你测得的伪距偏差均值来赋值在滤波过程中通过观测值持续估计和更新。如果不想动滤波器的状态向量还有一种更工程化的做法在进入解算器之前直接把北斗的伪距观测值扣除你测得的偏差平均值让两个系统的伪距对齐到同一个基准。这种做法简单直接但当前提是偏差在空间和时间上保持稳定如果你的作业场景是在城市峡谷或树林里多径严重导致偏差波动大这种硬编码的修正方式就不够用了。5.3 结合L1/B1特性的双频联合定位增强双频联合定位的价值在于电离层延迟的直接消除。GPS L1和北斗B1频率相同无法构成消电离层组合所以L1/B1并不是天然的双频组合。真正有代表性的双频组合是GPS L1/L5和北斗B1/B2。但在L1/B1框架下联合分析依然有工程价值。一个被低估的应用是L1/B1的伪距偏差差分用于接收机健康监测。由于两个频段共用一个射频前端的大部分链路如果接收机前端出现异常L1和B1的伪距偏差会同时跳变但跳变方向和幅度可能不同。通过监控两个频段的偏差差值可以及时发现前端故障这个比单频段的信噪比监测更敏感。对于需要L1/B1联合做高精度定位的场景我更推荐的处理方式是将L1和B1的载波相位观测值一起做双频模糊度解算利用两者频率相同、电离层延迟相同的特性构建一种特殊的双频组合来抑制多径。实测中这种组合在开阔环境下可以将静态定位精度提升到厘米级效果接近半波长整周模糊度固定的水平但在多径环境下增益会明显下降。写在最后一点个人经验伪距偏差实测这个方向表面上是测数据、做统计本质上是在理解你的设备、你的天线、你所在的环境。我见过很多人在算法层面反复调试滤波器参数最后定位精度上不去原因却是天线的相位中心偏差没校准。我也见过有人花大价钱买了测量级接收机结果在楼群里测了一晚上数据低高度角卫星的多径严重到让伪距偏差统计完全失真。根据我的个人经验做这类测试最值钱的操作永远是先控制变量、再做统计处理。天线固定、环境固定、接收机固件版本固定唯一变化的变量才是你要分析的频点差异。数据和图表只是展现形式真正的功夫在架设天线前的场地勘察和数据处理前对每一个误差源的理解。希望这篇文章能帮你少走我走过的那些弯路在一开始就把伪距偏差这个坑填平。
返回列表