3. UWB测距原理:飞行时间(ToF)测距、双向测距(TWR)、到达时间差(TDoA)、到达角度(AoA)定位
聊UWB性能优化,绕不开最核心的东西——测距原理。
很多人一上来就调参数,什么PRF、数据速率、脉冲重复频率,调了半天发现精度还是上不去。为什么?因为没搞清楚底层用的是哪种测距方式。不同的原理,对参数的敏感度完全不一样。
我个人习惯,拿到一个UWB方案,第一件事就是问:你们用的是TWR还是TDoA? 这个问题直接决定了后续的优化方向。
3.1 飞行时间(ToF)测距:最直观的思路
ToF,说白了就是测量信号在空中飞了多久。
光速是已知的,时间乘以光速再除以2,就是距离。公式很简单:
距离 = (ToF × 光速) / 2
但这里有个坑——时钟同步。
你想啊,A设备发出信号,B设备收到信号。如果A和B的时钟不同步,A说“我1点整发的”,B说“我1点零3秒收的”,这3秒的误差里,有多少是信号飞行时间,有多少是时钟偏差?
我曾经在一个项目中,直接用ToF测距,结果发现距离跳动超过2米。排查了三天,最后发现是两个节点的晶振频率偏差达到了50ppm。50ppm什么概念?每秒钟偏差50微秒,换算成距离就是15公里。当然实际没这么夸张,因为测距时间很短,但误差依然不可接受。
3.2 双向测距(TWR):工程界的首选
TWR的出现,就是为了解决时钟同步的问题。
它的思路很巧妙:让两个设备来回对话一次,把时钟偏差抵消掉。
基本流程是这样的:
- 设备A发送一个测距请求包,同时记录发送时间戳 t1
- 设备B收到这个包,记录接收时间戳 t2
- 设备B等待一个固定的延迟(称为回复延迟),然后在 t3 时刻发送回复包
- 设备A收到回复包,记录接收时间戳 t4
然后A就可以算出飞行时间:
ToF = ( (t4 - t1) - (t3 - t2) ) / 2
你看,这里面的时钟偏差被巧妙地减掉了。因为t4-t1和t3-t2用的是各自的本地时钟,偏差方向一致,相减之后就被抵消了。
我刚开始做UWB的时候,觉得TWR已经够完美了。直到有一次做高精度定位,发现测距值总是偏大一点点。后来查资料才发现,单边TWR(SS-TWR)有一个固有误差——它假设了回复延迟是精确已知的,但实际上B的时钟也有偏差,导致t3-t2这个值并不准确。
解决方案是什么?双边TWR(DS-TWR)。
DS-TWR在SS-TWR的基础上,让B也发一次请求,A再回复一次。这样就有两组时间戳,可以进一步消除时钟偏差的影响。我现在的项目,只要对精度有要求,一律用DS-TWR。
| 类型 | 消息交换次数 | 时钟误差抑制 | 适用场景 |
|---|---|---|---|
| SS-TWR | 2次(1轮) | 部分抑制 | 低精度、低功耗 |
| DS-TWR | 4次(2轮) | 完全抑制 | 高精度、工业级 |
3.3 到达时间差(TDoA):被动定位的利器
TWR虽然好,但它有一个硬伤——需要设备之间来回通信。如果系统里有几百个标签,每个标签都要和基站来回握手,信道很快就塞满了。
TDoA的思路完全不同。
它不测量信号飞行的绝对时间,而是测量同一个信号到达不同基站的时间差。
举个例子:标签发送一个信号,基站A在tA时刻收到,基站B在tB时刻收到。那么时间差Δt = tB - tA。已知光速c,标签到A和B的距离差就是c × Δt。
这个距离差对应一条双曲线。三个基站就能得到两条双曲线,它们的交点就是标签的位置。
这里的关键是:基站之间必须精确同步,但标签不需要和基站同步。标签只管发信号,基站集群负责接收和计算。
我记得有一次做工厂人员定位,客户要求标签电池能用一年。TWR方案根本做不到——标签要频繁收发,功耗下不来。最后用了TDoA,标签只发不收,功耗降到了原来的十分之一,电池续航直接翻了三倍。
- 标签端功耗极低(只发不收)
- 系统容量大(支持大量标签)
- 定位实时性好(基站侧集中计算)
3.4 到达角度(AoA)定位:用方向补精度
ToF、TWR、TDoA本质上都是基于距离的测量。但有时候,距离信息不够用。
比如只有两个基站,用TDoA只能得到一条双曲线,无法唯一确定位置。这时候就需要角度信息来帮忙。
AoA的原理:通过天线阵列接收信号,利用不同天线接收到的信号相位差,计算出信号到达的方向。
UWB做AoA有一个天然优势——脉冲信号带宽极宽,时间分辨率高。这意味着多径效应的影响比窄带系统小得多,角度估计更准确。
实际应用中,AoA通常和TWR或TDoA结合使用。比如:
- AoA + TWR:一个基站同时测距和测角,就能实现单基站定位
- AoA + TDoA:减少所需基站数量,降低部署成本
我曾经在一个隧道定位项目中,隧道只有3米宽,但长度有2公里。如果用TDoA,每隔50米就要布一个基站,成本太高。后来改用AoA+TWR方案,每200米布一个带天线阵列的基站,配合标签端的简单测距,效果出奇地好。
3.5 四种方法的对比与选择
说了这么多,到底该用哪种?
我整理了一张对比表,你可以根据项目需求来选:
| 方法 | 精度 | 标签功耗 | 基站同步要求 | 系统容量 | 典型场景 |
|---|---|---|---|---|---|
| ToF | 中(受时钟影响大) | 高 | 极高 | 低 | 实验室、校准场景 |
| TWR | 高(DS-TWR可达10cm) | 中高 | 无 | 中 | 机器人、AGV、工业测量 |
| TDoA | 高(依赖基站同步) | 极低 | 高 | 高 | 人员定位、资产管理 |
| AoA | 中高(依赖天线阵列) | 低 | 中 | 高 | 单基站定位、隧道、走廊 |
你想想看,如果你的项目是给机器人做导航,机器人本身不缺电,但对实时性和精度要求极高——那TWR(特别是DS-TWR)就是首选。如果是做几百人的工厂定位,标签要戴在安全帽上,电池越小越好——那TDoA才是正解。
没有最好的方案,只有最合适的方案。
3.6 一张图看懂四种测距原理
下面这张SVG图,把四种方法的核心逻辑画出来了。你可以对照着看,理解它们之间的区别。
嗯,这张图基本把四种方法的定位说清楚了。你如果仔细看,会发现TWR和TDoA是目前工业界用得最多的两种。AoA则是一个很好的补充,特别是在基站部署受限的场景下。
好了,这一章的内容就到这里。理解了这些测距原理,后面讲参数调优的时候,你就能明白每个参数到底在影响什么——是影响时间测量的精度,还是影响角度估计的稳定性。这些东西,心里有数了,调参才不会盲目。