王 振, 肖明波
(杭州电子科技大学 通信工程学院,浙江 杭州 310018)
数据融合的跌倒检测系统设计*
王 振, 肖明波
(杭州电子科技大学 通信工程学院,浙江 杭州 310018)
为解决跌倒检测中检测设备功耗高、报警范围受限、携带不便等难题,结合Arduino与Android设计了基于MPU6050的跌倒检测系统,提出了基于数据融合的并行阈值算法,通过对5位实验者的模拟测试,该算法实现了97.6 %的精确度和99.2 %的特异性。实验表明:算法和方案在方便携带的基础上能较为准确地实现人体跌倒检测并及时定位报警。
跌倒检测; 数据融合; 并行阈值算法; Arduino; Android
目前,国内外大部分跌倒检测系统的研究并没有给出完整的系统设计方案,只针对跌倒检测算法做出了研究,且大多计算量较大、设计复杂、价格昂贵,难以得到广泛的应用。Shibuya N等人提出基于步态分析的支持向量机 (support vector machine,SVM)跌倒检测算法[1,2],实现了对人体活动的分类识别,并有效的检测到跌倒事件。Jantaraprim P等人提出了基于时间窗的SVM双阈值判决法[3]检测人体摔倒,算法简单有效。2012年深圳爱福莱科技有限公司推出了检测跌倒并且自动发送求救信息的手机—爱福莱A03[4],它能够自动检测跌倒事件、并对跌倒地点自动定位、报警,但生产成本太高,采样器也只采用了单一的三轴加速度计,可靠性不高。2015年,重庆邮电大学联合北京医院开发了一种基于多阈值判决法的跌倒检测系统[5],将六轴惯性运动传感器MPU6050和GMS/GPS模块集成在一起,增大了装置的体积和开发成本。
本文提出了一种基于数据融合的并行阈值算法,并设计开发出以Arduino为硬件平台,MPU6050为采样器,Android App自动定位报警的跌倒检测系统,具有体积小、运行稳定可靠等优势,成本低、操作简单,拥有较大的市场空间。
系统控制器采用Arduino Nano开发板[6],相较于其他开发板,该控制板体积小、功耗低、功能强大,其主控制芯片为ATmega328,可提供14路数字I/O接口(其中6路作为脉宽调制(PWM)输出)和8路模拟输入接口,完全满足系统设计需求。跌倒检测系统的示意框图如图1所示,系统主要由跌倒检测模块和报警通知模块两大部分组成。
图1 跌倒检测系统示意框图
跌倒检测模块中,首先将MPU6050接入到Arduino控制板的数据端和时钟端,并通过I2C串口通信传输数据。Arduino通过Z相应转换及系统设定的数据融合算法提取相应特征值,进而由文中提出的并行阈值算法判断跌倒事件是否发生。若跌倒事件触发,则小灯闪烁,警报响起;如果20 s内没有解除警报,蓝牙模块HC—05就会通过Arduino的串行输出和输入通信与上位机蓝牙进行通信,并传输“true”给手机App端。硬件电路设计原理图2所示。
图2 硬件电路设计原理
报警通知模块中,当上位机App后台监听到“true”时,系统自动定位用户当前位置,并将用户当前位置以短信形式发送到监护人手机。Android App的设计流程图如图3所示。Android App的主要设计程序为:使用Bluetooth Adapter的start Discovery()方法搜索蓝牙设备,通过BluetoothSocket建立通信并实施监听。当后台监听到“true”字符的时候,触发getLocation()方法调用百度API自动定位当前位置,同时触发事件,通过SmsManager向预先设定好的手机号发送当前所读取到的经纬度以及对应位置。Android App端的界面图和收到的短信内容如图4所示。
图3 APP设计流程
图4 APP界面和报警短信内容
MPU6050是由陀螺仪和三轴加速度传感器组成。陀螺仪输出角速度,角速度与时间积分计算角度,其积分时间Dt越小,输出角度越精确。但陀螺仪的原理决定了它的测量基准是自身,并没有系统外的绝对参照物,且Dt不可能无限小,所以,积分的累积误差会随着时间流逝迅速增加,最终导致输出角度与实际不符。而加速度传感器测量的是重力方向,在无外力加速度的情况下,能准确输出Roll/Pitch两轴姿态角度,且角度不会有累积误差。但是加速度传感器实际上是用微系统(MEMS)技术检测惯性力造成的微小形变,而惯性力与重力本质是一样的,所以,加速度计不会区分重力加速度与外力加速度,当系统在三维空间做变速运动时,其输出变得不准确。在没有其他参照物的基础上,要得到较为准确的身体倾斜角,就要利用信息融合扬长避短,结合两者的优点,摒弃各自缺点,设计算法在短时间尺度内增加陀螺仪的权值,在更长时间尺度内增加加速度权值,这样系统输出角度就接近真实值了。
本文采用联合卡尔曼融合算法[7],先分散处理,再全局融合,各子滤波器并行运行。联合卡尔曼滤波融合框图如图5所示。
图5 联合卡尔曼滤波融合框图
根据卡尔曼基本方程,局部滤波方程为
Xi(k,k-1)=Φi(k,k-1)Xi(k-1)
Xi(k)=Xi(k,k-1)+Ki(k)[Zi(k)-Hi(k)Xi(k,k-1)]
Pi(k)=[1-Ki(k)Hi(k)]Pi(k,k-1)
式中i=1,2;X为被估计状态;Φ为状态转移阵;Γ为系统噪声驱动阵;Q为系统噪声序列的方差阵;R为量测噪声序列的方差阵;H为量测阵;K为滤波增益;Z为X的量测;P为估计均方误差。
主滤波器只负责信息融合处理,不进行滤波运算,取系统的全局估计值为各局部滤波器加权和,即
X(k,k-1)=β1X1(k,k-1)+β2X2(k,k-1)
式中β1+β2=1。β1和β2均为子滤波器的权值。
在信息融合的过程中,如果某一子滤波器的状态估计精度高,则主滤波器对该子滤波器输出的利用权重就大;反之,其利用权重就小[8]。这种结构的子滤波器相互独立,没有反馈作用带来的相互影响,能够保障系统的容错性能最好。同时数据计算量少,有利于数据获取的实时性。
为验证算法的适用性,实验中,截取一部分人体绕竖直方向转动的运动信息,通过融合算法得到角度值,并与常见的一阶、二阶互补滤波得到的角度值以及原始数据做出对比。如图6所示,看出:原始数据包含许多噪声,经过一阶滤波之后数据平滑,但是数据的稳定性相对于二阶滤波和卡尔曼滤波融合略差,而二阶互补滤波后的数据仍掺杂不明显的高频信号,故卡尔曼滤波融合更适于本文研究。
图6 倾斜角度值对比
人体跌倒属于一种短暂性的活动,身体加速度的幅度峰值变化较大,人体跌倒的过程中,身体的倾斜角度也是在变化的,最终变化幅度为80°~100°。经典阈值算法根据加速度幅值和倾斜角度的优先级进行判断,然而这种算法的缺点是,当一些检测对象做剧烈运动时,会出现误判、漏判的问题。参照经典阈值算法,本文所提取的特征值如下
θ=arccos((ax×bx+ay×by+az×bz)/AM/BM)
跌倒检测系统的主要应用对象是病人和老人,他们的日常行为往往只有走路,坐下站起,上下楼和弯腰。人体行为的幅度和持续时间是不可控的,所以,这些日常行为往往会对跌倒行为的检测产生干扰。但跌倒行为有一个日常行为所不具备的特征点,即θ和AM是同步大幅度变化的。由图7可以看出,在采样周期为20 ms的前提下,人体在实际跌倒过程中,由于多种因素影响,AM会降低到接近0.4gn,紧接着人体与地面发生撞击,在加速度曲线中会产生一个很大的冲击,AM高达2.1gn。AM大幅度变化的同时,随着跌倒行为的发生,人体会发生翻转,倾斜角度递增变化。而人体跌倒的时间一般在2~4 s,通过分析,跌倒过程中,失重状态大约持续0.6~1.2 s,撞击状态持续大约0.7~1.5 s。基于这些特征变化,本文提出基于数据融合的并行阈值算法,流程图如图8所示。
图7 跌倒时AM变化和θ变化
图8 人体跌倒检测流程图
为了验证本文提出算法的可行性和准确性,邀请了5名健康志愿者(4男1女,年龄22~25岁,身高160~182cm),在实验楼内模拟病患者和老年人,分别进行走路,上下楼,站起蹲下一系列连贯的日常行为,并模拟跌倒动作:前后跌倒、左右跌倒。实验中,共采集100组数据与现有的算法做对比,得到的结果为通过组数。如表1与表2所示,其中,表2所得到的准确率为算法的特异性。
表1 跌倒检测实验结果统计
表2 日常行为实验结果统计
根据相关资料[2],SVM算法的准确率为98.7 %,特异性为99.5 %。从表1可以看出,本文提出的算法准确率为97.6 %,特异性为99.2 %。在准确率上,基于数据融合的并行阈值算法优于经典阈值算法,略低于SVM算法。在特异性上,本文算法与SVM算法持平,高于经典阈值算法。然而SVM算法虽然精度高,但是计算量大,实时性低,对处理器要求高,功耗大。经典阈值算法的实时性,功耗低,精度却偏低。而本文提出的基于数据融合的并行阈值算法,在保留经典阈值算法优点的基础上,提高了精度和实时性,降低了功耗,实现了最初的设计目标。
本文在经典阈值法的基础上提出了基于数据融合的并行阈值算法,并将跌倒检测模块和Android App相结合,这样既方便了被检测者的携带,又消除了报警范围的局限性,实现了对跌倒事件的高精度检测。此外,系统还具有功耗低、操作简单、成本低、精度较高、故障发生率低等优点,不仅可以解决老年人及病人的跌倒检测和报警问题,在医疗康复方面,也能够对康复中的病人起到辅助看护的作用,并且可以辅助医生通过采集到的数据了解病人康复情况。
[1] Shibuya N,Nukala B T,Rodriguez A I,et al.A real-time fall detection system using a wearable gait analysis sensor and a support vector machine(SVM)classifier[C]∥2015 the Eighth International Conference on Mobile Computing and Ubiquitous Networking(ICMU),IEEE,2015:66-67.
[2] 郑汉卿,谷安.物体轮廓识别算法的应用研究[J].自动化技术与应用,2016,35(1):106-110.
[3] Jantaraprim P,Phukpattaranont P,Limsakul C,et al.Improving the accuracy of a fall detection algorithm using free fall characte-ristics[C]∥IEEE International Conference on Electrical Engineering/Electronics Computer Telecommunications and Information Technology,Chiang Mai,Thailand,2010:501-504.
[4] 深圳市爱福莱科技有限公司.全球首款自动求救的老人手机[DB/OL].[ 2012—10—26].http:∥www.beareyes.com.cn/2/lib/201210/26/20121026269.htm.
[5] 卓从彬,杨龙频,周 林,等.基于MPU6050加速度传感器的跌倒检测与报警系统设计[J].电子器件,2015(4):821-825.
[6] 赵英杰.Arduino互动入门设计[M].北京:科学出版社,2014.
[7] 陈玉坤,司锡才,李志刚.联合卡尔曼滤波在多传感器信息融合技术中的应用[J].弹箭与制导学报,2005,25(4):946-948.
[8] 何艳丽,黄飞龙.多传感器自动站的数据融合效果及优势分析[J].气象,2015(8):1028-1035.
Design of fall detection system based on data fusion*
WANG Zhen, XIAO Ming-bo
(School of Communication Engineering,Hangzhou Dianzi University,Hangzhou 310018,China)
Aiming at problem of high power consumption,limited range of alarm and inconvenience for carrying existing in fall detection devices,a fall detection system is designed based on MPU6050,using Arduino and Android.A parallel threshold algorithm based on data fusion is proposed,which achieves accuracy of 97.6 % and specificity of 99.2 % as shown by the simulation test of five subjects.Experiments show that the proposed algorithm and scheme can achieve accurate detection and timely location and alarming of human body fall,as well as portability.
fall detection; data fusion; parallel threshold algorithm; Arduino; Android
2016—06—07
浙江省重点实验室建设基金资助项目(GK130907208001)
10.13873/J.1000—9787(2017)06—0086—04
R 318
A
1000—9787(2017)06—0086—04
王 振(1993-),男,通讯作者,硕士研究生,主要研究方向为嵌入式系统设计、通信与信息系统,E—mail:zhen_always@sina.com。
肖明波(1971-),男,博士,教授,主要从事过程控制与优化、无线通信等研究工作。