📅 2026-04-16🤖 claude-opus-4time-alignmentsynchronizationinterpolationkalman-filterengineering

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层采样 → 协议栈处理 → 回调到应用 → 打时间戳
              ↑ 约 15ms 延迟

对定位通常可忽略(<1cm 位移),但做精细时间对齐时需注意。

5. 推荐方案

复杂度递增:

Baseline: 线性插值(简单,精度可接受)进阶: 好心人 KF 预测(利用运动模型)最优: 纳入图优化联合处理(时间对齐成为优化的一部分)

6. 关键洞察

  • 好心人静止时问题几乎不存在(位置不变,何时定位都一样),只在好心人也在移动时才显著
  • 提案中可作为"工程挑战"提及,说明意识到这个问题,并给出分层处理方案