做 UWB 定位方案时,只看“厘米级”还不够。同一代 UWB 芯片装进不同系统,现场问题也可能完全不同。TWR 的偏差常与回复时延、两端钟差有关。TDoA 的难点在锚点同步。AoA 的角度误差还会随距离放大成横向偏差。
选型时先看系统直接测什么,以及哪些误差会进入结果。标签数量增加后,还要确认同一信道是否有足够时间完成所有收发。已经在查固定偏差或定位跳动,可以从第 5 节读起。只想先在 TWR、TDoA 和 AoA 之间做初选,可以先看第 7 节,再回头核对相关公式。
1. TWR、TDoA 和 AoA 分别测什么
在定位系统中,锚点通常固定安装,坐标已知。标签跟随人、设备或物料移动,系统要解算的是标签位置。ToF 是无线信号从发射端传播到接收端所需的时间,乘以光速后可换算为传播距离。
TWR,也就是双向测距,需要标签和锚点互发消息。系统从一轮或两轮往返时间中扣除设备的回复时间,得到两台设备之间的距离。锚点之间不必共用同一时钟,但标签和锚点的时钟快慢只要略有不同,测距结果仍会出现偏差。
TDoA 测的是到达时间差。标签发出一帧用于定位的短广播报文,通常称为 blink。周围锚点分别记录它到达的时刻,也就是接收时间戳,定位服务器再比较这些记录。标签不需要知道精确的发射时刻,但各锚点记录的时间必须换算到同一个参考时钟下。上行 TDoA 可以用一次标签发射完成一次位置计算。标签省去了与各锚点逐一往返的报文,锚点网络或定位服务器则要负责同步时间并集中计算位置。
AoA 关心的是方向。多根接收天线会看到同一信号的相位差或到达时间差,系统据此估计入射角。工程上常见的 PDoA 是 AoA 的一种实现方式。把 ToF 距离与 AoA 方向组合后,可以得到相对锚点的二维位置。
TWR 先得到距离,TDoA 用多锚点时间差求位置,AoA 增加方向信息。实际系统也可以把 ToF 与 AoA 组合使用。
2. TWR 为什么怕长回复时延
SS-TWR 只做一轮询问和应答。DS-TWR 增加一轮时间信息交换,用两边记录的往返时间共同估计 ToF。Qorvo APS013 中的非对称 DS-TWR 流程包含询问帧 Poll、应答帧 Response,以及携带最后一组时间信息的 Final 帧。

图 1. 非对称 DS-TWR 的三帧时序与 ToF 计算关系。
在 Qorvo APS011 附录 A 的误差模型中,无线信号的实际传播时间远短于设备等待应答的时间。先忽略传播时间对应的小项后,SS-TWR 的主要距离误差近似为

其中,
是响应端从收到询问到发出应答的时间,
是两端的相对频率偏差,
是光速。后文使用的 ppm 表示百万分之一,用来描述时钟快慢相差的比例。
假设回复时延为 400 μs,两端相对频偏为 20 ppm,代入后约为 1.20 m。回复时延延长到 1 ms,结果约为 3.00 m。这里计算的是两端时钟快慢不同,又没有做频偏补偿时,长回复时间会把误差放大多少,并不表示 SS-TWR 必然会出现米级误差。缩短回复时间,或根据实测频偏修正时间戳,都能减小这一项。
同一误差模型分析的对称双边 TWR,也就是 SDS-TWR,在完成双边计算后,仍未抵消的主要误差与两轮回复时延之差有关,可写成

如果两轮回复时延只相差 10 μs,相对频偏仍取 20 ppm,按这一项折算约为 1.5 cm。DS-TWR 能明显减小回复时延与钟差共同造成的误差,但天线收发延时仍要校准,墙体或货架遮挡仍会让传播路径变长,安装位置也仍会影响结果。
协议选择不能只看 SS 少一帧、DS 多一帧。如果 MCU 从收到报文到发出应答的时间较长,或者每次回复时间不稳定,DS-TWR 往往更稳。如果同一信道留给每个标签的收发时间很少,而设备又能缩短回复时间并估计两端频偏,SS-TWR 仍有使用空间。
3. TDoA 标签不与各锚点逐一往返,锚点必须同步
TWR 通过标签与锚点的往返报文处理两端钟差。TDoA 只让标签发射一次,此后各锚点记录的接收时间必须换算到同一个参考时钟下,才能直接比较。
光在 1 ns 内传播约 30 cm,因此 1 ns 的锚点相对时间误差,会先变成约 30 cm 的距离差误差。这里的“距离差”是标签到两个锚点的距离之差,它还不表示最终坐标也会偏 30 cm。把多组距离差换算成坐标时,锚点摆放、标签所在位置和解算方法还会继续影响结果。若希望同步误差在距离差中只占约 3 cm,各锚点校准后剩余的时间误差需要接近 100 ps。
锚点同步要处理三类问题:各时钟起始时间不同,时钟走时速度会随温度和时间变化,各锚点的收发电路延时也不相同。Zhang 等人的 TDoA RTLS 论文采用主锚周期发送时钟校准包,其他锚点同时记录校准包和标签 blink 的接收时间,再计算各自时钟相对主锚快了多少、起始时间差了多少。设备运行期间,这些差值还要持续更新。
有线同步可以让锚点共用参考时钟或触发信号,但线缆本身的传播延时也要测量和校准。无线同步可以少布一部分线,却要定期发送同步报文,持续估计各锚点时钟,并在锚点失去同步后重新锁定。项目如果没有说明采用哪种同步方式、由哪台设备校时,仅仅选一颗“支持 TDoA”的收发器还不能完成定位。
锚点数量还取决于算法是否已经知道标签的大致高度、初始位置或活动区域。一项四锚 TDoA 研究指出,迭代算法在有合适初值时,可用 3 个锚点做二维定位、4 个锚点做三维定位。这里的“初值”是算法开始迭代前使用的大致位置。若要求不依赖初始位置、直接由方程求出唯一坐标,通常需要 4 个锚点做二维定位、5 个锚点做三维定位。现场还要考虑上下或左右对称的候选位置、遮挡、包丢失和锚点分布,不能把方程能够求解所需的最少锚点数直接当成安装数量。
做二维定位时,不能因为只输出 x、y 坐标,就把标签的 z 坐标随意写成 0。应把标签高度设为接近实际作业高度的固定值,锚点仍使用各自实测的 x、y、z 坐标。若标签可能从地面移动到货架高处,就要改做三维解算,或单独评估高度变化会给平面坐标带来多大误差。
4. AoA 的角度指标要换算到工作距离
只有项目需要知道目标方向时,才有必要考虑 AoA。角度误差不能直接当作位置误差使用。目标接近阵列正前方时,可用下面的公式初步估算横向偏差。

是目标到锚点的距离,
是角度误差。以正前方为参考,取 5° 时,5 m 处的横向偏差约为 0.44 m,10 m 处约为 0.87 m,20 m 处约为 1.75 m。目标明显偏离阵列正前方时,要用“实际入射角加上角度误差”与“实际入射角”分别计算横向位置,再求两者之差,不能继续套用正前方的数值。产品写“角度精度小于 5°”,也不等于在任何距离都能给出几厘米的位置结果。
Qorvo DW3220 提供两个天线端口,产品页给出的测距精度为 10 cm 以内,AoA 精度为 5°以内。前一个指标表示测得距离与真实距离相差多少,后一个表示测得方向与真实方向相差多少。把距离和方向组合后,单个锚点可以给出标签相对自己的位置。若要覆盖锚点侧面或背面,还要检查阵列视场。不同方向可能产生相同的相位差时,还要结合天线阵列、外壳和安装方向排除错误方向。
AoA 还要求各天线通道的相位差能够稳定复现。同一信号经过不同天线、馈线和 PCB 走线后会产生额外相位差,整机外壳也可能改变天线响应,这些差异都要通过标定扣除。目标被墙体或货架遮挡时,最强信号可能来自反射路径,而不是标签与锚点之间的直达路径,此时算出的角度会明显偏离真实方向。现场验证时,至少应覆盖目标距离、入射方向和典型遮挡,而不是只在正前方做一次静态测试。
5. 调试时先分清“距离不准”还是“坐标不稳”
公式能说明误差从哪里来,现场排查则更适合从现象入手。第一步是确认手里的精度数字具体指什么。芯片或模块的 ranging accuracy 指标签与单个锚点之间的测距误差,positioning accuracy 指系统综合多条距离或时间差后,最终 x、y、z 坐标与真实位置相差多少。两者不能直接画等号。
多个已知距离下,偏差近似恒定
先检查天线延时和固定距离偏移。UWB650 可以通过 ANTDELAY 调整天线延时,这个参数会直接影响测距和定位结果。DISTOFFSET 用于按厘米修正固定距离偏移。校准时不要只测一个距离。可在无遮挡环境下选择数个已知距离,检查每次读数是否都多出或少掉相近的厘米数,还是距离越远,误差也越大。
读数会随朝向、人员走动或遮挡突然变化
这类现象通常不是一个固定校准值造成的,而是信号走过的路径发生了变化。人体、墙体、玻璃和金属可能削弱标签与锚点之间的直达信号,也可能把信号反射后再送到接收机。接收机如果把反射路径当成直达路径,测得的传播时间就会变长。先把设备移到无遮挡的开阔环境复测,再改变天线朝向,比直接调整定位算法参数更容易找出原因。
单条距离稳定,坐标却跳动
此时应检查锚点坐标、安装位置和标签高度设置。锚点排成一线、集中在目标同一侧,或标签长期处在锚点围成的区域之外时,即使每条距离只波动几厘米,换算出的坐标也可能跳动得更大。调试 UWB650 的定位精度时,还要检查遮挡情况,并确认标签是否位于锚点围成的区域内。
这三种现象可能同时出现,但检查顺序不同。如果几个已知距离都多出或少掉相近的数值,先校准 ANTDELAY 和 DISTOFFSET。如果读数会随遮挡或天线朝向突变,先处理安装环境和天线。如果单条距离稳定而坐标仍跳动,再检查锚点坐标、安装位置和定位算法。这样排查,比看到 30 cm 偏差就笼统归因于“UWB 精度不够”更容易找到具体原因。
6. 容量需要按实际报文和锚点数量计算
容量指同一套系统能够同时服务多少标签,以及每个标签每秒能更新多少次位置。距离已经测准,并不表示同一信道有足够时间完成目标更新率所需的全部报文。报文排不下时,重新校准天线也不能增加可用时间。
TWR 每获得一条距离,标签和一个锚点都要留出时间收发报文。一个二维位置若依赖 3 条距离,标签就要依次与多个锚点测距。TDoA 中,标签通常只发一个 blink,多个锚点同时接收。增加一个标签时,标签侧主要增加的是这一帧发射,而不是与每个锚点分别往返。TDoA 系统仍要传输同步报文、把各锚点的时间戳送到服务器,并避免多个标签同时发射造成碰撞,因此“一次发射”不等于标签数量不受限制。
快速估算 TWR 会占用多少信道时间时,可以写成

是标签数,
是每个标签每秒更新位置的次数,
是每次定位参与的锚点数,
是标签与一个锚点完成一次测距所需的时间。计算结果的单位是“每秒需要占用多少秒的信道时间”。结果接近 1 s/s,意味着一秒钟内几乎整整一秒都已用于测距,留给重试、报文间隔、控制命令和其他业务的时间已经很少。
UWB650的测距流程混合使用 DS-TWR 与 SS-TWR,并利用模块估得的两端时钟快慢差修正结果。在 6.8 Mbps 下,发起端完成一次测距需要 4.819 ms。若按 3 个锚点顺序测距估算,一次二维更新的纯测距时间约为

一个标签以 10 Hz 更新,仅测距事务就约占 145 ms/s。多个标签共享同一信道时,还要继续乘标签数,并为命令处理、重试和保护间隔留出空间。这个算例只用于估算当前模块时序,不是系统最大标签数承诺。
Ridolfi 等人的容量研究假设四个锚点共同覆盖一个区域,比较不同的无线速率与报文格式、信道调度方法和定位方式。在使用短报文、按预定时间轮流发送,并且不计算同步报文的理论极限配置中,TDoA 为 6171 updates/s,TWR 为 1381 updates/s,后者约为前者的 22%。换成一次事务约 4.7 ms 的参考配置后,对应数值变为 211 和 101,TWR 比 TDoA 少约 53%。

图 2. 四锚单小区模型下,不同报文长度、调度和同步条件对应的更新容量。
这组比例只适用于论文采用的报文和调度条件,不能直接换算成项目能接入多少标签。报文长度、锚点数量、各设备轮流发送的规则和同步方式一变,每秒可完成的位置更新数也会变化。项目评审时,应把实际无线速率、每次测距需要多长时间、预计重试次数和同步报文所占时间列在同一张表里,再计算剩余时间。
7. 把项目条件代入选型表
只知道场地面积或标签总数,还不能决定用 TWR 还是 TDoA。还要确认每个标签每秒需要更新几次、锚点能否共享精确时间,以及一次实际测距会占用多长时间。
项目问题 | 更倾向 TWR 的情况 | 更倾向 TDoA 的情况 | AoA 在哪里有用 |
锚点能否同步 | 不希望给所有锚点提供共同参考时钟 | 能用线缆或无线报文校准各锚点时钟,并能在失去同步后恢复 | AoA 不能代替 TDoA 所需的锚点同步 |
标签侧复杂度 | 标签能接收并回复测距报文,也能接受由此增加的功耗 | 希望标签主要按固定周期发出一帧报文 | 标签通常只需一根天线,多天线阵列放在锚点侧 |
信道时间 | 算上所有标签和锚点后,仍有时间完成重试和控制报文 | 逐个锚点做 TWR 已占满大部分信道时间 | AoA 需要采集多个天线通道并做校准,本身不会增加信道容量 |
需要的结果 | 先获得标签到各锚点的距离,再计算坐标 | 由锚点网络或服务器集中计算大量标签的位置 | 需要知道目标来自哪个方向,或同时使用距离和方向定位 |
团队要完成的开发 | 希望调用模块已有命令直接获得距离或坐标 | 能开发锚点校时、时间戳回传和定位计算 | 能设计多天线阵列,校准各通道相位差,并验证可测方向范围 |
现场主要风险 | 标签耗电、逐个轮询耗时、多个设备同时发射 | 锚点时钟仍有误差、时间戳回传不及时、锚点失去同步 | 反射路径、外壳影响天线、安装朝向错误、方向判断混淆 |
如果现场没有给锚点校时的线缆、无线协议或主时钟,而逐个测距仍能满足标签数量和更新率,TWR 更容易实施。如果按前面的公式计算后,TWR 每秒已占用接近整整一秒的信道时间,而团队又能持续校准锚点时钟并在服务器计算位置,再评估 TDoA。
需要知道目标来自哪个方向、从门的哪一侧通过,或只用一个锚点判断目标相对位置时,可以把 AoA 与 ToF 组合。如果只需要用多个锚点计算平面坐标,就没有必要再增加多天线阵列及其相位校准工作。
8. NiceRF 模块能直接完成什么
芯片能够记录收发时间或测量天线间相位差,不表示装有这颗芯片的模块已经能直接返回距离、角度或坐标。选型时要查看模块实际开放了哪些接口和命令。
思为无线 UWB650 的测距误差在 ±10 cm 以内,并支持 SS-TWR、DS-TWR 和定位。定位命令可输入 3 至 8 个锚点地址,并通过 UART 返回坐标、距离和信号强度。基本配置使用 3 个锚点和 1 个标签做二维定位,或使用 4 个锚点和 1 个标签做三维定位。

图 3. UWB650模块框图,包括 MCU、DW3000、射频收发链路、ESD 和天线连接。
UWB650Pro 同样支持 SS-TWR、DS-TWR 和模块内定位,测距误差在 ±10 cm 以内。与 UWB650 相比,它的主要差别是外置 50 Ω 天线接口和更低的休眠电流,适合需要自行选择天线或关注电池待机的嵌入式设备。
UWB653Pro 把相近的测距、定位和数据功能做成 USB 设备,适合连接电脑和上位机快速验证。
UWB3000F00 和 UWB3000F27 是 SPI 接口的 UWB 收发模块,可用于 TWR 和 TDoA 系统。模块可以收发报文并记录每帧的收发时刻,但项目仍要确定由谁校准锚点时钟、由谁收集这些时间戳,以及在哪台设备上计算标签坐标。
参考资料
- NiceRF UWB650 Product Specification Rev 2.2
- NiceRF UWB650Pro 产品页
- NiceRF UWB653Pro 产品页
- NiceRF UWB3000F00 产品页
- UWB3000F27 产品页
- Qorvo APS011, Sources of Error in DW1000-Based Two-Way Ranging Schemes
- Qorvo APS013, Implementation of Two-Way Ranging with the DW1000
- Qorvo DW3220 产品页
- FiRa Consortium, UWB Terminology: A Plain-English Guide
- FiRa Consortium, UWB Asset Tracking
- F. Zhang et al., Design and Implementation of Real-Time Localization System Based on UWB and TDoA Algorithm
- K. Kolakowski et al., Particle Filtering for Three-Dimensional TDoA-Based Positioning Using Four Anchor Nodes
- M. Ridolfi et al., Analysis of the Scalability of UWB Indoor Localization Solutions for High User Densities