杜庆东, 范 珏
(沈阳师范大学 软件学院, 沈阳 110034)
目前,室外定位[1]广泛应用于我们的生活当中,由于室内GPS信号会受各种因素(如建筑物遮挡、信号穿透力弱等)的影响,导致室内信号接收受限,所以在室内精准定位仍是一个挑战。许多室内定位方法都基于无线电系统,例如Wi-Fi[2]、射频识别[3]、超宽带[4]和蓝牙[5]。这些定位方法可以分为2种类型[6]:三角测量和路径识别。除了基于无线电的方法外,还有基于行人轨迹推算(pedestrian dead reckoning,PDR)[7-8]的室内定位方法,通过将计算出的位移与之前的位置相结合来推导出当前位置,而不需要借助外部基础设施。PDR定位误差主要取决于步数检测、步长估计和步行方向估计的准确性。
在不同的步行模式中实际应用步数检测和步长估计,仍是一个具有挑战性的问题。例如,当行人处于原地踏步状态时,传统的步数检测方法很难计算步数,因为每一步都有多个近似的峰值和峰谷。当行人处于原地踏步、正常行走或快步走状态时,步长估计模型都是不同的,这些模式具有不同的步行特性(例如,原地踏步模式的步幅应该为0)。本文的目的是设计一种基于鲁棒算法的步数检测和步长估计方法,可以适应步行模式、手机姿势和用户的变化。着重考虑一种姿势----将手机放到裤袋中的3种行走模式:正常行走(NW)、原地踏步(MP)、快步行走(QW)的步数检测算法。
本文提出了一种鲁棒步数检测算法,基于动态时间扭曲(DTW),将峰值预测与过零检测结合来准确检测出不同步行模式中的边界。将本文的方法与传统的步数检测和步长估计方法进行对比,证明本文方法优于传统的方法。
现有的步数检测算法分为3类:时域方法[9-14]、频域方法[15-16]和特征聚类方法[17-20]。由于本文的方法属于时域方法,因而专注于时域中的步数检测方法。时域方法包括阈值检测[9]、峰值检测[10]、过零检测[11]、关联检测[12]等。阈值检测通过判断传感器数据是否超过预定义的阈值来计算步数。虽然阈值方法最为简单,但很难为所有情况预设一个最佳的阈值。峰值检测根据一系列传感器数据中的峰值数量来估计步数,但由于噪声的干扰,会影响峰值检测的结果。过零检测通过检测传感器数据中零点的数量来衡量步长,但由于干扰和噪声,会存在很多假零点。由于目前实际传感器信号的复杂性,仅用一种方法很难达到满意的标准精度。因此,提出了组合方法来改善精度。结合过零和峰值检测,限制2个零点之间的间隔,减少假零点。动态时间扭曲(DTW)方法[21]可以很好地解决这个问题,用于评估三轴加速度的相关性,减少因步行速度发生变化而导致的问题。
日常行走过程中,人们有着许多的行走方式,例如正常行走(NW)、原地踏步(MP)、快步行走(QW)等各种各样的方式,而不同的行走方式对应的步行模式是不同的,行走速度及每一步的长度也是不同的,对最终的步数检测和步长估计有着很大的影响。可以使用具有新特征和CP的RF算法来识别步行模式,以减少步数检测和步长估计的误差。
目前已经有人使用了惯性传感器来感知人类活动,包括行人步行模式。Susi等[22]提出了一种基于决策树的分类器来识别4种运动模式。Niu等[23]提出了一个隐藏的基于马尔科夫模型的步行模式识别,共有72种模式,其中步行模式是步行速度和方向的组合。使用支持向量机和决策树可以成功识别运动状态和电话姿势的组合。Datal等[24-25]利用J48决策树、多层感知器和逻辑回归技术,将这些分类器与概率平均值组合规律相结合,以识别人类活动。最近,有关深度学习的活动受到了很多关注,Hassan等[26-27]提出了一种基于深度学习方法,使用来自智能设备上可用的多个传感器的数据进行活动识别。文献[28]采用深度学习方法来识别不同的步行速度和手机携带方式。Zhou等[29]使用新的卷积神经网络提出了基于智能手机的动作识别,该网络可以识别9种动作,用作室内定位的地标。
Weinberg提出了一个著名的步长估计模型,该模型的关键在于每一步内的最大和最小加速度。Alvarez等[30]将人类步态视为倒立摆动模型,将步幅建模为身高和腿长的函数。Wei等[31]提出了一种基于计算机视觉的步长估计系统评估帕金森患者的运动,提出了一种基于小波变换的步长估计方法。Zhu等[32]提出了一种根据行人的运动状态,即步行或者跑步的自适应步长估计方法。双积分是步长估计算法[33]的另一个重要方法。当前可用惯性传感器一定会有测量误差存在,所以最大限度地减少智能手机中低精度传感器数据漂移仍是一个待解决的问题。随着机器学习的最新进展,已经提出了基于机器学习的步长估计方法。
惯性传感器静止时输出的噪声包括静态漂移噪声和动态漂移噪声。系统对惯性传感器进行初始校准,将模块保持静止状态,保存一段时间内的测量数据,取其均值作为零偏数据。使用离散傅里叶变换的快速算法对校准后的数据进行频域分析,获取信号的频率结构以及各谐波和相位的信息。
频域分析表明正常速度行走时的步频为1~3 Hz,故保留低频分量,频率高于5 Hz的数据判定为干扰,使用低通滤波器对纠正零偏后的传感器数据进行滤波处理,经过校准后的输出数据趋近于真实的零值,滤除了大部分的漂移噪声。
数据预处理用于降低噪声和干扰的影响。原始导出的加速度计数据包括X,Y和Z值,本文使用加速度幅度来检测步行状态,如下所示:
(1)
其中:ax,t,ay,t,az,t分别是在时间t获取的x轴,y轴和z轴的加速度计读数;g是重力加速度常数,为9.8 m·s-2。原始加速度可能包含干扰和噪声信号,这会影响后续的步数检测和步行模式识别表现。因此,采用截止频率为wc=0.2π的四阶巴特斯沃数字低通滤波器对at的高频分量进行滤波。
步数检测要计算出不同步行模式下的具体步数,并能够正确分割每一步的数据,为后续的步行模式识别奠定基础。为了实现这2个目标,所提出的步数检测方法是将基于动态时间扭曲(DTW)的峰值预测与过零检测相结合。前者实现不同步行模式下的准确计步,后者可识别每一步的起点和终点。
由于人在步行过程中手臂和脚的运动是同步的[34],因此根据步态模型,每一步的起点或终点应该是加速度信号中的零点。然而由于采样频率、行走速度和噪声的影响,采样的加速度信号可能没有零点,或者零点可能不是真正的起点或终点。本文将通过零的点记录为零点,过零检测中所有潜在起点和终点都标记为集合S1,如式(2)所示。
S1={t|at×at-1≤0}
(2)
然而,过零检测方法一般具有假零点问题。本文结合峰值检测和过零检测来排除来自集合S1的错误零点。
步数检测最常用的方法就是峰值预测,但此方法很容易受到假峰值的影响,尤其是当行人处于原地踏步模式时。针对这一问题,提出了基于DTW的峰值预测方法,通过计算相邻2步加速度信号的相似度预测峰值的范围。
基于DTW的峰值预测方法由3个关键模块组成:周期性约束、DTW约束和搜索最大峰值。
1) 周期性约束
一般来说,同一步行模式中相邻的2个步骤的周期具有相似性。这里的周期是指2个连续的真实峰值时刻之间的差值,其定义如下:
(3)
t∈((1-θ)*Ti-1,(1+θ)*Ti-1)
(4)
其中:θ是相似度参数;Ti是周期模板。为提高Ti的准确度,更新如下:
(5)
根据周期性约束,可以初步推导出下一个峰值的范围。
2) DTW约束
DTW用来计算距离或相似度时域[21]中长度不同的2个序列。在本文中,使用DTW来预测当前真实峰值的加速度。
本文将2个峰值之间的加速度序列视为匹配序列μ,如式(6)所示。特别是第1个序列μ0是使用传统的峰值检测方法获得的。
(6)
本文将Rp中的最新峰值到第1个样本点的加速度数据作为第1个测试序列v1,Rp中最新峰值到第2个样本点的加速度数据作为第2个测试序列v2……,以此类推,得到1个测试序列集V={v1,v2,…,vj,…,vk}。然后计算μ和vj的DTW距离DTW(μ,vj),得到DTW距离D={DTW(μ,v1),(μ,v2),…,(μ,vk)}。根据同一步行模式中每一步的相似性,当测试序列中的最新样本点接近下一个真实峰值时,DTW距离会明显变小。因此,满足式(7)中条件的Rp点j被输出到候选峰集RD,即下一个真峰的预测范围。
RD={j|j∈RD,DTW(μ,vj)<φ,DTW(μ,vj)-Dmin<τ}
(7)
其中φ和τ用于控制RD中元素的数量。另外,由于DTW约束时利用同一步行模式中的每一步的相似性,所以当行人改变步行模式时,RD将为空。
3) 搜索最大峰值
获得下一个真实峰值的预测范围RD后,RD中最大的加速度对应于真实峰值时刻,如式(8)所示。
(8)
其中tpeak代表当前的真实峰值时刻。
基于DTW的峰值预测过程,其改进在于NW,MP和QW模式参数θ,φ和τ相同, 以及Ti和μ根据同一步行模式下每一步的相似度自动建立和更新,一旦检测到模式变化,将重新建立μ0。因此,基于DTW的峰值预测方法可以适应不同的步行模式。
采用基于DTW的峰值预测方法获得峰值时刻,而峰谷是2个峰值时刻之间最小加速度值所对应的时刻。使用峰谷时刻来预测真正的零点时刻tzero,由式(9)定义
(9)
通过在S1中找到最接近预测零点的点,得到真正的零点集S2,其中S1是过零检测确定的零点集。假设S1={t(1),t(2),t(3),…,t(i),…} 并且tzero是预测的零点,那么t是真正的零点:
(10)
每一步的起点和终点可以表示为{ti,ti+1}。从每一对起点和终点提取出每一步的完整信息,构成了步行模式识别特征分析和特征提取的基础。
将本文所研究的步数检测方法与通过结合过零点和峰值检测的方法来限制2个零点之间的间隔、减少加零点的发生率的算法以及将周期性、相似性和连续性应用于峰值检测以消除假峰值并提高计步精度的算法的性能进行了比较。结果表明本文的步数检测方法优于另外2种方法。无论是前者的方法还是后者的方法,都无法适应不同的步行模式。本文使用DTW进行峰值预测的方法,结合周期性约束和自适应阈值来适应不同的步行模式,所呈现的效果是最精准的。
为了验证本文提出的方法,在清河实验中学进行了一系列实验。8名志愿者使用2部智能手机(华为Mate 8和谷歌Nexus 5)收集数据。其中4名拿华为Mate 8,另外4名拿谷歌Nexues 5。实验数据收集方法类似于文献[27]。这2款智能手机都内置了采样频率为50 Hz的三轴加速度计。在数据收集过程中,志愿者需要记住他们每个步行模式中走了多少步。每个志愿者要将手机放置在裤袋中沿着2条路径以3种步行模式(MP,NW和QW)行走固定步数,共100步。本文没有严格要求志愿者的步行速度,只要求根据自己的习惯行走。有48条轨迹,每条轨迹对应一种模式和一种路径。当志愿者用恒定的速度行走时,每一步的步长大致相同。然后通过路径长度除以行走的步数来获得步长估计的真实步长。在测试数据收集中,志愿者要沿着另一条路径以固定步数进行3次连续的运动。连续运动由3种步行模式组成。因此有12条轨迹,每条轨迹包括3种步行模式和一种手机摆放位置。本文使用元组〈步行模式、步数〉来描述连续运动的一部分。因此,测试路径中行走模式的顺序为〈NW,20〉→〈MP,20〉→〈NW,20〉→〈QW,20〉。
如图1所示,本文的步数检测方法优于另外2种方法。文献[13]的方法明显不适用于原地踏步,错误率明显高于其他2种步行模式,并且行走过程中智能手机的摆放位置影响了阈值,导致快速行走模式下步数检测的结果不准确。文献[35]的方法在正常行走模式中检测结果比较准确,但其步数检测结果在原地踏步和快速行走模式中的误差较大。本文使用 DTW方法进行峰值预测,结合周期性约束和自适应阈值以适应不同的步行模式,在3种步行模式中均表现最佳,其误差分别为1.1%,2.9% 和2.2%。
图1 步数检测性能的比较Fig.1 Step detection performance comparison
本文使用智能手机的内置惯性传感器来识别3种步行模式,为PDR提出了一种鲁棒的步数检测和步长估计方法。所提出的步数检测方法,融合了基于动态时间扭曲(DTW)的峰值预测和过零检测,可以准确识别每个步骤的起点和终点。将本文的方法与传统的方法进行比较,显示本文的方法优于传统的方法。以后会考虑更多的走路方式和手机放置位置,比如上楼、下楼、摇手机以及将手机放在胸口等,以扩大该方法的应用范围。