3、UWB测距原理:TOF、TDOA、AOA与精度分析

各位好,我是老李。在UWB定位这个行当里摸爬滚打了快十年,踩过的坑比走过的路还多。今天咱们聊聊UWB测距的核心原理。说白了,UWB能定位,靠的就是测距。距离测不准,后面所有算法都是白搭。

我见过不少项目,方案选型时只看芯片参数,结果现场一测,误差大得离谱。为什么?因为没搞懂测距原理的局限性。这一章,我把三种主流测距方式——TOF、TDOA、AOA——掰开揉碎了讲清楚,再聊聊那些影响精度的“隐形杀手”。

核心观点:UWB定位的精度天花板,90%由测距原理和现场环境决定,只有10%留给算法优化。选对原理,比调参重要得多。

UWB测距定位原理知识体系 UWB测距定位 TOF 飞行时间测距 TDOA 到达时间差 AOA 到达角度 单边双向测距 (SS-TWR) 双边双向测距 (DS-TWR) 基站间时间同步 双曲线交汇定位 相位差测角 (PDOA) 天线阵列布局 测距精度影响因素分析

3.1 TOF测距原理:最朴素的“掐表算距离”

TOF,Time of Flight,飞行时间。原理简单得让人不敢相信:信号从A飞到B,花了多少时间,乘以光速,除以2,就是距离。

公式长这样:

距离 = (信号飞行时间 × 光速) / 2

除以2是因为信号打了个来回。你想想看,A发一个包给B,B收到后立刻回一个包,A记录从发出到收到的时间差,这就是往返时间。单程时间就是它的一半。

但这里有个坑——B的响应时间怎么算?如果B处理慢了,A算出来的距离就偏大。这就是为什么TOF分两种实现方式。

3.1.1 单边双向测距(SS-TWR)

SS-TWR,Single-Sided Two-Way Ranging。A发一个Poll包,B回一个Response包。A记录时间差T_round,减去B的响应时间T_reply,就是信号在空中的飞行时间。

伪代码大概这样:

// 设备A
发送 Poll 包,记录发送时间 T1
等待 Response 包,记录接收时间 T4
T_round = T4 - T1

// 设备B
接收 Poll 包,记录接收时间 T2
发送 Response 包,记录发送时间 T3
T_reply = T3 - T2

// 最终距离
T_prop = (T_round - T_reply) / 2
距离 = T_prop × C

问题在哪?T_reply是B告诉A的,如果B的时钟不准,T_reply就有误差。我做过一个项目,用的廉价晶振,温度一变化,时钟漂移直接导致测距误差超过1米。后来我换了温补晶振,才压到20厘米以内。

避坑指南:SS-TWR对时钟精度极其敏感。我曾经在户外高温环境下测试,晶振漂移导致测距误差达到1.5米。建议:如果成本允许,优先用DS-TWR;如果必须用SS-TWR,请选用±10ppm以内的晶振。

3.1.2 双边双向测距(DS-TWR)

DS-TWR,Double-Sided Two-Way Ranging。说白了就是多打一个来回,用三次消息交换来抵消时钟误差。

流程:A发Poll → B回Response → A再发Final。这样A和B各自记录三个时间戳,最终算出来的飞行时间对时钟漂移不敏感。

公式稍微复杂一点:

T_prop = (T_round1 × T_round2 - T_reply1 × T_reply2) / (T_round1 + T_round2 + T_reply1 + T_reply2)

别被公式吓到。你只要知道:DS-TWR的精度比SS-TWR高一个数量级。我个人的习惯是,只要不是做玩具级别的项目,一律用DS-TWR。多一次消息交换,换来的是稳定可靠的测距结果,值。

经验之谈:DS-TWR虽然精度高,但功耗也高。如果做电池供电的标签,建议在低功耗模式下用SS-TWR做粗测,需要精确定位时再切到DS-TWR。我在一个仓储项目中就是这么干的,标签续航从3天延长到了7天。

3.2 TDOA定位原理:只算时间差,不算绝对时间

TDOA,Time Difference of Arrival。它不测信号飞了多久,而是测同一个信号到达不同基站的时间差。

举个例子:标签发一个信号,基站A在T1时刻收到,基站B在T2时刻收到。时间差Δt = T2 - T1。乘以光速,就是标签到两个基站的距离差。

一个距离差对应一条双曲线。两个距离差(需要三个基站)就能确定一个交点——那就是标签的位置。

TDOA最大的好处是:标签只需要发一次信号,不需要和基站来回握手。这意味着标签功耗极低,而且可以支持海量标签同时定位。

但代价是什么?基站之间必须严格时间同步。我记得在做一个大型体育场馆项目时,用了光纤+IEEE 1588协议做同步,精度做到了纳秒级。如果同步误差超过10纳秒,定位误差就会超过3米。

对比项 TOF TDOA
标签功耗 高(需来回通信) 低(只发不收)
基站同步要求 低(各自独立) 高(纳秒级同步)
系统容量 中等 高(支持上千标签)
部署复杂度 低 高(需同步网络)
典型场景 工业测距、小范围定位 大型场馆、人员定位

3.3 AOA角度定位:用相位差“看”方向

AOA,Angle of Arrival。它不测距离,测角度。标签信号到达基站时,基站通过天线阵列接收,不同天线收到的信号有相位差,根据相位差就能算出信号来的方向。

具体实现叫PDOA,Phase Difference of Arrival。两个天线间距d,信号波长λ,相位差Δφ,角度θ的关系:

Δφ = 2π × d × sin(θ) / λ
θ = arcsin(Δφ × λ / (2π × d))

一个基站只能测角度,两个基站的角度交汇就能定位。理论上两个基站就够了,比TOF和TDOA都省设备。

但AOA有个硬伤——角度越偏,误差越大。信号从正面来,角度误差小;从侧面来,误差急剧放大。我做过一个测试,当入射角大于60度时,角度误差从1度飙升到5度,对应的定位误差从0.5米变成了2.5米。

注意:AOA对天线布局和安装环境非常敏感。我曾经在金属货架密集的仓库里测试AOA,多径反射导致角度测量完全失效。后来不得不换成TOF方案。如果你要选AOA,请确保现场没有严重的多径干扰。

3.4 测距精度影响因素分析

理论讲完了,咱们聊聊实战。影响UWB测距精度的因素,我总结了五个:

  1. 时钟精度——晶振漂移是最大的误差源。1ppm的晶振漂移,在100米距离上会产生0.3mm的误差?不对,实际上因为TOF是往返测距,误差会累积。我实测过,10ppm的晶振在50米距离上误差约15厘米。
  2. 多径效应——信号反射、绕射导致首径检测不准。UWB虽然抗多径能力强,但在金属环境、墙角、密集货架区,多径仍然会引入10-30厘米的误差。
  3. 非视距(NLOS)——信号穿墙后,速度变慢,TOF算出来的距离偏大。我见过最夸张的案例,穿了一堵30厘米的混凝土墙,测距误差达到2米。
  4. 天线延迟——天线、射频前端、芯片内部都有固定延迟。这个延迟如果不校准,会变成系统性误差。我习惯在产线上做一次天线延迟标定,把每台设备的延迟写入固件。
  5. 温度漂移——温度变化影响晶振频率和电路延迟。户外项目,夏天40度、冬天零下20度,测距误差能差出50厘米。解决办法是加温度补偿算法。

实战建议:如果你在现场发现测距误差忽大忽小,先别急着调算法。拿个频谱仪看看信道有没有干扰,拿个示波器看看天线延迟是否稳定。我见过太多人花两周调算法,最后发现是天线接头松了。

嗯,这一章的内容就到这里。三种测距原理各有优劣,没有银弹。选型时,先搞清楚你的场景:标签数量多不多?功耗要求高不高?环境干不干净?预算够不够?想清楚这些,原理自然就选对了。