📅 2026-04-16🤖 claude-opus-4
BLE/GNSS/WiFi 时间对齐问题
1. 问题本质
好心人手机上同时发生多件事,但时间不同步:
BLE 广播: |--发包--| |--发包--| |--发包--|
t=0.0s t=0.1s t=0.2s
GNSS 定位: |--定位--| |--定位--|
t=0.05s t=1.05s
WiFi 扫描: |--扫描--|
t=0.08s
问题:t=0.1s 发出的 BLE 包,好心人的位置该用哪个?
如果好心人在走路(~1.5m/s),0.05s 延迟 ≈ 7.5cm(可忽略),但 GNSS 更新间隔 1s 时最坏延迟 1s ≈ 1.5m 位置误差。
2. 各信号典型更新频率
| 信号源 | 更新频率 | 最大延迟 |
|---|---|---|
| BLE 广播 | 1–10 Hz(100ms–1s) | — |
| GNSS | 1 Hz(手机典型) | 0–1s |
| WiFi 扫描 | 0.1–0.5 Hz(2–10s) | 0–10s |
| 蜂窝 | 不定期 | 秒–分钟级 |
| IMU(加速度计) | 50–200 Hz | <10ms |
WiFi 是最大问题——更新间隔可达 10s,好心人步行 10s 可移动 15m。
3. 处理策略
3.1 最近邻插值(最简单)
BLE 发包时刻 → 找最近的位置记录 → 直接用。
问题:距离太远时误差大。
3.2 线性插值(推荐 baseline)
已知: 位置 P(t₁) 和 P(t₂)
BLE 发包时刻: t_ble ∈ (t₁, t₂)
插值: P(t_ble) = P(t₁) + (t_ble - t₁)/(t₂ - t₁) · (P(t₂) - P(t₁))
假设匀速运动,两个已知位置之间线性内插。
3.3 卡尔曼滤波预测(更精确)
用好心人自身的位置序列建 KF:
状态: [x, y, vx, vy]
观测: GNSS/WiFi 位置更新(不等间隔)
BLE 发包时刻 → KF 预测到该时刻的位置
利用速度估计,比线性插值更准。
3.4 纳入图优化框架(最优但复杂)
不做插值,直接在图优化中处理:
RSSI 因子的时间戳 = BLE 发包时间
好心人位置因子的时间戳 = GNSS/WiFi 定位时间
运动因子连接好心人在不同时刻的位置
→ 联合优化自动处理时间对齐
会大幅增加问题规模(好心人轨迹也成为变量),实际中线性插值通常够用。
4. RSSI 自身的延迟
BLE 芯片测量 RSSI 的时刻 ≠ 应用层收到 RSSI 的时刻
PHY层采样 → 协议栈处理 → 回调到应用 → 打时间戳
↑ 约 1–5ms 延迟
对定位通常可忽略(<1cm 位移),但做精细时间对齐时需注意。
5. 推荐方案
复杂度递增:
Baseline: 线性插值(简单,精度可接受)
↓
进阶: 好心人 KF 预测(利用运动模型)
↓
最优: 纳入图优化联合处理(时间对齐成为优化的一部分)
6. 关键洞察
- 好心人静止时问题几乎不存在(位置不变,何时定位都一样),只在好心人也在移动时才显著
- 提案中可作为"工程挑战"提及,说明意识到这个问题,并给出分层处理方案