4. 可用性评估:卫星可见性分析、信号遮挡场景测试、高动态环境可用性、城市峡谷场景测试、可用性指标计算

可用性评估,说白了就是回答一个问题:导航系统到底能不能用?

我做了这么多年导航系统测试,见过太多“理论上能用,实际上一塌糊涂”的案例。你想想看,卫星信号被高楼挡住、飞机做剧烈机动、车辆钻进隧道……这些场景下,系统还能不能给出可靠的位置?这就是可用性评估要解决的问题。

4.1 卫星可见性分析

卫星可见性,是可用性的基础。没有足够的卫星,一切都是空谈。

我个人习惯,先做理论可见性分析。用星历数据,结合接收机的位置和时间,算出理论上能看到多少颗卫星。这里有个关键点:截止仰角的设置。

经验值:

  • 开阔环境:截止仰角 5°-10°
  • 城市环境:截止仰角 15°-25°
  • 高动态环境:截止仰角 10°-15°

为什么这么设?我在项目中遇到过,把截止仰角设得太低(比如 0°),结果卫星信号被地面反射干扰,定位误差直接飙到几十米。设得太高呢,又可能丢掉有用的卫星。

实际测试时,我会用天空图来记录卫星分布。嗯,这里要注意:GDOP(几何精度因子)比卫星数量更重要。有时候 8 颗卫星挤在一起,还不如 4 颗分布均匀的卫星效果好。

// 卫星可见性分析伪代码
function analyzeSatelliteVisibility(ephemeris, receiverPos, time, cutoffElevation) {
    let visibleSatellites = [];
    for (let sat of ephemeris) {
        let elevation = calculateElevation(sat, receiverPos, time);
        if (elevation >= cutoffElevation) {
            visibleSatellites.push(sat);
        }
    }
    return visibleSatellites;
}

4.2 信号遮挡场景测试

信号遮挡,是导航系统最大的敌人之一。我曾经在深圳做测试,一条路两边全是 40 层以上的高楼,GPS 信号被挡得死死的,接收机直接“失锁”。

测试场景我一般分三类:

  • 静态遮挡:固定位置的遮挡物,比如建筑物、山体
  • 动态遮挡:移动的遮挡物,比如高架桥、隧道
  • 部分遮挡:树叶、电线杆等小物体造成的间歇性遮挡

我的测试技巧:

用信号模拟器生成遮挡场景,比实际路测效率高得多。你可以设置不同遮挡角度、遮挡时长,反复测试系统的重捕获能力。

实际测试时,我会记录信号中断次数重捕获时间。这两个指标直接反映了系统在遮挡环境下的可用性。

4.3 高动态环境可用性

高动态环境,说白了就是接收机在快速运动、剧烈机动时的表现。我测试过战斗机、导弹、高速列车……这些场景下,普通接收机根本扛不住。

核心问题有两个:

  1. 多普勒频移:速度越快,频移越大,接收机需要快速调整
  2. 信号跟踪:剧烈机动可能导致信号失锁

注意:

高动态环境下,传统 GPS 接收机的跟踪环路带宽需要动态调整。带宽太窄,跟不上信号变化;带宽太宽,噪声太大。这是个两难问题。

我记得有一次测试高速列车,时速 350 公里,接收机在隧道出口处频繁失锁。后来发现是信号强度变化太快,AGC(自动增益控制)跟不上。解决方案是优化了 AGC 的响应时间。

测试指标我一般关注:

  • 最大可承受加速度(通常要求 > 10g)
  • 速度跟踪精度(通常要求 < 0.1 m/s)
  • 失锁后重捕获时间(通常要求 < 1s)

4.4 城市峡谷场景测试

城市峡谷,是导航系统的“噩梦”。高楼林立,信号反射、遮挡严重。我做过北京国贸、上海陆家嘴、香港中环的测试,每个地方都有自己的“脾气”。

城市峡谷的核心问题:

  • 多径效应:信号反射导致测距误差
  • 信号衰减:建筑物遮挡导致信号强度下降
  • 卫星几何分布差:可见卫星集中在头顶,GDOP 很差

测试方法:

我建议用“分段测试法”。把城市峡谷路段分成若干段,每段 50-100 米,分别记录定位精度、可用卫星数、信号强度。这样能精确定位问题路段。

实际测试中,我会用信号强度热力图来展示结果。嗯,这个图能直观地看出哪些区域信号差,哪些区域信号好。

4.5 可用性指标计算

可用性指标,是评估的最终输出。我常用的指标有:

指标 定义 典型要求
时间可用性 定位可用时间 / 总测试时间 > 99.9%
空间可用性 可用区域面积 / 总测试区域面积 > 95%
精度可用性 满足精度要求的时间 / 总测试时间 > 99%
完好性可用性 系统能检测出故障的时间 / 总测试时间 > 99.9%

计算时要注意:可用性不是简单的“有信号就行”。我见过很多系统,信号是有的,但精度差得离谱,这种“可用”其实是“不可用”。

// 可用性指标计算示例
function calculateAvailability(testData, accuracyThreshold) {
    let totalSamples = testData.length;
    let validSamples = 0;
    
    for (let sample of testData) {
        if (sample.positionError < accuracyThreshold) {
            validSamples++;
        }
    }
    
    return validSamples / totalSamples * 100; // 百分比
}

我的经验:

可用性评估不能只看平均值。我曾经测试一个系统,平均可用性 99.5%,但最差情况下只有 60%。所以一定要看最差情况概率分布

知识体系总览

下面这张图,是我梳理的可用性评估核心逻辑。你看一眼就能明白整个评估框架:

可用性评估知识体系 卫星可见性分析 截止仰角设置 GDOP 分析 信号遮挡场景 静态/动态遮挡 重捕获时间 高动态环境 多普勒频移 跟踪环路带宽 城市峡谷场景 多径效应 信号衰减 可用性指标计算 时间可用性 · 空间可用性 · 精度可用性 评估结论 系统可用 / 部分可用 / 不可用 图:可用性评估核心逻辑框架

这张图把整个可用性评估串起来了。从四个测试场景出发,最终汇聚到指标计算和评估结论。你想想看,每个场景的测试数据,最后都要落到指标上,才能说清楚系统到底行不行。

最后提醒一句:

可用性评估不是一次性工作。系统升级、环境变化、卫星星座更新……这些都会影响可用性。我建议定期复测,至少每季度一次。


公众号:蓝海资料掘金营,微信deep3321