4、UWB测距机制:双边双向测距(DS-TWR)、单边双向测距(SS-TWR)、测距误差分析

聊到UWB定位,最核心的问题就是:怎么把距离算准?

UWB本身是个物理层技术,它只负责发脉冲、收脉冲。真正决定定位精度的,是上层的测距算法。说白了,你硬件再好,算法不行,距离照样飘得离谱。

我个人习惯把UWB测距分成两大类:单边双向测距(SS-TWR)和双边双向测距(DS-TWR)。这两种方法,我在项目里都踩过坑,今天咱们一个一个说清楚。

核心结论先放这:SS-TWR简单但精度受限,DS-TWR复杂但能消除时钟误差。量产项目里,90%以上都在用DS-TWR。

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

SS-TWR,全称Single-Sided Two-Way Ranging。它的逻辑很直观:设备A发一个包,设备B回一个包,A根据来回的时间算距离。

流程是这样的:

  1. A在本地时间T1发送Poll包。
  2. B收到Poll包,记录到达时间T2。
  3. B在本地时间T3回复Response包(通常带T2和T3的时间戳)。
  4. A在本地时间T4收到Response包。

那么,信号在空中飞的时间是多少?

T_prop = ( (T4 - T1) - (T3 - T2) ) / 2

距离 = T_prop × 光速。

嗯,这里要注意:这个公式成立的前提是,A和B的时钟完全同步。但现实世界里,没有两个晶振是完全一样的。A的时钟可能偏快0.1%,B的时钟可能偏慢0.2%。

我在一个早期项目里用过SS-TWR,当时图它简单、代码量少。结果测出来的距离,在10米范围内误差能到30厘米。后来一查,两个节点的晶振偏差加起来有40ppm。你想想看,40ppm的误差,乘以整个往返时间,误差就放大了。

SS-TWR的致命伤:时钟误差会直接乘以(T4 - T1)这个时间差。距离越远,往返时间越长,误差越大。所以SS-TWR只适合对精度要求不高、通信距离很近的场景。

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

DS-TWR,全称Double-Sided Two-Way Ranging。它比SS-TWR多了一次消息交换。为什么要多这一次?为了把时钟误差给抵消掉。

DS-TWR的流程:

  1. A发Poll包,记录T1。
  2. B收Poll包,记录T2。
  3. B发Response包,记录T3。
  4. A收Response包,记录T4。
  5. A发Final包,记录T5(Final包里带上T1、T4、T5)。
  6. B收Final包,记录T6。

现在,B手里有T1、T2、T3、T4、T5、T6六个时间戳。DS-TWR的核心公式长这样:

T_prop = ( (T4 - T1) × (T6 - T3) - (T3 - T2) × (T5 - T4) ) / ( (T4 - T1) + (T6 - T3) + (T3 - T2) + (T5 - T4) )

看着复杂对吧?但它的好处是:公式里把A和B的时钟偏差项给约掉了。只要两个节点的晶振偏差在合理范围内(比如±20ppm),最终测距误差可以控制在厘米级。

我曾经在一个仓储AGV项目里,用DS-TWR做避障。两个节点距离5米,连续测了1000次,最大误差只有4.2厘米。这个精度,SS-TWR根本做不到。

我的建议:只要你的项目对定位精度有要求(误差<20cm),直接上DS-TWR。别在SS-TWR上浪费时间调参,调来调去也赶不上DS-TWR的底子。

4.3 SS-TWR vs DS-TWR 对比

对比项 SS-TWR DS-TWR
消息交换次数 2次(Poll + Response) 3次(Poll + Response + Final)
时钟误差影响 直接放大,误差大 公式抵消,误差小
典型测距误差 10~50cm(10米内) 1~10cm(10米内)
功耗 低(少发一次包) 略高(多发一次包)
适用场景 低精度、低成本、短距离 高精度、工业级、长距离

4.4 测距误差分析

不管用哪种方法,误差总是存在的。我总结了一下,UWB测距的误差来源主要有四个:

  • 时钟误差:晶振的ppm偏差。DS-TWR能抵消大部分,但极端情况下(比如晶振老化、温度剧烈变化)还是会残留。
  • 多径效应:UWB信号在室内会反射、绕射。接收机可能抓到的是反射路径的信号,导致测距偏大。我在一个金属货架仓库里吃过这个亏,测距值忽大忽小,后来加了天线分集才稳住。
  • 天线延迟:每根天线都有固定的延迟,通常在1~3ns。如果不校准,相当于每次测距都多算了30~90厘米。这个必须做出厂校准。
  • 非视距(NLOS):信号穿墙、穿人体时,速度会变慢,测距值偏大。这是UWB定位里最难解决的问题之一。

避坑指南:我曾经在一个项目中,忽略了天线延迟校准,结果所有标签的位置都偏了50厘米。后来花了三天时间,用已知距离反推天线延迟,才把问题解决。记住:天线延迟校准是量产前的必修课。

4.5 本章知识体系

下面这张图,把SS-TWR和DS-TWR的流程、误差来源、适用场景串在了一起。你可以把它当作本章的思维导图。

UWB测距机制知识体系 UWB测距机制知识体系 UWB测距机制 SS-TWR(单边双向) DS-TWR(双边双向) 2次消息交换 时钟误差放大 误差10~50cm 低功耗场景 3次消息交换 时钟误差抵消 误差1~10cm 工业级场景 测距误差四大来源 时钟误差 多径效应 天线延迟 非视距NLOS

4.6 小结

这一章我们聊了UWB测距的两种核心机制。SS-TWR简单但精度有限,适合对成本敏感、距离近的场景。DS-TWR虽然多了一次消息交换,但换来了一个数量级的精度提升,是工业级定位的首选。

至于误差分析,记住四个字:时钟、多径、天线、NLOS。项目里遇到测距不准,按这个顺序排查,基本不会跑偏。