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公里。当然实际没这么夸张,因为测距时间很短,但误差依然不可接受。

注意: 纯ToF测距要求收发双方时钟严格同步。在大多数低成本UWB系统中,这是不现实的。所以纯ToF在实际产品中很少单独使用,更多是作为其他测距方法的基础概念。

3.2 双向测距(TWR):工程界的首选

TWR的出现,就是为了解决时钟同步的问题。

它的思路很巧妙:让两个设备来回对话一次,把时钟偏差抵消掉。

基本流程是这样的:

  1. 设备A发送一个测距请求包,同时记录发送时间戳 t1
  2. 设备B收到这个包,记录接收时间戳 t2
  3. 设备B等待一个固定的延迟(称为回复延迟),然后在 t3 时刻发送回复包
  4. 设备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轮) 完全抑制 高精度、工业级
经验之谈: 如果你的系统对功耗敏感,可以用SS-TWR配合高精度晶振(±5ppm以内)。如果追求极致精度,别犹豫,直接上DS-TWR。我在一个仓储机器人项目中,从SS-TWR切换到DS-TWR后,定位精度从30cm提升到了8cm。

3.3 到达时间差(TDoA):被动定位的利器

TWR虽然好,但它有一个硬伤——需要设备之间来回通信。如果系统里有几百个标签,每个标签都要和基站来回握手,信道很快就塞满了。

TDoA的思路完全不同。

它不测量信号飞行的绝对时间,而是测量同一个信号到达不同基站的时间差。

举个例子:标签发送一个信号,基站A在tA时刻收到,基站B在tB时刻收到。那么时间差Δt = tB - tA。已知光速c,标签到A和B的距离差就是c × Δt。

这个距离差对应一条双曲线。三个基站就能得到两条双曲线,它们的交点就是标签的位置。

这里的关键是:基站之间必须精确同步,但标签不需要和基站同步。标签只管发信号,基站集群负责接收和计算。

我记得有一次做工厂人员定位,客户要求标签电池能用一年。TWR方案根本做不到——标签要频繁收发,功耗下不来。最后用了TDoA,标签只发不收,功耗降到了原来的十分之一,电池续航直接翻了三倍。

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米布一个带天线阵列的基站,配合标签端的简单测距,效果出奇地好。

避坑指南: AoA对天线阵列的布局非常敏感。我曾经因为天线间距计算错误,导致角度偏差达到了15度。后来重新校准了天线相位中心,才把误差降到3度以内。如果你要做AoA,务必先做天线校准。

3.5 四种方法的对比与选择

说了这么多,到底该用哪种?

我整理了一张对比表,你可以根据项目需求来选:

方法 精度 标签功耗 基站同步要求 系统容量 典型场景
ToF 中(受时钟影响大) 高 极高 低 实验室、校准场景
TWR 高(DS-TWR可达10cm) 中高 无 中 机器人、AGV、工业测量
TDoA 高(依赖基站同步) 极低 高 高 人员定位、资产管理
AoA 中高(依赖天线阵列) 低 中 高 单基站定位、隧道、走廊

你想想看,如果你的项目是给机器人做导航,机器人本身不缺电,但对实时性和精度要求极高——那TWR(特别是DS-TWR)就是首选。如果是做几百人的工厂定位,标签要戴在安全帽上,电池越小越好——那TDoA才是正解。

没有最好的方案,只有最合适的方案。

3.6 一张图看懂四种测距原理

下面这张SVG图,把四种方法的核心逻辑画出来了。你可以对照着看,理解它们之间的区别。

UWB四种测距/定位原理对比 ToF 飞行时间 A发 → B收 单程时间 × 光速 需要时钟同步 精度受晶振影响大 很少单独使用 TWR 双向测距 A↔B 来回对话 消除时钟偏差 SS-TWR: 2次消息 DS-TWR: 4次消息 精度可达10cm TDoA 到达时间差 标签发 → 多基站收 测量时间差 基站需精确同步 标签功耗极低 适合大量标签 AoA 到达角度 天线阵列测相位差 计算信号方向 需天线校准 可单基站定位 结合TWR/TDoA使用 选择建议 • 高精度 + 少量标签 → TWR(DS-TWR) • 低功耗 + 大量标签 → TDoA • 单基站定位 / 狭窄空间 → AoA + TWR 或 AoA + TDoA 测距流程对比(以TWR为例) A 发送请求 B 接收并回复 A 接收回复 计算 ToF 和距离 ToF = ((t4 - t1) - (t3 - t2)) / 2

嗯,这张图基本把四种方法的定位说清楚了。你如果仔细看,会发现TWR和TDoA是目前工业界用得最多的两种。AoA则是一个很好的补充,特别是在基站部署受限的场景下。

好了,这一章的内容就到这里。理解了这些测距原理,后面讲参数调优的时候,你就能明白每个参数到底在影响什么——是影响时间测量的精度,还是影响角度估计的稳定性。这些东西,心里有数了,调参才不会盲目。