4. 定位精度评价体系

说到UWB定位,测距是根基。不管你用哪种定位算法,最终都要落到“距离”或者“角度”这两个物理量上。我最早接触UWB时,以为测距就是发个信号算个时间差,后来踩了不少坑才明白——原理看似简单,工程实现全是细节。

这一章,咱们把三种主流测距原理掰开揉碎讲清楚。TOF、TDOA、AOA,还有工程上最常用的双向测距优化。你想想看,为什么同一个UWB模块,有人能跑到10厘米精度,有人只能做到1米?差距就在这些原理的理解和优化上。

核心观点: 测距精度不是靠硬件堆出来的,而是靠对原理的深刻理解和工程细节的把控。选对测距方式,比盲目追求高采样率更重要。
UWB测距原理知识体系 UWB测距原理 TOF 测距 TDOA 测距 AOA 测距 单边双向测距 (SS-TWR) 双边双向测距 (DS-TWR) 到达时间差定位 基站间时钟同步 相位差测角 天线阵列设计 双向测距优化 → 消除时钟误差

4.1 TOF测距原理——最直观的时间差

TOF,全称Time of Flight,飞行时间测距。说白了就是测量信号从A到B飞了多久,乘以光速,距离就出来了。公式很简单:距离 = 光速 × 飞行时间。

但问题来了——光速是3×10⁸ m/s,1纳秒信号只能走30厘米。你要做到10厘米精度,时间测量误差必须控制在333皮秒以内。嗯,这就是UWB为什么需要GHz级别的带宽,带宽越宽,时间分辨率越高。

我的经验: 早期用DW1000做TOF测距时,我忽略了天线延迟校准,结果测出来的距离总是偏大30-40厘米。后来才发现,天线本身会引入几十纳秒的延迟。这个坑,我替你们踩过了。

TOF测距有两种实现方式:

  • 单边双向测距(SS-TWR):设备A发一个poll包,设备B回一个response包。A记录从发出到收到的时间差,减去B的处理时间,除以2就是单程时间。简单,但受时钟漂移影响大。
  • 双边双向测距(DS-TWR):在SS-TWR基础上,B也发一个包,A再回一个。这样能消除时钟漂移误差。我建议工程上至少用DS-TWR,除非你的应用对功耗极其敏感。

4.2 TDOA测距原理——不需要标签发时间戳

TDOA,Time Difference of Arrival,到达时间差。它不直接测距,而是测同一个信号到达不同基站的时间差。你想想看,如果信号同时到达两个基站,那标签就在两个基站的垂直平分线上。如果有三个基站,就能算出二维位置。

TDOA最大的优势是——标签只需要发一次信号,不需要和基站来回握手。这意味着标签功耗极低,而且可以支持海量标签。我在做仓储物流项目时,一个区域同时跑200多个标签,用的就是TDOA方案。

注意: TDOA对基站间时钟同步要求极高。1纳秒的时钟偏差,就会带来30厘米的定位误差。我见过一个项目,基站用WiFi做时钟同步,结果定位精度惨不忍睹。后来换成有线时钟同步,精度直接提升了一个数量级。

TDOA的典型流程:

  1. 标签广播一个UWB信号
  2. 多个基站同时接收,记录到达时间戳
  3. 主基站收集所有时间戳,计算两两之间的时间差
  4. 根据时间差和基站位置,解算标签坐标

4.3 AOA测距原理——用角度说话

AOA,Angle of Arrival,到达角测距。它不直接测时间,而是测信号到达不同天线时的相位差,从而算出信号来的方向。配合已知的基站位置,通过三角定位就能算出标签位置。

AOA的核心在于天线阵列。两个天线之间的距离d,信号到达的相位差Δφ,角度θ的关系是:Δφ = 2π × d × sin(θ) / λ。λ是信号波长,UWB在4GHz频段时大约7.5厘米。

我个人觉得AOA最大的好处是——只需要一个基站就能定位。这在某些场景下非常实用,比如隧道、走廊这种狭长空间。但AOA对天线阵列的校准要求极高,稍微有点相位偏差,角度就偏了。

测距方式 精度 功耗 基站数量 时钟同步要求 典型场景
TOF (DS-TWR) 10-30 cm 高 ≥3 低 工业定位、机器人
TDOA 15-50 cm 低 ≥3 极高 仓储、人员定位
AOA 20-60 cm 中 ≥1 低 隧道、走廊

4.4 双向测距优化——消除时钟误差的实战技巧

前面提到DS-TWR能消除时钟漂移,但具体怎么优化?我直接上干货。

标准DS-TWR流程:

设备A: 发送Poll包,记录发送时间 T1
设备B: 接收Poll包,记录接收时间 T2
设备B: 发送Response包,记录发送时间 T3
设备A: 接收Response包,记录接收时间 T4
设备A: 发送Final包,记录发送时间 T5
设备B: 接收Final包,记录接收时间 T6

单程时间 = [(T4 - T1) - (T3 - T2)] / 2

但这里有个问题——T1到T4这段时间,A和B的时钟可能已经漂移了。DS-TWR通过引入T5和T6,能计算出时钟漂移率,然后修正。

优化后的DS-TWR公式:
T_prop = (T_round1 × T_round2 - T_reply1 × T_reply2) / (T_round1 + T_round2 + T_reply1 + T_reply2)
其中T_round1 = T4 - T1, T_reply1 = T3 - T2, T_round2 = T6 - T3, T_reply2 = T5 - T4

这个公式能有效消除时钟漂移带来的误差。我在实际项目中测试过,优化前和优化后的精度差距能达到5-10倍。尤其是在温度变化大的环境中,时钟漂移更明显,这个优化几乎是必须的。

避坑指南: 我曾经在DS-TWR实现中忽略了“处理时间”的抖动。B设备从收到Poll到发出Response,中间有MCU处理延迟。如果这个延迟不稳定,测距结果就会跳变。解决办法是——用硬件时间戳,或者用RTOS保证处理时间的确定性。

另外,还有一个容易被忽略的点——多径干扰。UWB信号在室内会反射,导致接收端收到多个路径的信号。如果首径(直射路径)被遮挡,接收机可能锁定在反射路径上,测距结果就会偏大。我建议在接收端做首径检测算法,或者用信道冲激响应(CIR)数据来识别首径。

嗯,测距原理这部分就讲到这里。记住一句话:没有完美的测距方式,只有最适合你场景的方案。TOF精度高但功耗大,TDOA支持海量标签但时钟同步难,AOA单基站就能定位但角度校准麻烦。选型时,先想清楚你的核心诉求是什么。