4. 测距原理(TOF/TDOA):飞行时间测距、到达时间差定位、双向测距与单边测距

各位工程师朋友,这一章我们聊聊UWB最核心的东西——测距原理。说白了,UWB能精准定位,靠的就是测量无线电波的飞行时间。我刚开始接触这个领域时,总觉得原理很简单,不就是算个时间差嘛。但真正做项目才发现,这里面坑不少。

今天我会把四种主流方法讲透:TOF(飞行时间)、TDOA(到达时间差)、TWR(双向测距)和SS-TWR(单边双向测距)。每种方法我都会结合项目经验,告诉你什么时候用、怎么用、有什么坑。

核心观点:UWB测距的本质就是测量信号在空中的飞行时间,再乘以光速得到距离。但实际工程中,时钟同步、多径干扰、天线延迟才是真正的拦路虎。

4.1 飞行时间(TOF)测距——最直观的方法

TOF的原理非常简单:设备A在t1时刻发送一个信号,设备B在t2时刻收到。那么飞行时间就是t2 - t1,距离 = (t2 - t1) × 光速。

听起来很完美对吧?但问题来了——两个设备的时钟必须严格同步。我记得第一次在项目中用TOF时,两台设备用的都是普通晶振,误差几十ppm。算出来的距离飘得离谱,有时候甚至出现负距离。

避坑指南:我曾经在室外测试TOF时,忽略了多径效应。信号从墙面反射过来,比直射路径晚了十几纳秒,算出来的距离多了好几米。后来我养成了一个习惯:每次测试前先做信道探测,确认直射路径是否存在。

TOF的优缺点很明显:

  • 优点:原理简单,计算量小,适合点对点测距
  • 缺点:需要高精度时钟同步,对多径敏感

4.2 到达时间差(TDOA)定位——基站协同的艺术

TDOA和TOF不同,它不直接测距,而是测时间差。具体来说,标签发送一个信号,多个基站收到信号的时间不同。通过计算这些时间差,就能解算出标签的位置。

你想想看,TDOA最大的好处是什么?标签不需要和基站同步时钟,只需要基站之间同步就行。这在工程上省了很多事。

我在一个仓储项目中用过TDOA,部署了4个基站。标签是移动的叉车,基站之间通过有线时钟同步。效果还不错,定位精度在30厘米左右。但有个问题——如果标签在基站围成的区域边缘,定位误差会急剧增大。

特性 TOF TDOA
时钟同步要求 标签与基站同步 仅基站间同步
标签复杂度 高(需要精确时钟) 低(只需发送信号)
系统容量 低(点对点) 高(一对多)
典型应用 测距、简单定位 大规模定位网络

个人经验:我建议在需要高并发标签的场景下优先考虑TDOA。比如工厂里有上百个工人需要定位,TDOA的容量优势就体现出来了。但要注意,TDOA的定位算法比TOF复杂,需要解非线性方程组。

4.3 双向测距(TWR)——工程界的标准方案

TWR的出现,就是为了解决TOF的时钟同步问题。它的思路很巧妙:设备A发一个信号,设备B收到后立刻回复一个信号。A记录下从发送到接收的总时间,再减去B的处理时间,就能得到飞行时间。

具体流程是这样的:

  1. A在t1发送Poll包
  2. B在t2收到Poll包
  3. B在t3发送Response包(t3 - t2 = T_reply,即处理时间)
  4. A在t4收到Response包

那么飞行时间 T_prop = (t4 - t1 - T_reply) / 2

你看,这里不需要A和B的时钟同步,只需要知道B的处理时间。但问题来了——如果B的时钟不准,T_reply的测量就会有误差。

关键点:TWR的误差主要来自时钟漂移。假设B的时钟比实际快1%,那么T_reply的测量值就会偏大1%,最终导致测距误差。我在一个项目中用过普通晶振,T_reply设了1毫秒,结果测距误差达到了好几米。

4.4 单边双向测距(SS-TWR)——简化版TWR

SS-TWR是TWR的简化版本。它只做一次双向交换,而不是多次。流程和TWR一样,但少了重复测量取平均的步骤。

什么时候用SS-TWR?我个人的经验是:对实时性要求高、对精度要求不那么苛刻的场景。比如无人机避障,需要快速测距,但误差在几十厘米也能接受。

SS-TWR的优点是速度快、功耗低。缺点也很明显——精度不如TWR,因为无法通过多次测量来消除随机误差。

参数 TWR SS-TWR
交换次数 多次(通常3次以上) 1次
测距精度 高(可消除随机误差) 中等(受单次测量影响大)
功耗 高 低
实时性 低 高

注意:我曾经在低功耗项目中用了SS-TWR,结果发现测距值跳变很厉害。后来排查发现,是天线延迟没有校准。UWB芯片的天线延迟通常在几纳秒到十几纳秒,如果不校准,测距误差会达到米级。

4.5 四种方法的对比与选型建议

说了这么多,到底该怎么选?我整理了一个对比表,方便你快速决策:

方法 精度 复杂度 功耗 适用场景
TOF 高(需时钟同步) 低 中 点对点测距、简单定位
TDOA 高(基站同步好) 高 低(标签侧) 大规模定位网络
TWR 高(多次测量) 中 高 高精度测距、工业定位
SS-TWR 中 低 低 低功耗、快速测距

我个人习惯是:做产品原型时先用TWR,因为它的精度有保障,调试起来也方便。等系统稳定了,再根据实际需求优化——如果标签数量多,就切到TDOA;如果功耗敏感,就切到SS-TWR。

4.6 核心知识框架图

下面这张图总结了四种测距方法的核心逻辑和关系,你可以把它当作本章的思维导图:

UWB测距方法核心框架图 UWB测距方法核心框架 UWB测距方法 TOF(飞行时间) TDOA(到达时间差) TWR(双向测距) SS-TWR(单边双向测距) TOF / TWR 特点 点对点测距,精度高 需要标签参与计算 TDOA / SS-TWR 特点 适合大规模网络 标签侧功耗低 选择方法时需权衡:精度、功耗、系统容量、时钟同步要求 简化

4.7 实战中的参数调优建议

最后,我分享几个实战中总结的参数调优经验:

  • 天线延迟校准:每次更换天线或PCB布局后,必须重新校准天线延迟。我习惯用已知距离的参考点做标定。
  • T_reply时间选择:在TWR中,T_reply不宜过短(否则处理不过来),也不宜过长(否则时钟漂移影响大)。我一般设在500μs到2ms之间。
  • 多径抑制:开启UWB芯片的NLOS检测功能,结合信道脉冲响应(CIR)数据,可以识别并剔除多径干扰的测距值。
  • 滤波策略:不要直接用单次测距值。我通常用卡尔曼滤波或滑动窗口平均,能有效降低噪声。

小技巧:调试时可以用示波器抓UWB模块的GPIO引脚,配合逻辑分析仪看时间戳。我曾经用这个方法发现了一个晶振频率偏差的问题,节省了好几天的排查时间。