v1.8.7 自适应步长+朝向低通滤波
v1.8.7 自适应步长 + 朝向低通滤波
改进1:自适应步长(Weinberg 算法)
- 不再固定 0.65 米/步
- 每步根据加速度幅值的峰值/谷值动态估算:
stepLength = K * sqrt(accelMax - accelMin) - 步子大(跑步)→ 步长自动增大;步子小(慢走)→ 步长自动减小
- 限制步长在 0.3 ~ 1.2 米合理范围
- 即使有系统 TYPE_STEP_DETECTOR,也同时注册加速度计用于步长估算
改进2:朝向低通滤波
- 用复数平均法平滑朝向读数(滑动窗口 10 个采样)
- 避免角度绕圈问题(359°↔1° 跳变)
- 减少瞬时抖动,缓解"走 10 步南 + 10 步北不回到原点"的漂移
诚实的局限说明
PDR(行人航迹推算)是手机室内定位的固有问题,本方案仍做不到精确还原户型:
- 朝向漂移:室内金属家具、电器会干扰磁力计,慢速移动时陀螺仪也会漂移
- 步数漏检/多检:系统步频检测偶尔会漏步或多步
- 步长估算误差:Weinberg 算法是经验公式,不同人/不同步伐会有偏差
- 无闭环修正:手机端没有"知道回到起点"的能力,误差会持续累积
如果想要精确的户型图,需要其他方案(WiFi 指纹 SLAM、蓝牙信标等),手机端纯 PDR 只能给出相对轨迹的近似。