PDR 入门:从零讲清“步长 & 步频”的计算

目标:读完你能回答三件事:
① 传感器里到底有什么“和走路有关”的信号;
② 我们怎样在这些信号里识别出“每一步”;
③ 找到每一步之后,如何得到“步频”和“步长”。

先建立一个“脑内模型”

把你走路想象成放音乐:

  • 节拍稳不稳 → 就是步频(cadence):每秒几步、每分钟几步。

  • 音量有多大 → 就是每一步的“用力/摆动强度”,它映射成步长

手机里三件“乐器”在工作:
加速度计(节拍 + 强弱)陀螺仪(转身/转向)磁力计(朝向参照)
本文只聊加速度的“节拍与强弱”。

当你抬脚—摆动—落地,合成后的加速度会出现这样的规律:

  • 抬脚/摆动到最高 → 曲线出现(向上鼓起);

  • 触地/回落最低 → 曲线出现(向下凹陷);

  • 峰和谷交替出现,像规则的海浪。

  • 一个“峰↔谷”的配对 = 一步。
    先找到“每一步在哪儿”,步频与步长才有着落。

一步如何被手机“察觉”:数据预处理 + 峰谷检测

1.先把加速度弄干净、弄通明

  • 手机会给你三轴加速度数据(静止时约 9.8 m/s²),我们先把这重力减掉,用加速度模长表达真实摆动幅度,即所谓的 total acceleration

  • 再用“低通滤波”去除高频震颤(抖动、手抖),把波形磨平,方便找“峰”和“谷”。

2.怎么判断“这儿是一脚”?

  • 峰:曲线先上升后下降,且高过阈值 → 代表抬脚最高点;

  • 谷:先下降后上升,且低过阈值 → 代表落地最低点;

  • 峰-谷 一对就是一步。


步频(步率):你快不快?用节奏就知道

知道每一步发生的时间点后,“节奏”就很容易算:

  • 步时 = 当前峰的时间 - 上一个峰的时间;

  • 步频(Hz) = 1 / 步时;

  • 步/分钟 = 60 × 步频。

举个例子:如果两步间隔 0.5 秒,步频就是 2 Hz,也就是 120 步/分钟。
想让数据看起来更舒服?滑动平均一下就行——就像音量条滑得更平滑。


步长:比“节奏”难一点,但也能玩得更好

为什么要估步长?

因为有时候你走很快、步频高,但每一步很短(比如快走),也可能步频普通,但每步覆盖很远(大跨步)。
步频告诉你“快慢节奏”,步长告诉你“跨多远”——两者合起来才完整。

为什么不能直接测?需要模型

你脚下“跨了几米”没有直接传感器。当你用加速度来估,必须面对太多变量:

  • 人身高度、腿长

  • 地面坡度、鞋底硬度

  • 设备(手机)放哪:口袋、手、包里

  • 走路方式:摇摆多、轻踩重抬…

所以,常见解决方案是建立“经验模型”:把某种容易量化的“信号强度”映射成步长。这就是各种“线性模型”“常数模型”“非线性模型”出现的原因。

常用的两种模型

1. 线性模型(优快云 非常多篇介绍这类):

步长 ≈ a × 身高 + b × 步频 + c

适合粗略估算,对水平一致的人群、规范走法比较管用。

2. 非线性 Weinberg 模型(更细致,更贴合实际):

步长 ≈ K × (峰值 – 谷值 – C)^(¼)

  • (峰 – 谷) 表示“这一脚用力/摆幅有多大”,很直观;

  • 减 C 是抹掉毛躁幅度(不起步时的微波动);

  • ¼ 次方控制“增强收益递减”,符合人体步伐逻辑。


如何把模型从“纸上”变成“现实可用”

1. 在现实里走一段直线,标定你的 K

最接地气的方法:

  • 找一条直线(20–50 米),自然走一遍;

  • 底下你知道真实距离,手机知道“每步摆幅”;

  • 调整 K,让算出的总距离最逼近真实距离。

这一步关键且无需复杂,只要你走得不飘,准确度立马提升。

2. 调节阈值与模型适应不同场景

  • 快跑时摆幅更大,要降低 C 或调高 K;

  • 上楼下楼摆幅、节奏都不同,建议切换模式

  • 同一模型跑步走路都用?建议做滑动(临时)调整

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值