邓 平,赵荣鑫,朱飞翔
(西南交通大学 信息编码与传输四川省重点实验室,成都 610097)
随着信息技术的飞速发展和智能设备的广泛普及,基于位置的服务(Location Based Service,LBS)逐渐成为社会生活的研究热点[1,2]。得益于半导体技术的发展,如加速度传感器、陀螺仪、磁力计等微型传感器已广泛集成于智能手机中,结合惯性导航技术,基于智能手机的行人导航定位技术受到越来越多的关注。
目前,较多的研究集中在传感器的校准以及如何提高行人定位导航的精度,对于行人导航过程的运动行为状态要求比较苛刻,即只能前进,难以满足一些实际应用中可能出现的左右跨步、后退等运动状态下定位的需求。Limin Xu 等人[3]设计了一种基于神经网络的智能手机模式识别算法,在手持,通话及甩手模式下识别率达到99.45%,但只针对普通行走模式,并未对运动状态进行讨论。刘宇等人[4]利用人体不同运动时的初始相位来区分不同的运动状态,在行走、后退及左右横走下的定位误差小于3.2%,但该运动检测方式欠缺可靠性,检测能力与运动初始相位强相关。Itzik Klein 等人[5]通过分析训练集大小及数据窗口宽度,利用12 个特征实现基于口袋、手持、通话和甩手模式下95%的分类准确率。Katsuhiko Kaji 等人[6]考虑腰部的旋转导致人体运动方向与手机方向不一致,利用加速度及角速度平面分量来抵消腰部旋转,从而实现非直线运动状态下的方向纠正,但针对的运动模式比较简单,且定位的准确性难以保证。殷晓玲等人[7]提出包含行走、跑步、骑行在内的动作识别,但对于实际的二维平面内运动模式考虑并不完善。因此,完善并准确识别行人定位过程中复杂的运动状态,并将其与行人惯性导航技术相互结合,对当前行人自主定位导航技术的发展具有重要意义。
对于在多种运动状态下的行人定位导航技术,传统的行人航迹推算(Pedestrian dead reckoning,PDR)算法由于没有对行人运动状态进行完善的识别,因而没有在PDR 过程中进行约束和修正,导航轨迹往往难以契合实际路线,产生不易预估的较大误差。为此,本文充分考虑人体不同运动方式及规律,提出一种基于人体运动状态识别的二维自主PDR 定位算法,并应用于智能手机实现行人定位,定位系统框架如图1所示。
图1 PDR 算法系统框架Fig.1 PDR algorithm system architecture
首先将二维空间内行人的运动分为行走、跑动、左跨步、右跨步和后退5 种状态,利用智能手机作为定位设备,通过改进传统的峰值检测法,实现适用于复杂运动状态的步频检测及计步;接着构建基于线性支持向量机(Support Vector Machine,SVM)的多分类器,完成运动状态的初步识别;然后提出基于人体运动规律的相邻步态约束法,对分类结果进行校正,实现高精度的运动状态识别;最后,基于识别结果对传统PDR 算法进行改进,并进行航向纠正,实现二维平面下基于运动状态识别的行人导航定位。
智能手机内置加速度计的输出频率范围为15-200 Hz[8],本文采用50 Hz 作为手机输出频率。将采集的三轴加速度数据按式(1)合并得到合加速度模值:
其中:a为合加速度模值;ax、ay、az分别为x轴、y轴、z轴加速度,g为重力加速度,大小为9.8 m/s2。
目前智能手机多采用价格低廉的惯性传感器,存在较大噪声,若将其输出信号直接进行步态检测则会严重影响计步的精度。常见的用于减小加速度计噪声的滤波技术有低通滤波、移动均值滤波以及卡尔曼滤波等。由于理想加速度波形呈连续性变化,且加速度计主要噪声来自于随机噪声,因此本文采用移动均值滤波法[9]对滤除重力的合加速度数据进行预处理。本文通过实验结果分析,发现当滤波窗口大小N取值为3 时滤波效果最佳且不影响实际运动波形。
传统的波峰检测法通过搜寻单步内的波峰与波谷,并利用间隔去除伪波峰/谷,再结合零点交叉法即可实现正常步态下步频检测,在类似于正弦波运动(如行走、慢跑)下能实现较好的检测效果。但是,在本文所涉及的左右跨步及后退等运动状态下,该方法检测的运动波形通常不存在明显的波谷,因此传统的峰值检测无法正确检测步频。为此,本文提出一种改进的单峰值检测法及零点搜寻规则,实现基于多种运动状态下均适用的步态检测方法,其流程如图2所示。
图2 单峰值步态检测Fig.2 Detection of single peak
1)单峰值检测
鉴于本文所研究的部分运动状态下合加速度波形无明显波谷,本文采用以下单波峰检测方法实现能通用的行人步态检测,即舍去波谷,只需通过波峰完成单步步态检测,如图3 中所示。图中,p数组表示有效波峰,k为p的索引,peak_index表示波谷所在加速度数组a中的索引。本文所设置的峰值阈值1σ为2 m/s2。波峰之间最小间隔2σ为15 个样本间隔。
2)零点检测的改进
步频是步长估计需要的重要特征之一,在基于腰部的行人惯性导航技术常通过零点检测来完成步频的统计。本文则在单峰值检测下进行零点判断,以单步波峰为基准,其靠前搜寻的第一个零点即标定为该步左零点,右零点则为该步波峰靠后搜寻的第二个零点。为抑制噪声影响,本文设置零点最大搜索范围,左右零点最大搜索范围分别为12 和25 个采样点间隔。
通过多次实验测试,本文的单波峰检测法在本文所研究的多种运动模式下均能实现100%正确检测率,检测效果如图3所示。
图3 多运动步态检测Fig.3 Detection of step
1)线性SVM 原理
支持向量机(SVM)是一种二分类模型,由Vapnik等人提出并迅速发展起来的一种基于统计学习理论的机器学习算法,它的核心思想是通过构建超平面函数,正确地将样本数据集进行划分。假设现有样本数据集其中表示第i个特征向量,表示的类标记,其符号用于区分不同实例,样本点表示为。超平面决策边界函数为:
式中,γ为第i个样本点到超平面的距离。对于满足条件的(,)w b,还需增加边界函数约束,防止最大分类间隔空间内存在数据点:
式(5)中,M为惩罚因子。同时需满足式(6)约束条件:
通过优化算法求解便可得到满足最优超平面的(,)w b,即可通过式(7)进行样本分类:
2)SVM 多分类器
鉴于本文需要实现人体多种运动状态分类,而SVM 是一个二分类器,因此需要训练多个SVM 模型完成多分类模型。常见的多分类方式有一对多(One-Versus-Rest,OVR)及一对一(One-Versus-One,OVO)两种。假定有m个类,OVR 需要训练m个二分类器,对于构建某类分类器,将其对应数据标签设为+1,其余数据标签设为-1,最后通过投票的方式统计得票最多的类作为此分类识别的结果;OVO 则是每两个类都训练一个分类器,即总分类器个数为m(m-1)/2,最终同样通过投票的方式决定分类的结果。结合本文使用场景,OVO 在训练单个模型时较OVR快,且在新增运动状态时,只需要重新训练和增加新运动样本相关的分类器即可,因此本文选用OVO 模型解决多分类问题。
在这里特征指的是对数据的统计量,合适的特征选择对分类算法起到至关重要的作用。常见的特征类型可分为时域特征、频域特征和时频特征。频域特征常利用谐波分析法(如傅里叶变换)获取,因此计算量较大,而时域特征则一般利用简单的基本运算即可获取。由于本文采用智能手机作为实际应用设备,考虑计算的复杂性及实时性要求,本文仅对时域特征进行提取并分析,生成特征矩阵,进而完成SVM 分类器的构建。
1)特征提取
特征选择决定识别准度,不同分类数据只有在某种特征下存在明显的差异才能通过数学手段将其进行区分。本文通过对加速度计输出的三轴加速度及预处理后的合加速度进行特征提取,将均值、绝对值均值(先进行数据绝对值化再求其均值)、方差、众数、最大值、最小值、四分位距、三四分位距、互相关系数、偏度、峰度、平均绝对误差作为基本时域特征,通过标记F1~F47依次标记以上不同特征,每种特征按x轴、y轴、z轴和合加速度顺序进行编号,其中互相关系数编号顺序分别表示x轴与y轴、x轴与z轴、y轴与z轴加速度互相关系数。此外,还引入Hjorth 参数的中间变量M4[10]作为特征F48~F51,自定义x轴加速度特征(1)f作为特征F52:
其中,N为单个窗口采样点数,在特征分析时,每2 s时间的采样数据作为一个窗口。
2)特征筛选
一般来说,在分类器的构建过程中,特征数量与分类识别的正确率呈正相关,但随着特征数据量的增多,分类识别的计算复杂度也相应增加,且若存在较多无效特征,将会严重影响识别结果的准度。因此特征的选取对分类器的性能和分类识别的正确率至关重要。本文将上述提取的特征进行逐一筛选,将类似图4所示能够有效区分至少一种运动状态的特征进行统计,如表1所示,筛选后共计特征数量为34。
图4 加速度x 轴(1)f 值Fig.4 (1)f for the X-axis acceleration
表1 有效特征Tab.1 Valid features
特征矩阵构建完毕之后,若模型尚未建立,则进行分类模型的建立;若已存在模型,则可直接以训练好的分类器进行分类识别,模型的建立与分类识别流程如图5所示。
图5 SVM 分类流程Fig.5 Classification flow chart of SVM
为了将分类算法与室内行人惯性导航技术结合,实现行人在多运动状态下的室内定位,实际应用时手机需要动态处理传感器采集的数据,本文研究了不同宽度的数据处理窗口对分类结果的影响,以寻找满足定位实时性要求的最优数据处理窗口。实验中,实验人员共采集8 组数据,保证每组数据中每种动作状态数据采样时间不低于1 min,采取交叉验证思想,根据本文所构建的SVM 多分类器得到相应分类正确率,并计算在不同窗口宽度下的平均识别正确率,如表2和图6所示。表2 中实验序号即代表该次实验以此样本作为训练集,其余样本为测试集。当窗口宽度大于1 s 时,识别率没有明显上升趋势,平均识别率均不低于98%。考虑在实际运动场景中,单个数据窗口采样时间内可能存在运动切换过程,但识别算法的局限性在于只能将其区间判断为单种运动状态。因此,数据窗口选择时应该尽量小,通过实验对比,本文选取的用于运动状态分类的最优窗口宽度为1.5 s。
表2 运动识别的识别率Tab.2 Recognition rate of motion recognition
图6 不同窗口下平均识别率Fig.6 Average recognition rate under different window sizes
图7 测试集SVM 预测结果对比Fig.7 SVM prediction results
本文所构建的SVM 多分类器正确识别率已达到98%以上,基本满足运动状态识别的要求。但就本文所研究的目标重在行人室内定位中的应用,且惯性定位技术的弱点主要在于难以有效消除累计误差,因此高精度的运动状态识别是实现多运动状态下长时间室内准确定位的关键。图7 是某次测试样本的分类预测效果,在识别序列中,个别错误识别编号呈现突变情况,本文为此提出以下考虑人体运动规律的相邻步态相关性约束算法,实现个别错误识别的纠正。
图8 运动状态修正Fig.8 Correction of motion state
基于行人日常运动规律,正常情况下,行人在超短时间内进行多次动作切换的概率极小,为此本文假设行人在1.5 s 的窗口大小时间内做出最多一次运动状态切换。基于上述假设,本文采用相邻窗口步态约束法,通过当前估计运动状态来纠正前一窗口运动状态,从而纠正个别编号错误识别。设连续相邻的四个窗口的估计运动类型分别为W1、W2、W3、W4,当前窗口为W4,待修正窗口为W3,需修正的目标如图8中①、②所示。W3修正条件如下:
③其余情况不进行修正。
通过步态约束,纠正前后分类识别率对比如图9所示。纠正后,平均正确识别率达到99.37%,接近100%。
图9 步态约束前后识别率对比Fig.9 Comparison of recognition accuracy before and after gait constraint
传统的PDR 算法如式(10)所示,该算法利用惯性传感器计算人的步长和方向,从而推测行人在建筑内的踪迹:
式中,()X k和()Y k表示行人第k步在二维导航平面的位置,表示第k步的航向,表示第k步的步长。结合传统PDR 算法,本文提出式(11)所示行人多运动状态航迹推算算法:
步长是影响定位准确性的关键因素之一,常见步长模型包括线性步长模型、非线性步长模型和人工智能步长模型。由于人工智能步长模型计算复杂度较高,鉴于本文已通过SVM 来实现运动状态分类,具有一定计算复杂度,因此采用计算简单,易训练的线性/非线性步长模型组合方式估计步长。对于行走,跨步及后退状态均为低中速运动,步频较低,因此采用式(12)表示的由步频及加速度方差决定的线性步长模型。对于跑动状态,其步频较高,因此采用式(13)所示只由加速度极值决定的Weinberg 非线性步长模型[11]。
式中,L表示步长,为第k步步频,var()a表示单步合加速度方差,A、B 和C 为常数,通过训练得到。
航向角的准确解算是保证定位精度的重要因素,航向的偏差将会直接导致定位轨迹的偏移,从而严重影响定位的结果。四元数法计算量较余弦法和欧拉法小且精度较高,因此工程中常用来作为捷联惯导系统姿态更新,该方法可以表示为:
利用陀螺仪获取角速度,通过变换矩阵得到导航坐标系下角速度数据,再将z轴角速度进行积分,即可得到航向角。由于行人手持手机时,不能总是保证手机水平放置,因此航向角与实际转向角存在偏差。本文基于行人主要沿主航向前进的假设,引用基于缓存区改进HDE 算法[12]进行航向补偿,提高航向解算的精度。在本文中,主方向区间为30°,即共设置12个主方向,反馈系数设置为0.01。
本文以苹果公司生产的iPhone 6s 作为传感器数据采集测量工具和定位平台,在实验过程中,实验者通过手持手机(具体使用方式如图10所示)进行基于多运动状态的定位实验。实验中行人运动方式包含行走、跑动、左跨步、右跨步以及倒退。
图10 智能手机的手持方式图Fig.10 The usage pattern of smartphone
图11 多运动下定位轨迹Fig.11 Multi motion positioning trajectory
图11 为基于人体状态识别的PDR 定位轨迹图,行程为从起始点出发经矩形轨迹,最终返回起始点。从图11 中可以看出,本文所提的运动状态识别算法在实际定位过程中运动状态区分度明显,几乎无状态相互紊乱现象。定义定位误差为起始点与轨迹终点之间距离占总运动距离的百分比。通过对定位结果进行误差分析,在本文所提出的基于人体多运动状态的PDR算法下,进行全长约262 m 的矩形路线实验中,起始点与轨迹终点距离为3.42 m,定位误差为1.28%。为进一步验证本文算法的有效性和可靠性,本文分别在矩形路线以及弧形路线下进行了不同轨迹解算算法对比实验,对比结果如图12 和图13所示。
图12 和图13 分别为矩形路线和弧形路线下不同轨迹解算算法对比图,其参考路径长度分别约为262 m 和400 m。从图12、13 中可见,传统PDR 定位算法由于没有区分左右跨步和倒退行走等运动状态,在矩形路线以及弧形路线下均严重偏离实际路线,其在矩形路线和弧形路线下的距离误差分别为31.80 m和40.39 m,即定位误差分别为12.14%和15.42%,均不能达到日常精确定位需求。而本文提出的基于人体多运动状态识别的PDR 算法在矩形路线和弧形路线下的距离误差分别为4.20 m 和5.21 m,定位误差分别为1.60%和1.30%,远远低于传统PDR 定位误差。
图12 矩形场地下不同轨迹解算算法对比Fig.12 Comparison of different trajectory algorithms in rectangular field
图13 弧形场地下不同轨迹解算算法对比Fig.13 Comparison of different trajectory algorithms in arc field
本文提出一种基于人体运动状态识别的PDR 算法。利用智能手机作为数据采集测量工具,针对多运动状态下传统峰值检测法的计步方法的不足,提出基于合加速度的单峰值检测法,并结合改进的零点检测法获取精准步数及步频。对加速度进行时域特征提取和分析,并引入额外特征,通过特征筛选,构建线性SVM 多分类器,在此基础上提出基于行人日常运动习惯的步态约束法进行状态识别结果纠正,从而实现高准确率的运动状态识别。通过提出一种基于人体运动状态识别的PDR 改进算法实现二维平面内行人精准导航定位。实验结果证明,基于本文提出的行人运动状态识别方法,可实现平均99.42%识别正确率,并解决了左右跨步以及倒退状态与行走状态难以分类识别的问题。本文最终实现在多运动状态下定位误差优于2%的基于人体运动状态识别的定位算法,定位实现简易快捷,为行人多种运动状态下的室内准确定位导航打下了良好基础,在消防等室内定位领域具有广阔的应用前景。