3. UWB测距原理:TOF、TWR与PDoA

UWB 能实现厘米级定位,核心就靠三种测距原理。我最早接触 UWB 时,也被这些缩写搞得头晕。后来在几个项目里反复调参、踩坑,才算真正吃透。今天咱们就把 TOF、TWR 和 PDoA 掰开揉碎了讲。

说白了,测距就是测量两个设备之间的距离。UWB 靠的是发射极窄脉冲,时间分辨率极高。你想想看,一个脉冲宽度只有纳秒级,这就能把距离算得很准。

3.1 TOF(飞行时间)测距

TOF 是最直观的方法。设备 A 发一个信号,设备 B 收到后立刻回复。A 记录从发出到收到回复的总时间,减去 B 的处理时间,再除以 2,就是单程飞行时间。乘以光速,距离就出来了。

核心公式:

距离 = (T_round - T_reply) × c / 2

其中 T_round 是总往返时间,T_reply 是 B 的处理延迟,c 是光速(约 3×10⁸ m/s)。

我在一个仓库定位项目里用过 TOF。当时觉得简单,直接上手。结果发现一个问题——两个设备的时钟不同步。A 和 B 的晶振频率有微小偏差,导致 T_reply 测量不准。嗯,这里要注意,TOF 对时钟同步要求极高。

TOF 的优缺点:

  • 优点:实现简单,只需要一次往返通信。
  • 缺点:依赖精确的时钟同步,晶振偏差会直接引入测距误差。
  • 典型场景:基站与标签之间距离较近、时钟精度高的环境。

我曾经踩过的坑:用普通 20ppm 晶振做 TOF 测距,10 米外误差直接飙到 50 厘米。后来换成 1ppm 的温补晶振,才压到 10 厘米以内。时钟精度是 TOF 的命门。

3.2 TWR(双边双向测距)算法

TWR 是 TOF 的升级版。它不要求时钟完全同步,而是通过三次消息交换,把时钟偏差抵消掉。我个人习惯叫它「三次握手测距」。

TWR 的流程:

  1. 设备 A 发送 Poll 消息,记录发送时间 T1。
  2. 设备 B 收到 Poll,记录接收时间 T2,然后回复 Response 消息,记录发送时间 T3。
  3. 设备 A 收到 Response,记录接收时间 T4,再发送 Final 消息,携带 T1、T4 给 B。
  4. 设备 B 收到 Final,结合 T2、T3,计算出飞行时间。

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 = T3 - T2,T_reply2 = T4 - T1(注意这里符号有交叉,实际实现时需按协议定义)。

为什么 TWR 能消除时钟偏差?因为公式里同时用了两个设备的时钟测量值,偏差在乘除运算中被抵消了。我做过对比测试:同样用 20ppm 晶振,TOF 误差 50 厘米,TWR 只有 5 厘米。效果立竿见影。

TWR 的优缺点:

  • 优点:不依赖时钟同步,抗晶振偏差能力强,精度高。
  • 缺点:需要三次消息交换,通信开销大,功耗更高。
  • 典型场景:大多数商用 UWB 定位系统(如 Decawave 方案)都采用 TWR。

我的建议:如果项目对功耗不敏感,优先选 TWR。它比 TOF 稳定得多。我在矿井人员定位项目里全程用 TWR,连续跑了三个月,测距误差始终在 10 厘米以内。

3.3 PDoA(相位差测距)

PDoA 是另一种思路。它不测时间,而是测相位。UWB 信号包含多个频率分量,不同频率在传播过程中会产生不同的相位偏移。通过比较两个频率的相位差,就能算出距离。

为什么会这样?因为相位差与距离成正比。假设发射两个频率 f1 和 f2,接收端测到相位差 Δφ,那么距离 d 满足:

d = (Δφ × c) / (2π × (f2 - f1))

注意:相位差有 2π 模糊度,所以 PDoA 的测距范围受限于频率间隔。

我在一个室内机器人导航项目里试过 PDoA。当时想用它做高精度测向,因为 PDoA 对多径不敏感。但实际调试时发现,相位测量对硬件要求极高——天线阻抗、馈线长度、温度漂移都会引入相位误差。

PDoA 的优缺点:

  • 优点:抗多径能力强,适合复杂室内环境;测距速度快,一次测量即可。
  • 缺点:存在 2π 模糊度,测距范围有限;对硬件一致性要求高。
  • 典型场景:高精度测向、短距离测距(10 米以内)。

我曾经踩过的坑:用 PDoA 做 30 米测距,结果相位模糊导致距离跳变。后来加了频率分集和相位解缠算法,才解决。记住,PDoA 适合短距,长距还得靠 TWR。

3.4 三种测距方法对比

为了让你看得更清楚,我把三种方法的核心差异整理成一张表:

特性 TOF TWR PDoA
测距原理 信号飞行时间 双边双向时间戳 多频相位差
时钟同步要求 高 低 低
通信次数 2 次 3 次 1 次
典型精度 10~50 cm 5~15 cm 5~20 cm
抗多径能力 弱 中 强
硬件复杂度 低 中 高
适用场景 简单、短距 通用、高精度 复杂环境、测向

3.5 三种测距方法的知识体系图

下面这张 SVG 图,把三种方法的流程和关系画清楚了。你可以对照着看,理解它们各自的位置。

UWB 三种测距方法对比图 UWB 三种测距方法知识体系 UWB 测距 TOF 飞行时间 TWR 双边双向 PDoA 相位差 需时钟同步 2 次通信 精度 10~50 cm 不依赖时钟同步 3 次通信 精度 5~15 cm 抗多径能力强 1 次通信 精度 5~20 cm 实际项目:TWR 最常用,PDoA 做补充 选择方法时,先看时钟精度、通信开销和环境复杂度

3.6 实际项目中的选择建议

三种方法各有优劣。我根据经验给你几个选择方向:

  • 如果项目预算有限,晶振精度一般:别用 TOF,直接上 TWR。多一次通信换来的精度提升,绝对值。
  • 如果环境多径严重(比如仓库、工厂):考虑 PDoA 做测距补充,或者用 TWR 配合天线阵列做测向。
  • 如果对功耗敏感(比如电池供电的标签):TWR 的三次通信会多耗电。可以优化通信间隔,或者用 TOF 加高精度晶振。
  • 如果要做高精度测向:PDoA 是首选。我在 AGV 小车项目里用 PDoA 做角度估计,精度能到 ±3°。

我的习惯:新项目起步时,先用 TWR 做基准方案。等系统跑稳了,再根据实际瓶颈决定是否换成 TOF 或引入 PDoA。这样风险最小。