320×400px
🎯 实时计算过程
👆 拖动顶部移动 | 拖动底部边调整大小
📊 1. 读取加速度计(原始数据)
accX=0.000g
accY=0.000g
accZ=0.000g
|acc|=√(0²+0²+0²)=1.000g
dynMag=|1.000-1.000|=0.000
融合:未启用 | useFusion=-- | hasGyro=--
🔄 2. 姿态角(加速度→角度)
pitch=atan2(accY,√(accX²+accZ²))×180/π
roll=atan2(accX,accZ)×180/π
pitch=0.0°
roll=0.0°
yaw=0.0°
tilt=√(0²+0²)=0.0°
变化率=0.0°/s
📈 3. 动态阈值(自适应窗口)
阈值=ampMin + σ系数×σ
mean=0.500
σ=0.150
β=0.90
阈值=0.10+0.90×0.150=0.235
⚡ 4. 步态判定(幅度>阈值?)
当前幅度=峰值-谷值
=0.00
=0.00
amp=0.00
0.00 > 0.235❌ 无效
ZCD步态检测引擎 v5
信号源=--
窗口=48
ampFloor=1.50
ampSigma=0.30
dynMag mu=0.000
dynMag sig=0.000
ZCD阈值=0.000
间隔=--ms
amplitude=0.000
判定=pending
sensor-zoo 步态算法 v6 (Madgwick AHRS + 双计数器)
Adaptive步0
Peak步0
rawMag0.00
uAccMag0.00
qYaw0.0
qPitch0.0
Beta:0.05 Prom:1.5 Cool:0.3 Win:0.6s
主频=0.0Hz (范围:0.6-3.0Hz)
suppress= | conf=100% | tilt=0.0°
roll=0.0° | rate=0.0°/s
🛡️ 5. 姿态可信度(稳定性分析)
标准差参考≈100−(rollStd+pitchStd+yawStd/yawGate);大字号为引擎综合可信度(与参考式可能不完全相同)
rollStd=0.0°
pitchStd=0.0°
yawStd=0.0°
公式参考≈(0.0+0.0+0.0/35)→--% 引擎=100%
🎯 6. 最终判定结果
步态
静立
移动
静止
姿态
稳定
累计步数
0
步频: 0.0 步/分
🔍 服务状态诊断
Nginx
检测中...
Relay:8765
检测中...
MQTT
检测中...
v63:多 Broker 备用:Nginx代理Mosquitto → 直连Mosquitto → 公共测试Broker。建议:先确保 Nginx (443) 和 Relay (8765) 服务正常。连接断开后每5秒自动重试。
若开发者工具 Network 显示「已屏蔽: csp」:mqtt.min.js/uuid 外链或 http(s)://公网IP:端口 中继会被策略拦截。请部署本版 HTML + vendor/mqtt.min.js 同目录,并在 nginx 为 /pdr-relay/ 做反代;nginx 的 connect-src 需包含 wss: 及常用 Broker 主机名(见页头注释)。
设备模式:自动:电脑环境→展示端,手机环境→采集端(?mode=mobile|pc 可覆盖)
MINIMAP / PDR HUD
IDLE
N TRACK / MOBILE SENSOR
等待轨迹数据...
当前暂无有效步进位置。
融合轨迹 原始轨迹 当前位置 / 朝向

🚀 PDR 联动联调前端 · v19 唯一Broker · ZCD + sensor-zoo · 0406v63

0406v63:① 修复后台重连定时器缺失问题;② 添加指数退避重连逻辑(1s→30s上限);③ 改进数据队列重连检测间隔。
0404v56:① PC端 UI 改为 WebSocket 优先 - 连接状态优先显示 Relay WS,MQTT 断开不影响"已连接"提示;② 手机端状态刷新逻辑修改 - WS 已连接时不显示 MQTT 断开警告;③ MQTT 仅作为备用桥接,不影响主通讯功能显示。
0332:缩小 MQTT 传感器包体积(避免公共 Broker 拒收大包);电脑端同步手机 hasGyro/融合 状态;连接后记住伙伴 ID,滑块参数可同步。数据仍走 /stream+/data 双主题 QoS1。
0331 MQTT 兜底:数据走 /stream + /data 双主题、QoS1、序号去重;手机测试期 2s 心跳;PC 订阅双通道。仍请两端同一 Broker(URL 参数一致)。
保留:手机采集/电脑展示权限分离,只增不减,原结构保留。

1. 设备模式区

本机联机 ID(8 位,给对方输入):
根据浏览器环境自动进入手机采集端或电脑展示端;若识别不准可用 ?mode=mobile?mode=pc 强制。
手机端:采集传感器数据 → 电脑端:展示数据波形和轨迹

2. 控制区

联机状态:正在初始化设备模式与 MQTT…
等待开始测试。
实时调参状态: 已就绪。
参数版本号:v6;最近修改参数:;最近修改时间:--
当前模式:手机采集 / 电脑展示分流;slider 仅作辅助;手机滑块显示优化已启用。
🎯 权限修复规则:
1. 电脑端不再参与任何传感器权限申请
2. 手机端才允许申请权限;
3. iPhone / iPad 上必须先点“申请传感器权限”,再点“开始测试”;
4. 电脑端点“开始测试”不会启动传感器监听,只用于展示;
5. 这样可以避免电脑端打开相同网页后扰乱手机权限流程;
6. 如果手机授权后仍无数据,请优先使用 Safari / Chrome 正式浏览器,不要用微信内置浏览器。
参数快照区
当前页面支持将整套参数保存到本地 localStorage,刷新后仍可恢复。
暂无参数快照
点击“保存当前参数快照”后,这里会列出快照。

3. 参数设置

3.1 原有参数输入区保留
当前策略:α=0.98;步态频率带=0.5~3.5Hz;连续有效步数≥2;姿态变化率阈值=150°/s;倾斜上限=120°;Yaw 抑制阈值=180°;融合步姿态可信度门槛=20%;移动中门槛=10%;疑似步态门槛=5%。
3.2 参数影响力排行面板
当前参数影响力排行
排行实时更新;卡片默认不实时换列,仅更新内容与标记。
全开放输入 + slider 辅助 + 超范围直接执行 + 手机滑块显示优化 + 权限修复
阻碍通过判定参数占比
等待实时数据...
0%
Open Param System + Mobile Sensor Fix + Desktop Viewer
手机负责采集权限与数据,电脑只展示,不再碰权限逻辑
本版核心是修复采集流程:手机端负责申请传感器权限和数据采集,电脑端只是展示界面,不再触发权限逻辑。 这样可以明显降低“授权成功但没有数据回调”的混乱情况。 同时保留全开放参数系统和手机滑块可视化增强。
3.3 全判定逻辑滑块区
🔥 高影响参数组
固定槽位区。手机上已改为稳定单列显示。参数允许超范围执行。
Roll 放行上限 0%#--
90°
实时: |roll|=0.0° | 设定:45° ✅ 放行
【计算】rollAllow > |roll| 时放行。roll由加速度计计算:roll = atan2(accY, sqrt(accX²+accZ²))×180/π。【合成】rollAllow = 直接设定值。
姿态变化率抑制阈值 0%#--
150°/s
实时: 0.0°/s | 设定:60°/s ❌ 抑制
【计算】attitudeRate > attitudeRateGate 时抑制。attitudeRate由姿态角差分:attitudeRate = d(roll)/dt 或 d(pitch)/dt。【合成】attitudeRateGate = 直接设定值。
姿态倾斜上限 0%#--
120°
实时: tilt=0.0° | 设定:50° ✅ 放行
【计算】tilt > tiltGate 时抑制。tilt由加速度计算:tilt = |pitch| 或 sqrt(pitch²+roll²)。【合成】tiltGate = 直接设定值。
融合步放行最小姿态可信度 0%#--
20%
实时: 100% | 设定:42% ✅ 放行
【计算】attitudeConfidence = 1 - (rollStd/tiltGate + pitchStd/tiltGate + yawStd/yawGate)。【合成】attitudeConfidenceGate = 直接设定阈值。
移动中判定最小姿态可信度 0%#--
10%
【计算】同attitudeConfidence。【合成】移动判定需 attitudeConfidence > moveConfidenceGate 才判为移动。
疑似步态最小姿态可信度 0%#--
5%
【计算】同attitudeConfidence。【合成】疑似判定需 attitudeConfidence > suspectConfidenceGate,用于过渡状态。
移动中最小连续有效步数 0%#--
2
【计算】consecutiveValidMoveSteps 累加。【合成】连续有效步数 ≥ moveStepNeed 才判为"移动中"。
最小步间隔 0%#--
200ms
【计算】相邻峰谷时间差 dt。【合成】dt < minInterval 的峰谷对被丢弃,认为是噪声或非步态动作。
融合步幅度下限(基础值) 0%#--
0.05
实时: amp=0.00 | σ=0.150 | 阈值=0.235
【计算】amplitude = peak - valley。【合成】amplitude > fusionAmpMin 才算有效步。实际阈值 = fusionAmpMin + fusionAmpSigma × sigma。
融合步幅度 sigma 系数 0%#--
0.50
【计算】sigma = std(amplitudeWindow)。【合成】实际阈值 = fusionAmpMin + fusionAmpSigma × sigma。系数越大对噪声越敏感。
🟠 中影响参数组
固定槽位区。slider 只是辅助,不是边界。
真实移动 dynMag 下限 0%#--
0.50
【计算】dynMag = sqrt(accX² + accY² + accZ²) / g - 1。【合成】dynMag > dynMagMove 视为有动态运动证据。
Yaw 漂移抑制阈值 0%#--
180°
【计算】yawStd = std(yawSeries)。【合成】yawStd > yawGate 时抑制(防漂移干扰步态判定)。
Roll 惩罚归一化阈值 0%#--
90°
【计算】rollPenalty = roll / rollPenalty。【合成】|roll| 越大惩罚越大,amplitude × (1 - rollPenalty) 影响步幅计算。
姿态稳定度 suppress 阈值 0%#--
20%
【计算】stability = 1 / (1 + rollStd + pitchStd + yawStd)。【合成】stability < stabilitySuppress 时抑制步态判定。
步态频率下限 0%#--
0.5Hz
【计算】dominantFreq = fft(amplitudeWindow)。【合成】dominantFreq < gaitFreqLow 时判定为非人行频率,丢弃。
步态频率上限 0%#--
3.5Hz
【计算】dominantFreq = fft(amplitudeWindow)。【合成】dominantFreq > gaitFreqHigh 时判定为非人行频率,丢弃。
动态阈值强度 β 0%#--
0.50
【计算】dynamicThreshold = mean(amplitude) - β × std(amplitude)。【合成】β越大阈值越高,越严格。
带通主频窗口长度 0%#--
48
窗口长度任意实验。
原始步幅度下限(基础值) 0%#--
0.05
原始链路开放实验。
原始步幅度 sigma 系数 0%#--
0.90
允许任意 sigma 实验。
🔵 低影响参数组
固定槽位区。所有参数都可以像游戏控制台一样实验。
弱移动 dynMag 判定上限 0%#--
0.55
【计算】dynMag = sqrt(accX²+accY²+accZ²)/g - 1。【合成】dynMagWeak < dynMag < dynMagMove 时判定为弱移动。
弱移动振幅上限 0%#--
0.16
【计算】amplitude = peak - valley。【合成】amplitude < weakAmp 且 < fusionAmpMin 时判为弱/疑似步态。
摆臂误判振幅上限 0%#--
0.22
【计算】amplitude = peak - valley。【合成】amplitude < armSwingAmp 时可能判为手臂摆动而非行走。
摆臂误判姿态变化率倍率 0%#--
1.20x
【计算】effectiveRateGate = attitudeRateGate × armSwingRateMul。【合成】手臂摆动时使用放大后的阈值。
spinLike dynMag 上限 0%#--
1.00
【计算】dynMag = sqrt(accX²+accY²+accZ²)/g - 1。【合成】dynMag < spinDynMag 时判定为原地旋转而非移动。
无步抖动姿态变化率阈值 0%#--
45°/s
【计算】attitudeRate = d(pitch)/dt 或 d(roll)/dt。【合成】attitudeRate > noStepShakeRate 时判定为无步抖动动作。
无步抖动最少步数上限 0%#--
2
【计算】无步态序列中的候选步数。【合成】> noStepCount 的无步抖动序列被抑制。
姿态稳定窗口 0%#--
24
【计算】windowSize = attitudeWindow。【合成】窗口越大姿态稳定性分析越平滑,但也越滞后。
说明: 本版正式采用游戏化参数系统:
1) 所有 input 都可输入任意值;
2) 不再强制 min / max 裁剪;
3) slider 只做辅助,不再拥有覆盖权;
4) 输入超出 slider 范围时,系统仍按真实输入值执行;
5) yaw / roll / tilt / pitch 相关参数全部开放实验;
6) 手机端滑块区已重做样式与布局,避免显示不出来;
7) 权限逻辑已修复:电脑端不再触发传感器权限申请。
当前为全开放实验模式:所有主要判定逻辑参数均可任意输入,超出 slider 范围照样执行。

4. 实时结果与重点判定

人体移动判定: 未开始。
判定原则:姿态异常、原地旋转、纯手机动作优先抑制;只有步态与姿态证据同时成立时,才判为移动。
人体是否移动 重点功能
未开始
结合步态证据与姿态稳定证据联合判定
累计有效步数(融合)
0
峰谷配对 + 频带约束 + 姿态约束
累计距离(融合)
0.00 m
逐步累加
当前状态
未开始
未开始 / 未移动 / 疑似步态 / 移动中
当前步频
0.00 Hz
最近有效步序列估计
姿态可信度
--
支持与各判定参数的实时影响联动分析
原始链路步数
0
基于原始模长的对照链路
姿态抑制状态
--
旋转过强 / 倾斜过大 / 姿态不稳定时触发
项目 原始链路 融合链路 说明
检测输入 原始模长 重力补偿后导航系垂向动态加速度 融合链路更能抑制姿态变化影响
姿态参与度 本版参数完全开放,适合实验展示与“极值演示”
当前原始步数 0 0 实时对照
当前原始距离 0.00 m 0.00 m 实时对照
Pitch (俯仰)
0.00°
互补滤波输出
Roll (侧倾)
0.00°
互补滤波输出
Yaw (航向)
0.00°
开放到 0~360,并支持超范围实验值
姿态变化率
0.00°/s
高变化率时优先抑制误判
姿态倾斜角
0.00°
由 Pitch/Roll 合成
姿态稳定度
--
越高说明姿态变化越平滑
主步态频率
--
落在步态频带才作为有效证据
原地动作抑制标记
--
原地摆臂 / 转圈 / 抖手机优先判为未移动

5. 数据展示窗口

当前原始模长
--
融合主信号
--
高阈值
--
低阈值
--
触发状态
未激活
最近步间隔
--
峰谷振幅
--
姿态可信度
--
姿态抑制
--
移动判定
--
当前版重点:
1) 电脑端不碰权限逻辑;
2) 手机端正常申请权限;
3) 手机端正常测;
4) 手机滑块显示修复保留。
暂无传感器信息。
融合状态:未启动

6. 判定说明

本系统判定的是“人是否真实发生位移”
本版强调参数开放与结果直出:
- 不对输入做保守裁剪;
- 允许极端参数做演示和实验;
- 系统尽量直接反映输入的真实效果;
- 适合科技展示、实验交互和参数探索;
- 当前已完成手机滑块显示优化;
- 当前已修复权限逻辑:手机采集,电脑展示。
© 2026 步数与距离计算 京ICP备2026014367号-1
技术驱动 · 开放共享