系统架构
整个 NTRIP 系统的数据流是这样的:
基站端用 UM982 固定在屋顶,通过 USB 串口连接到一台运行 C# WPF 上位机 的电脑。上位机解析 RTCM 观测数据,通过 TCP 长连接推送到腾讯云服务器。
服务器端运行 Python asyncio Caster + nginx HTTPS 反向代理,把 RTCM 流分发给所有已认证的移动站。
移动端(车辆)通过联网的电脑,使用 NTRIP Client 连接服务器,接收转发的 RTCM 差分数据,再输出给移动端的 UM982,完成 RTK 定位。
测试路线
之前一直在公司附近做短距离测试,基线距离最多三五公里——受限于传统 UHF 电台的传播距离,再远就鞭长莫及了。自建 NTRIP 的想法一直有,但以前对服务器运维、网络编程一窍不通,加上 AI 编程工具还没成熟到能搞定 RTCM 流转发这种偏门场景,所以这个想法一直搁置。
这次把 UM982 基站固定在屋顶,然后开车一路 向西偏北,去往益阳方向,最远到达距离基站约 80km 的位置后返程。测试当天长沙 晴朗多云,气温 35°C+,台风 "巴威" 正在浙江沿海登录,对内陆湖南基本无影响,电离层环境比较典型。
走这条路线的考虑:长沙到益阳之间以丘陵和平原为主,既有城市建筑群、桥梁、树林路段,也有开阔农田,能比较全面地反映实际道路环境下的 RTK 表现。
从轨迹图上看,两条路径基本重合,说明在 80km 的基线距离下,UM982 仍能提供稳定的位置输出。
观察到的现象
RTK 状态保持到了 80km
UM982 在移动站最远端(约 80km 基线)时仍然保持 RTK Fix 状态。这意味着自建 NTRIP 的覆盖半径已经跨入百公里级别,足以覆盖长沙到益阳整个区域。
卫星跟踪:UM982 平均跟踪约 38 颗卫星,多系统(GPS + BDS + GLONASS + Galileo)优势明显。作为对比的参考设备(NovAtel)平均约 32 颗,且连接不稳定,原因还需进一步排查。
桥洞/高架下:经过桥洞或高架下方时,UM982 会短暂掉入 伪距差分 状态,但驶出遮挡区域后能迅速恢复 RTK 固定解。这说明 RTK 对天空视野的依赖是硬性的,卫星信号被遮挡时,载波相位固定解会丢失。
树木密集路段:经过路两侧树木茂密的路段时,也出现了掉浮点解甚至伪距差分的现象。树叶对卫星信号有衰减作用,尤其在多路径效应明显的环境下,RTK 固定解维持困难。
动态 vs 静态:从数据上看,车辆静止时(如红绿灯)位置波动明显小于动态行驶时。动态下的多路径效应、天线姿态变化都会引入额外误差。后续需要单独设计静态对比测试来量化两者的差异。
精度评估的不足:这次测试比较的是移动站输出 vs 参考设备输出,但参考设备本身也是移动的——这只能看一致性,不能代表真实位置精度。后续需要:
- 用基站输出的原始观测数据做反向求解,还原真实位置
- 考虑参考 PSINS 中的 AVP 反演 思路来做后处理定位
- 真正的目标应该是验证厘米级定位精度,而不仅仅是"有没有 RTK"
局限与思考
长沙到益阳,电离层的影响几何?
长沙和益阳直线距离只有约 80km,对于中纬度地区来说,电离层延迟具有较强的空间相关性。这次测试在 80km 处 RTK 仍能固定,部分原因可能是长沙-益阳方向电离层变化不大,差分后残余误差本来就小。但如果下次去 200km+ 的基线,情况可能完全不同。
NTRIP over 4G 不适合航空应用
之前因为某些试验在轻型运动飞机上飞过,距离地面 2000 米时手机信号就已经时有时无。NTRIP 依赖 4G/宽带网络实时传输 RTCM 数据,在高空场景下完全不适用。真正的航空差分方案通常使用:
- Ku 频段数据链:~12-18 GHz,机载卫星通信的主流频段,波束窄、带宽大、不受地面基站覆盖限制。民航客机常用 Ku 波段卫星链路做空地通信,差分修正数据可以通过该链路下发。
- L 频段数据链:~1-2 GHz,穿透性强、天线简单,但带宽有限。典型应用包括海事卫星(Inmarsat)的 L 波段数据服务、北斗短报文、以及航空界的 ADS-B / GNSS 增强系统(如 WAAS/SBAS 本身就是 L 波段)。
- UHF 电台:低空无人机 RTK 常用的 900MHz / 2.4GHz 数传电台,但高度受限、距离短。
简单说,只要你的平台会离开地面超过 500 米,就别指望 4G NTRIP 了,得走卫星数据链。
NovAtel 连接不稳定
同时记录的参考设备(NovAtel)在整个测试过程中连接不够稳定,存在多次数据中断和数据异常。原因可能是设备问题、串口/电源线松动、或上位机软件兼容性。后续需要修复后再做对比测试,否则两个设备的数据无法严格对标。
下一步计划
这次测试暴露了很多问题,但也明确了方向。下一步要做的事:
1. 更远:探索极限基线
覆盖长沙到益阳只是第一步,目标是 150km、200km,看看电离层误差什么时候成为制约瓶颈。
2. 更精:真正的厘米级验证
用基站原始观测数据做后处理差分,计算移动站的真实位置误差。参考 PSINS 的 AVP 反演思路做事后基准恢复,看看自建 NTRIP 到底能不能做到厘米级定位。
3. 更全:双基站组网 + VRS
搞两个基准站,架在不同位置。多套产品同时连接不同的基站数据,在实际测试中比较不同基站下的 RTK 表现。
最终目标是搭建虚拟参考站(VRS),用多基站网解算区域电离层模型,实现更大范围的一致性覆盖。
4. 更直观:网页实时位置可视化
在 GNSS 星座实况 页面上叠加产品实时位置,在地图上看到每个移动站处于什么位置、距离基线多远、当前 RTK 状态。这会是一个大工程,但也是让数据说话的最好方式。