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 指纹定位:离线建库,在线匹配
指纹定位的思路不一样。它不依赖物理模型,而是靠“信号地图”。
分两步:
- 离线阶段:在目标区域逐点采集RSSI向量,建立指纹库。每个位置对应一组信号特征。
- 在线阶段:实时采集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)和经验模型类(指纹)。物理模型类的漂移主要来自信道环境,经验模型类的漂移主要来自指纹库老化。实战中,我倾向于把两类技术融合,取长补短。