2. 定位技术基础回顾:RSSI、TOA/TDOA、AOA、指纹定位原理简述

做无线定位排查,绕不开这几种基础技术。说实话,很多漂移问题的根因,就是对这些原理理解不透。我见过不少工程师,拿着RSSI数据硬怼,却不知道它天生就抖。今天咱们把这四种技术过一遍,重点讲它们为什么会产生漂移。

2.1 RSSI:最常用,也最不靠谱

RSSI(Received Signal Strength Indicator),说白了就是接收信号强度。原理很简单:信号在空气中传播会衰减,距离越远,强度越低。我们根据强度反推距离。

公式长这样:

RSSI(d) = RSSI(d₀) - 10·n·log₁₀(d/d₀) + Xσ

其中n是路径损耗因子,Xσ是高斯噪声。理想情况下,这个公式成立。但实际环境呢?

核心问题:RSSI受多径、遮挡、天线方向性影响极大。同一个位置,手机转个方向,RSSI能差10dBm以上。

我记得有一次在仓库做定位测试,AP装在货架顶上。工人推着叉车经过,RSSI瞬间掉了15dBm。定位点直接跳到隔壁区域去了。这就是典型的RSSI漂移。

我的习惯:用RSSI做定位时,一定要做滤波。我一般用滑动窗口均值+卡尔曼滤波,能把抖动从±5m压到±2m左右。但别指望它能到亚米级。

2.2 TOA/TDOA:时间差里的门道

TOA(Time of Arrival)测的是信号从发射到接收的绝对时间。TDOA(Time Difference of Arrival)测的是信号到达两个基站的时间差。

TOA需要精确的时间同步。基站和标签必须对时,误差1ns,距离就差30cm。TDOA只要求基站之间同步,标签不需要,实现起来容易些。

参数 TOA TDOA
同步要求 基站+标签 仅基站
定位精度 高(理想) 高(理想)
抗多径 弱 弱
部署成本 高 中

我曾经在UWB项目中遇到过一个问题:四个基站,TDOA算出来的位置一直在飘。排查了三天,最后发现是其中一个基站的时钟晶振温漂太大。温度变了5度,时间偏差就累积到纳秒级。嗯,这里要注意:时间同步不是配好了就完事,得持续监控。

避坑指南:我曾经在室外开阔场地测试TDOA,精度能做到10cm以内。但一进室内,多径反射导致首径检测错误,定位点直接偏了3米。所以,TOA/TDOA的关键不是算法,而是首径检测的可靠性。

2.3 AOA:角度里的陷阱

AOA(Angle of Arrival)通过天线阵列测量信号到达的角度。两个基站的角度一交叉,位置就出来了。

原理不复杂,但实现起来坑很多。天线阵列的间距、校准、环境反射,都会影响角度测量精度。

  • 天线间距:通常要求半波长。2.4GHz下,间距约6.25cm。做小了,角度分辨率不够;做大了,出现栅瓣。
  • 校准:每根天线的相位延迟必须一致。差1度,在10米外就是17cm的偏差。
  • 多径:反射信号从不同方向来,AOA会测到多个角度。你想想看,该信哪个?

我做过一个蓝牙AOA的项目,在会议室里测试,定位精度1米左右。但旁边放了个金属文件柜,角度偏差直接到了15度。后来我们加了反射识别算法,把非直达径的角度过滤掉,才把精度拉回来。

2.4 指纹定位:离线建库,在线匹配

指纹定位的思路不一样。它不依赖物理模型,而是靠“信号地图”。

分两步:

  1. 离线阶段:在目标区域逐点采集RSSI向量,建立指纹库。每个位置对应一组信号特征。
  2. 在线阶段:实时采集RSSI,跟指纹库匹配,找最相似的位置。

匹配算法常用KNN(K近邻)或概率模型。KNN就是找指纹库里最像的K个点,取平均。

# 简化版KNN指纹匹配
def fingerprint_localization(rssi_online, fingerprint_db, k=3):
    distances = []
    for fp in fingerprint_db:
        dist = euclidean_distance(rssi_online, fp['rssi_vector'])
        distances.append((dist, fp['position']))
    distances.sort(key=lambda x: x[0])
    nearest = distances[:k]
    return mean([pos for _, pos in nearest])

指纹定位的致命弱点:环境变了,指纹库就废了。AP位置移动、家具重新摆放、人员密度变化,都会导致RSSI变化。我见过一个商场,装修后指纹定位精度从2米掉到8米,因为原来的指纹库全失效了。

指纹定位的漂移,主要来自指纹库老化。我曾经建议客户每季度更新一次指纹库,但运维成本太高,最后他们改用了混合方案:指纹+惯导,用惯导补偿指纹的漂移。

2.5 四种技术对比

技术 精度 抗干扰 部署难度 漂移主因
RSSI 3-10m 差 低 多径、遮挡
TOA/TDOA 0.1-1m 中 高 时钟同步、多径
AOA 0.5-3m 中 中 天线校准、反射
指纹 1-5m 弱 中 环境变化

你想想看,没有一种技术是完美的。实际项目中,我很少只用单一技术。RSSI便宜但飘,TDOA准但贵,指纹灵活但维护累。怎么做取舍?后面章节会展开讲。

2.6 知识体系总览

下面这张图,把这四种定位技术的核心逻辑、优缺点和漂移来源串起来了。建议你保存下来,排查漂移问题时对照着看。

无线定位技术基础与漂移来源 无线定位技术基础与漂移来源 RSSI 信号强度→距离 TOA / TDOA 时间→距离/距离差 AOA 角度→交叉定位 指纹定位 信号地图→匹配 多径 / 遮挡 RSSI抖动 ±10dB 时钟同步 / 首径 1ns → 30cm误差 天线校准 / 反射 1° → 10m外17cm 环境变化 指纹库老化 物理模型类 RSSI / TOA·TDOA / AOA 依赖信号传播模型,受环境影响大 精度上限由硬件和信道决定 经验模型类 指纹定位 依赖离线指纹库,环境变化需重建 精度受采样密度和匹配算法影响 核心结论 没有万能技术,漂移是必然的。理解每种技术的局限,才能有效排查。 实战方向:多技术融合 + 环境感知

这张图把四种技术分成了两类:物理模型类(RSSI、TOA/TDOA、AOA)和经验模型类(指纹)。物理模型类的漂移主要来自信道环境,经验模型类的漂移主要来自指纹库老化。实战中,我倾向于把两类技术融合,取长补短。