行人运动时,三轴加速度值都发生周期性变化,但变化的程度和方向各不相同。如果仅利用单轴加速度作为判别行人步行姿态往往不准确,因此可以融合三轴加速度数值,将融合加速度的幅值‖a‖作为判别指标进行零速检测,步骤如下。
(1) 三轴加速度转换为地理坐标系下的加速度序列$\left\{ a_{t}^{x}\left( 1 \right),\text{ }a_{t}^{x}\left( 2 \right),\cdots ,\text{ }a_{t}^{x}\left( n \right) \right\},\left\{ a_{t}^{y}\left( 1 \right),\text{ }a_{t}^{y}\left( 2 \right),\cdots ,\text{ }a_{t}^{y}\left( n \right) \right\},\left\{ a_{t}^{z}\left( 1 \right),\text{ }a_{t}^{z}\left( 2 \right),\cdots ,\text{ }a_{t}^{z}\left( n \right) \right\}$,其合加速度为:
$$\|{{a}_{t}}\left( k \right)\|=\sqrt{a_{t}^{x}{{\left( k \right)}^{2}}+a_{t}^{y}{{\left( k \right)}^{2}}+a_{t}^{z}{{\left( k \right)}^{2}}}$$
式中,k=1, 2, …n为采样点次序;atx,aty,atz分别为x轴、y轴和z轴加速度。
(2) 设置阈值区间T=[tmin, tmax],则:
$$C\left( k \right)=\left\{ \begin{array}{*{35}{l}}
1,&{{t}_{\text{min}}}<\|{{a}_{t}}\left( k \right)\|<{{t}_{\text{max}}} \\
0,&否则 \\
\end{array} \right.$$
(3)
式中, C(k)为1代表零速检测成功,即此采样点上行人速度为零,反之C(k)为0。
(3) 经过上述步骤的处理,得到一个n维的0、1向量(n代表采样点个数),计算向量中连续出现1的次数,连续出现说明并不是由于加速度值的噪声导致的偶然为零,而是由于行人在这段时间内脚部处于着地状态,速度一直是零,从而完成了步数的初步统计。
(4) 伪零速点剔除。步骤(3) 初步得到计步结果,但是其中会有干扰步数的出现。由物理学知识,脚着地静止阶段,加速度与速度均为零,而当测得加速度为零时,速度却并不一定为零,加速度为零的情况也可能出现在跨步摆动阶段加速度由正值变为负值的过程中,因此为得到准确的计步结果,必须剔除伪零速点。根据行人运动特点,脚部着地阶段大致占整个行走周期的40%左右,而跨步中间加速度为零的时间极短,一般不会超过整个跨步周期的10%,跨步中间加速度为零的采样点出现的次数与采样的频率有关,因此可以将加速度为零的采样点连续出现个数小于采样频率的10%的情况认为是出现在跨步过程中,不作为计步依据,应当予以剔除。
根据上述步骤,可以得到行人行走过程中脚部着地阶段的次数,作为最终步数输出。整个算法流程
图 6
计步算法流程
Figure 6.
Step Counting Algorithm Process