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根据来回的时间算距离。
流程是这样的:
- A在本地时间T1发送Poll包。
- B收到Poll包,记录到达时间T2。
- B在本地时间T3回复Response包(通常带T2和T3的时间戳)。
- 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的流程:
- A发Poll包,记录T1。
- B收Poll包,记录T2。
- B发Response包,记录T3。
- A收Response包,记录T4。
- A发Final包,记录T5(Final包里带上T1、T4、T5)。
- 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的流程、误差来源、适用场景串在了一起。你可以把它当作本章的思维导图。
4.6 小结
这一章我们聊了UWB测距的两种核心机制。SS-TWR简单但精度有限,适合对成本敏感、距离近的场景。DS-TWR虽然多了一次消息交换,但换来了一个数量级的精度提升,是工业级定位的首选。
至于误差分析,记住四个字:时钟、多径、天线、NLOS。项目里遇到测距不准,按这个顺序排查,基本不会跑偏。