4. 多路径效应深度解析:多路径的产生机制、反射与衍射、城市峡谷效应
多路径效应,说白了就是卫星信号不是直线到达你的接收机,而是“绕了路”。我刚开始做车载定位时,总觉得天线装好了就万事大吉。结果有一次测试,车停在空旷广场上,定位却突然跳了十几米。查了半天,原来是旁边一个金属岗亭反射了信号。嗯,从那以后我再也不敢小看多路径了。
4.1 多路径的产生机制
卫星信号从两万公里外传来,本来是干净的直达波。但遇到建筑物、地面、水面、车辆外壳,就会发生反射或衍射。接收机天线如果同时收到直达波和反射波,两个波叠加后,码相位和载波相位都会变形。
为什么会变形?因为反射波比直达波多走了一段路。这段多出来的路程,会让伪距测量值偏大或偏小。偏大时定位点往外漂,偏小时往里吸。你想想看,如果反射波比直达波强,接收机甚至可能锁定在反射波上——那定位就直接崩了。
4.2 反射与衍射:两种路径畸变
反射和衍射,虽然都是多路径,但表现完全不同。我习惯把它们分开看。
4.2.1 反射(Specular Reflection)
反射发生在光滑表面:玻璃幕墙、静止水面、金属板。信号像光一样,入射角等于反射角。反射波能量损失小,有时只比直达波弱 3-6 dB。这种强反射最容易导致接收机失锁或产生大的伪距偏差。
| 反射面类型 | 典型场景 | 信号衰减 | 危害程度 |
|---|---|---|---|
| 玻璃幕墙 | CBD 高楼区 | 3-6 dB | 高 |
| 静止水面 | 湖边、河边 | 2-5 dB | 中高 |
| 金属车身 | 停车场、拥堵路段 | 4-8 dB | 高 |
| 湿沥青路面 | 雨后道路 | 6-10 dB | 中 |
4.2.2 衍射(Diffraction)
衍射发生在边缘或尖角:楼顶边缘、广告牌边角、山脊线。信号绕过障碍物边缘时,波前发生弯曲。衍射波通常比反射波弱很多,衰减常在 10 dB 以上。但它有一个麻烦——衍射波的方向变化很随机,你很难建模。
我记得有一次在窄巷子里做测试,卫星仰角很低,信号从楼顶边缘衍射下来。接收机一直输出定位,但误差稳定在 8-10 米。用频谱仪一看,直达波已经被完全遮挡,接收机锁的根本就是衍射波。
4.3 城市峡谷效应
城市峡谷,就是两边高楼夹着一条窄路。卫星信号从头顶下来,但低仰角的卫星要么被楼挡住,要么被楼反射。结果就是:可见卫星数量不少,但大部分信号都带有多路径。
我做过一个统计:在典型城市峡谷中,仰角低于 30° 的卫星,超过 70% 都携带显著多路径。如果你不处理,定位结果就会像喝醉了酒——左右摇摆,偶尔还跳一下。
4.3.1 城市峡谷的典型特征
- 卫星几何分布差: 可见卫星集中在头顶,PDOP 值偏高
- 多路径方向集中: 反射主要来自两侧建筑墙面
- 信号强度波动大: 经过路口时,信号会突然变好或变差
- 伪距误差有偏: 大部分反射波使伪距变长,定位偏向道路一侧
4.3.2 我常用的排查方法
遇到城市峡谷漂移,我一般按这个顺序排查:
- 看 C/N0: 如果某颗卫星 C/N0 正常但伪距残差很大,大概率是多路径
- 看 elevation: 低仰角卫星优先怀疑
- 看 innovation: 卡尔曼滤波的新息序列,多路径会导致新息连续偏大
- 看 SNR 波动: 多路径信号会有规律的 SNR 起伏(几秒到几十秒周期)
4.4 多路径效应的核心逻辑图
下面这张图概括了多路径从产生到影响定位的完整链路。我每次做培训都会先画这张图,因为它把问题说清楚了。
4.5 多路径的时域与频域特征
多路径不是白噪声。它有明显的特征,你掌握了就能快速识别。
4.5.1 时域特征
- 慢变: 反射路径长度变化缓慢,伪距误差在几秒到几十秒内缓慢漂移
- 有偏: 误差均值不为零,通常偏向一个方向
- 相关: 同一颗卫星的伪距误差在时间上高度相关
4.5.2 频域特征
- 低频为主: 多路径误差能量集中在 0.01-0.1 Hz
- 与卫星运动相关: 卫星仰角变化越快,多路径频率越高
- 与反射面距离相关: 反射面越远,多路径周期越长
4.6 多路径的抑制思路
说实话,多路径没有完美的解决方案。但有几个方向值得投入:
| 方法 | 原理 | 效果 | 成本 |
|---|---|---|---|
| 扼流圈天线 | 抑制低仰角反射波 | 好 | 高 |
| 双极化天线 | 区分直达与反射的极化方向 | 较好 | 高 |
| 接收机多路径估计算法 | 估计并补偿多路径误差 | 中等 | 低(软件) |
| 仰角加权 | 降低低仰角卫星权重 | 一般 | 低 |
| 城市峡谷专用地图匹配 | 结合道路拓扑约束 | 好 | 中 |
我个人习惯是:天线选好一点,算法做扎实一点。硬件上花一分钱,软件上能省十分力。但如果你做的是消费级产品,成本敏感,那就必须在算法上下功夫。
多路径效应,说到底就是信号环境的问题。你改变不了环境,就只能改变你的处理方式。理解了它的产生机制和特征,你至少知道问题出在哪,而不是盲目地调参数。