FA:formulas and algorithm,ML:mapping and localization,UWB:Ultra-Wideband
一、超宽带定位(UWB)
超宽带(Ultra-Wideband, UWB) 是一种无线通信技术 ,其信号带宽超过 500 MHz 或相对带宽大于 20% 。由于其极短脉冲(纳秒级)和高时间分辨率,UWB 被广泛用于高精度室内定位(厘米级)。
✅ 典型精度:10~30 cm
✅ 典型距离:10~50 米(视环境而定)
二、UWB 定位核心原理
UWB 定位基于 飞行时间(Time of Flight, ToF) 或 到达时间差(Time Difference of Arrival, TDoA) 测量信号传播时间,再通过光速计算距离。
基本公式:
d=c⋅td=c⋅td=c⋅t
-
ddd :距离(米)
-
ccc :光速(≈ 3×108 m/s3×108m/s )
-
ttt :信号飞行时间(秒)
💡 例如:若 t=1 nst=1ns ,则 d=0.3 md=0.3m
三、UWB 定位的两种主流模式
| 模式 | 英文 | 原理 | 设备要求 | 适用场景 |
|---|---|---|---|---|
| 双边测距(Two-Way Ranging, TWR) | TWR | 主动标签与基站双向通信测距 | 标签需有 UWB 芯片 | 人员/资产追踪 |
| 到达时间差(Time Difference of Arrival) | TDoA | 多个基站同步接收信号,计算时间差 | 基站需严格时间同步 | 固定区域监控 |
✅ TWR 更常用(无需基站同步),本文以 TWR 模式 + 三边定位 为例。
四、系统组成
-
UWB 锚点(Anchors):固定位置的基站(≥3 个)
-
UWB 标签(Tag):待定位的移动设备
-
中央处理器:运行定位算法(如 PC、嵌入式设备)
📌 锚点坐标需已知(通过标定获得)
五、定位流程(以 TWR + 三边定位为例)
步骤 1:测距
- 标签与每个锚点进行 TWR 通信,得到距离 d1,d2,d3,...d_1,d_2,d_3,...d1,d2,d3,...
步骤 2:三边定位(Trilateration)
- 已知锚点坐标 (xi,yi)(xi,yi)
- 已知到标签的距离 didi
- 求解标签位置 (x,y)(x,y)
步骤 3:解算位置(非线性方程组 → 线性化求解)
六、数学推导:三边定位算法
设:
- 锚点 ii 坐标: (xi,yi)(x_i,y_i)(xi,yi)
- 标签真实位置: (x,y)(x,y)(x,y)
- 测量距离: did_idi
理想情况下:
(x−xi)2+(y−yi)2=di2(i=1,2,3,... )(x−x_i)^2+(y−y_i)^2=d_i^2(i=1,2,3,... )(x−xi)2+(y−yi)2=di2(i=1,2,3,... )
线性化方法(最小二乘法)
将第 1 个方程作为基准,与其他方程相减:
(x−xi)2+(y−yi)2−[(x−x1)2+(y−y1)2]=di2−d12(x−x_i)^2+(y−y_i)^2−[(x−x_1)^2+(y−y_1)^2]=d_i^2−d_1^2(x−xi)2+(y−yi)2−[(x−x1)2+(y−y1)2]=di2−d12
展开并整理得:
2(x1−xi)x+2(y1−yi)y=di2−d12−xi2+x12−yi2+y122(x_1−x_i)x+2(y_1−y_i)y=d_i^2−d_1^2−x_i^2+x_1^2−y_i^2+y_1^22(x1−xi)x+2(y1−yi)y=di2−d12−xi2+x12−yi2+y12
写成矩阵形式:
Ap=bAp=bAp=b
其中:
- p=[x,y]Tp=[x,y]^Tp=[x,y]T
- A∈R(n−1)×2A∈R^{(n−1)×2}A∈R(n−1)×2
- b∈R(n−1)b∈R^{(n−1)}b∈R(n−1)
解为:
p=(ATA)−1ATbp=(A^TA)^{−1}A^Tbp=(ATA)−1ATb
当 n≥3n≥3 时,可用最小二乘法求最优解。
七、Python 代码实现
以下是一个完整的 UWB 三边定位模拟器,包含噪声处理和可视化。
bash
import numpy as np
import matplotlib.pyplot as plt
def trilaterate(anchor_pos, distances):
"""
使用最小二乘法进行三边定位
:param anchor_pos: np.array, shape=(N, 2), 锚点坐标 [[x1,y1], [x2,y2], ...]
:param distances: np.array, shape=(N,), 到标签的测量距离 [d1, d2, ...]
:return: (x, y) 估计位置
"""
N = len(anchor_pos)
if N < 3:
raise ValueError("至少需要3个锚点")
# 构建 A 和 b
A = []
b = []
x1, y1 = anchor_pos[0]
d1 = distances[0]
for i in range(1, N):
xi, yi = anchor_pos[i]
di = distances[i]
A.append([2 * (x1 - xi), 2 * (y1 - yi)])
b_val = di**2 - d1**2 - xi**2 + x1**2 - yi**2 + y1**2
b.append(b_val)
A = np.array(A)
b = np.array(b)
# 最小二乘解: p = (A^T A)^{-1} A^T b
try:
p = np.linalg.inv(A.T @ A) @ A.T @ b
return p[0], p[1]
except np.linalg.LinAlgError:
# 矩阵奇异,返回平均值
return np.mean(anchor_pos[:, 0]), np.mean(anchor_pos[:, 1])
# ==================== 模拟场景 ====================
if __name__ == "__main__":
# 真实标签位置
true_pos = np.array([5.0, 6.0])
# 锚点位置(4个)
anchors = np.array([
[0.0, 0.0],
[10.0, 0.0],
[10.0, 10.0],
[0.0, 10.0]
])
# 计算真实距离
true_distances = np.linalg.norm(anchors - true_pos, axis=1)
# 添加测量噪声(标准差 0.1m)
np.random.seed(42)
noise = np.random.normal(0, 0.1, size=true_distances.shape)
measured_distances = true_distances + noise
# 定位
est_x, est_y = trilaterate(anchors, measured_distances)
estimated_pos = np.array([est_x, est_y])
# 计算误差
error = np.linalg.norm(estimated_pos - true_pos)
# 可视化
plt.figure(figsize=(8, 8))
plt.plot(anchors[:, 0], anchors[:, 1], 'ro', markersize=10, label='Anchors')
plt.plot(true_pos[0], true_pos[1], 'g*', markersize=15, label=f'True Pos ({true_pos[0]:.1f}, {true_pos[1]:.1f})')
plt.plot(est_x, est_y, 'bx', markersize=12, label=f'Estimated ({est_x:.1f}, {est_y:.1f})')
# 绘制距离圆(可选)
for i in range(len(anchors)):
circle = plt.Circle(anchors[i], measured_distances[i], color='gray', fill=False, linestyle='--', alpha=0.5)
plt.gca().add_patch(circle)
plt.grid(True)
plt.axis('equal')
plt.xlabel('X (m)')
plt.ylabel('Y (m)')
plt.title(f'UWB Trilateration (Error: {error:.2f} m)')
plt.legend()
plt.show()
print(f"真实位置: ({true_pos[0]:.2f}, {true_pos[1]:.2f})")
print(f"估计位置: ({est_x:.2f}, {est_y:.2f})")
print(f"定位误差: {error:.2f} 米")
八、运行结果说明
- 红色圆圈:UWB 锚点
- 绿色星号:真实标签位置
- 蓝色叉号:估计位置
- 虚线圆:以锚点为中心、测量距离为半径的圆(理论上应交于一点)
- 输出:显示定位误差(通常 < 0.2m,取决于噪声)
九、实际硬件对接(以 Decawave/DW1000 为例)
在真实系统中,你需要:
- UWB 模块:如 Decawave DW1000、NXP NCJ29D5
- 微控制器:STM32、ESP32 等读取距离数据
- 通信接口:通过 UART/USB 将距离数据发送到 PC
- Python 接收数据:
bash
import serial
ser = serial.Serial('/dev/ttyUSB0', 115200) # Linux
# ser = serial.Serial('COM3', 115200) # Windows
while True:
line = ser.readline().decode().strip()
# 假设格式: "d1,d2,d3,d4"
distances = list(map(float, line.split(',')))
x, y = trilaterate(anchors, distances)
print(f"Position: ({x:.2f}, {y:.2f})")
十、UWB 定位的优缺点
优点
| 优势 | 说明 |
|---|---|
| 高精度 | 厘米级(10~30 cm) |
| 抗多径 | 超短脉冲可分辨直达路径 |
| 低功耗 | 间歇发射,适合电池设备 |
| 安全性高 | 低功率、难被探测 |
缺点:
| 局限 | 说明 |
|---|---|
| 成本较高 | UWB 芯片比蓝牙贵 |
| 视距要求 | 非视距(NLOS)会引入误差 |
| 部署复杂 | 需安装多个锚点并标定位置 |
| 覆盖范围有限 | 通常 < 50 米 |
十一、典型应用场景
- 工业仓储:AGV 小车定位
- 智能工厂:工具/人员追踪
- 体育训练:运动员轨迹分析
- AR/VR:室内空间定位
- 汽车:无钥匙进入、自动泊车辅助
十二、市场上UWB的品牌和型号
截至 2026 年 ,UWB(超宽带)技术已广泛应用于高精度室内定位、无感车钥匙、智能终端互联、工业物联网等领域。市场上的 UWB 产品主要分为三大类:
- UWB 芯片原厂(提供底层芯片)
- UWB 模组/模块厂商(集成芯片+天线+固件)
- UWB 定位系统解决方案商(提供端到端软硬件)
下面从这三类出发,系统梳理主流品牌、代表型号、技术特点与适用场景,并进行横向对比。
(1)、UWB 芯片原厂(核心底层)
| 品牌 | 国家 | 代表芯片型号 | 特点 | 应用领域 |
|---|---|---|---|---|
| NXP(恩智浦) | 荷兰 | NCJ29D5, NCJ29D6 | - 支持 FiRa 认证;- 集成 Secure Element;- 低功耗、高抗干扰 | 汽车数字钥匙(宝马、大众)、手机(三星 Galaxy) |
| Qorvo | 美国 | DW3000 系列(DW3110, DW3120) | - 前身 Decawave(UWB 先驱);- 高精度 ToF(±2 cm);- 开源驱动生态好 | 工业定位、机器人、消费电子 |
| Apple | 美国 | U1 / U2 | - 自研芯片;- 深度集成 iOS 生态;- 仅用于 Apple 设备 | iPhone、AirTag、HomePod、Vision Pro |
| Qualcomm(高通) | 美国 | QCC5181, QCM6490(SoC) | - 三合一芯片(BT + Wi-Fi + UWB);- 主打手机/耳机生态 | 小米、OPPO、三星中高端机型 |
| Samsung | 韩国 | 自研(未公开型号) | - 与 NXP 合作初期,逐步自研;- 用于 Galaxy S/Z 系列 | 手机、SmartTag+ |
| 华为海思 | 中国 | Hi110x 系列(未完全公开) | - 国产替代方案;- 支持星闪 SLB(部分对标 UWB);- 用于 Mate 60/70 系列 | 手机、汽车(鸿蒙生态) |
芯片选型建议:
- 工业/高精度:Qorvo DW3000
- 汽车安全:NXP NCJ29D5
- 手机集成:Qualcomm / Apple / Samsung
(2)、UWB 模组/模块厂商(中间层)
这些厂商基于上述芯片开发即插即用模组,适合快速集成。
| 品牌 | 国家 | 代表模组 | 基于芯片 | 特点 |
|---|---|---|---|---|
| Acconeer | 瑞典 | XM122 | Qorvo DW3110 | 超小尺寸(10×10 mm),低功耗,适合可穿戴 |
| Inplay Technologies | 美国 | IPW2200 | 自研 + Qorvo | 支持 TWR/TDoA,内置 RTOS |
| 成都精位科技 | 中国 | JUW-100 系列 | Qorvo DW3000 | 国产化,支持煤矿 MA 认证 |
| 上海飞远光电(fyuwb) | 中国 | FY-UWB-M1 | Qorvo/NXP | 工业级,IP67,支持 10 cm 定位 |
| 四相科技 | 中国 | M2/M3 系列 | Qorvo | 自研算法,支持 UWB+蓝牙 AOA 融合 |
| 联睿电子 | 中国 | LR-UWB-200 | 自研芯片(LR100) | "芯片+方案"双轮驱动,性价比高 |
💡 注:国内模组多采用 Qorvo DW3000,因 NXP 芯片对工业客户开放较晚。
(3)、UWB 定位系统解决方案商(应用层)
提供从锚点、标签到软件平台的完整系统。
| 品牌 | 国家 | 核心能力 | 典型行业 | 优势 |
|---|---|---|---|---|
| 四相科技 | 中国 | 全栈自研(芯片→算法→平台) | 矿山、制造、司法 | - 拥有煤矿 MA/KA 认证;- 落地超 3500 项目;- 支持 UWB+蓝牙融合 |
| 上海飞远光电(fyuwb) | 中国 | 自主 UWB 定位引擎 | 工业、化工、监狱 | - 10~30 cm 精度;- 高抗金属/多径干扰 |
| 清研讯科 | 中国 | 清华背景,算法强 | 汽车制造、仓储 | - 抗复杂电磁环境;- 与 MES/WMS 深度集成 |
| 联睿电子 | 中国 | 自研 UWB 芯片 | 司法、养老、机器人 | - 成本低;- 提供 SDK 二次开发 |
| Pozyx | 比利时 | 开源生态好 | 教育、无人机、AR | - 支持 ROS;- Python/C++ SDK 完善 |
| Ubisense(已被 Zebra 收购) | 英国 | 7D 精准定位 | 航空制造、军工 | - 亚米级 3D 定位;- 高可靠性(但价格昂贵) |
(4)、主流 UWB 模块参数对比(典型型号)
表格
| 型号 | 芯片 | 测距精度 | 定位精度 | 功耗(Tx) | 通信距离 | 接口 | 价格(参考) |
|---|---|---|---|---|---|---|---|
| DW3110 模组(Qorvo) | DW3110 | ±2 cm | 10~30 cm | 120 mA | 50 m(LOS) | SPI/UART | $8~12 |
| NCJ29D5 模组(NXP) | NCJ29D5 | ±5 cm | 20~50 cm | 90 mA | 30 m | SPI | $10~15 |
| JUW-100(精位) | DW3000 | ±3 cm | 10~20 cm | 110 mA | 40 m | UART | ¥60~80 |
| FY-UWB-M1(飞远) | DW3110 | ±2.5 cm | 10~30 cm | 100 mA | 50 m | UART/Ethernet | ¥70~90 |
| M3 Tag(四相) | DW3120 | ±2 cm | 10 cm | 80 mA(低功耗模式) | 60 m | BLE + UWB | ¥100+ |
📌 注:LOS = Line of Sight(视距),NLOS 下精度下降 30%~100%
(5)、按应用场景推荐品牌
表格
| 场景 | 推荐品牌 | 理由 |
|---|---|---|
| 工业安全生产(矿山、化工) | 四相科技、飞远光电 | 具备防爆认证(MA/KA),抗恶劣环境 |
| 智能制造/AGV 定位 | 清研讯科、四相科技 | 与 MES/PLC 集成能力强 |
| 司法监所人员管控 | 联睿电子、沃旭通讯 | 支持电子围栏、行为分析 |
| 消费电子/手机互联 | Apple、Samsung、小米(用 Qualcomm) | 生态闭环,体验优先 |
| 汽车无钥匙进入 | NXP(Tier1 供应商:大陆、博世) | 符合 CCC 车联盟标准 |
| 科研/教育/原型开发 | Pozyx、Qorvo 官方开发板 | 开源 SDK,支持 Python/ROS |
(6)、国产 vs 国际品牌对比
表格
| 维度 | 国际品牌(NXP/Qorvo) | 国产品牌(四相/飞远/联睿) |
|---|---|---|
| 芯片自主性 | 强(原厂) | 弱(多用 Qorvo),联睿自研中 |
| 定位精度 | 相当(10~30 cm) | 相当,部分场景优化更好 |
| 行业认证 | 全球认证齐全 | 国内认证强(如煤矿 MA) |
| 价格 | 较高 | 低 20%~40% |
| 本地服务 | 有限 | 快速响应,定制化强 |
| 生态整合 | 手机/汽车强 | 工业物联网强 |
(7)、未来趋势(2026+)
- 手机普及加速:小米、OPPO、vivo 将在 2026 年全面导入 UWB
- 汽车标配:比亚迪、蔚来、极氪等将 UWB 作为数字车钥匙标准
- 国产芯片突破:华为海思、联睿、北纬科技等加速自研
- 多技术融合:UWB + Bluetooth AoA + IMU 融合定位成主流
- FiRa 联盟主导标准化:互操作性提升,打破生态壁垒
十三、结束语
| 项目 | 内容 |
|---|---|
| 技术基础 | ToF / TWR 测距 + 三边定位 |
| 核心算法 | 最小二乘法解非线性方程 |
| 精度 | 10~30 cm(视环境) |
| 关键挑战 | NLOS 误差、锚点标定 |
| 工程建议 | 结合 IMU 融合(如 Kalman Filter)提升鲁棒性 |
一句话总结:
UWB 定位是"用无线电波的飞行时间算距离,再用几何交汇算位置------这就是 UWB 的厘米级魔法"。
测距精度通常2cm,定位精度20cm。
精度要求越高,穿透能力越弱,基站要求越密集。