徐甲栋, 陈 强, 徐一雄, 杨文龙, 张新宇, 梁明远
(1.上海工程技术大学 电子电气工程学院,上海 201620; 2.上海航天控制技术研究所,上海 201620)
随着社会的发展进步,我国老龄化问题越来越严重[1]。因为年龄增长,老年人身体素质变差,容易摔倒,得不到及时救护时,易引发安全事故。基于视觉的跌倒监测系统,不利于保护隐私[2],设备昂贵而且容易有监控死角,做不到时刻监护老人身体健康;基于环境的跌倒检测系统,受环境因素干扰大,例如基于声波的跌倒检测系统,因房屋材料的不同,检测效果差异大,且容易受到噪声影响。
本文基于微机电系统(micro-electro-mechanical system,MEMS)传感器[3]设计了一种可穿戴式的实时跌倒检测系统,选用了MPU6050传感器、SIM900A模块和ATGM332D模块采集和传输数据,通过加速度计补偿陀螺仪数据的方法,减小了陀螺仪误差,结合改进的多级阈值跌倒检测算法,设计了可穿戴装置和工程大智能看护小程序,实时监测老人是否跌倒。若检测到老人跌倒,及时发出警报并通知监护人,同时监护人可随时实时查看到老人的身体状态和实时位置,便于及时救助跌倒老人。
本文设计的跌倒检测系统主要以老人群体为服务对象,实现功能主要包括有:跌倒检测、实时报警、实时查看老人状态。集成的可穿戴设备放在腰部,系统组成结构如图1所示。通过MPU6050传感器内置的陀螺仪和加速度计实时采集老年人身体的角速度和加速度数据,微处理器STM32F103VET6实时计算并监测加速度和角速度数据是否异常,当检测到加速度数据异常时,用角速度数据作为辅助检测手段判断跌倒行为是否发生,若检测到跌倒行为,通过SIM900A将报警信息发送给监护人。同时ATGM332D实时采集老年人的位置数据,通过4G模块实时传送到监护端,监护人接到报警信息时,可以通过监护终端更直观的看到老年人的位置信息便于及时救助。
图1 检测系统结构
检测跌倒行为,先要设立一个合理的人体坐标系[4],本文以人正常站立时的重心坐标为坐标原点建立一个三维人体坐标系如图所示2所示。人体摔倒属于一种短暂性的剧烈活动[5],正常情况下,人体重心在三维坐标系下的加速度矢量和约1gn(1gn约等于9.8 m/s2,),但当跌倒行为发生时,人体会依次发生失重、撞击地面、静止等行为,人体重心的加速度变化依次为:1)失重:即人体的重心加速度矢量和小于1gn;2)人体重心加速度大于某个值N,N数值需经实验分析得出;3)静止:人体重心加速度矢量和约1gn。但是仅用加速度变化作为判断依据易产生误判,因此,需要用角速度矢量和进行辅助判断。
图2 人体坐标系
由于MPU6050内置陀螺仪会随时间漂移,且时间越长,漂移越大,因此,本文提出使用加速度计补偿陀螺仪误差的方法,矫正陀螺仪的漂移误差。人某些正常活动,例如,转身或者躺下翻身,可能会导致绕Z轴的角速度变化较大而产生误判。而且人体跌倒时,主要是与绕X轴和Y轴的角速度变化量相关,因此,计算角速度矢量和应忽视绕Z轴方向角的角速度变化量。根据使用手册,先将MPU6050采集的三轴加速度和三轴角速度数据进行A/D转换,然后根据欧拉角旋转矩阵结合加速度补偿角速度的算法,减小姿态角误差,再根据姿态角求得角速度矢量和[6]。角速度数据作为辅助判据,能大大提高跌倒检测的准确性,降低误报率[7]。
如图2所示,围绕X轴、Y轴、Z轴的旋转的角分别为横滚角φ、俯仰角θ和方向角γ。求加速度计N时刻测得的姿态角,设重力加速度矢量β=[0,0,-gn]T为参考向量,人体摔倒的过程中,人重心三轴加速度矢量和Ai的方向和重力加速度矢量β处于非垂直状态,可以根据重力加速度矢量β和重力加速度gn计算出加速度计N时刻测得的横滚角φacc和俯仰角θacc。解算过程如下:
绕X轴、Y轴、Z轴的欧拉角旋转矩阵分别为
(1)
解算出加速度计测得的横滚角φacc和俯仰角θacc分别为
(2)
(3)
得出了加速度计测得的N时刻绕X轴和Y轴的角度,再读出N时刻陀螺仪的绕X轴的横滚角和绕Y轴的俯仰角分别为θgvro和φgvro,则n+1时刻修正后的横滚角φn+1和俯仰角θn+1分别为
(4)
(5)
(6)
三轴加速度值分别为ax,ay,az加速度矢量和a为
(7)
为提高检测准确性和降低误报率,采集了志愿者的正常活动行为和跌倒行为的加速度和角速度数据[8],通过实验数据的分析对比,得出更合理的窗口时间和多级阈值设定值。
通过对静止、行走、坐下、躺下,跌倒等行为数据采集分析得图3。正常活动时,加速度矢量和a峰值不超过2.5gn,其中跌倒行为的加速度变化和其他正常活动行为明显不同,首先加速度矢量和数值先减小,然后经过短暂时间会出现一个较大的峰值,峰值最大达5gn,之后数值会迅速降到1gn左右。经过大量实验分析得出,失重后的检测时间窗口设为2 s较合理,准确度最高。对于X轴和Y轴的角速度矢量和进行分析,跌倒时最大角速度矢量和ω峰值能达到6 rad/s,其他行为最大角速度矢量和ω峰值最大不超过4 rad/s,设置合理的阈值可以区分两种动作行为。综上,使用加速度多级阈值检测法,并以角速度作为辅助判别手段,可以较为准确的区分跌倒行为和其他行为。
图3 实验数据采集
根据上述分析,基于改进的多级阈值跌倒检测算法流程如下:
1)判断是否发生失重:跌倒时,身体重心首先会失衡,即人体重心加速度小于1gn,本文系统中以加速度矢量和a<1gn并持续0.5 s为失重判别条件,若检测到失重行为发生时,进行第二步检测。
2)判断三轴加速度矢量和a是否出现大于2.5gn的峰值:当人体失重后,大约2 s内人体会跌落到地面,落地时会产生不小于2.5gn的加速度[7]峰值,本文以三轴加速度矢量和超过2gn为人体跌到地面的标志。若检测到人撞击地面后,则进入下一步检测,否则退出。
3)判断重心加速度是否接近1gn且持续3 s:当人跌落到地面后,加速度矢量和会降1gn为左右,若检测到人跌倒后的加速度特征变化,则进入下一步检测,否则退出。
4)通过角速度矢量和ω来做辅助判断:当检测到失重后,系统会连续采集2 s内X轴、Y轴的角速度和加速度数据,采集频率为100 Hz,即分别采集200个角速度和加速度数据。计算矫正过更准确的X轴和Y轴的角速度数据,当角速度矢量和ω超过4 rad/s,则更新位置并短信报警。算法流程图如图4所示。
图4 跌倒检测算法流程
ATGM332D定位模块可以实时获取老人的位置信息,当系统检测到老人跌倒时,会发短信给监护人报警,监护人登录工程大智能看护系统微信小程序,可以实时看到老人所在位置,及时进行救助。监护端功能实现主要分三部分:1)用GPS模块采集WGS84坐标系下的定位数据上传到云数据库;2)申请百度地图API,小程序获取云数据库数据并将WGS84坐标系下的定位数据转换成BD09坐标系下定位数据,根据百度反地理编码API将经纬度坐标转换成能看懂的地理位置;3)将老人身体信息和定位信息的实时定位显示在小程序上。监护端测试如图5所示,其中位置信息图里老人定位是空心圆点,监护人定位为为实心圆点。
图5 智能监护系统测试
为测试本系统跌倒检测的准确性和误报率,分别找了5名男性和5名女性志愿者模拟测试。对步行、跑步、坐下、躺下4种日常行为和向前、向后、向左、向右4种跌倒姿态进行测试[6],每名志愿者每个动作重复10次,共800次实验数据。记录并统计相关测试数据如表1所示。
表1 跌倒检测实验数据
根据实验数据,共实验800次,误报漏报18次,准确检测782次,日常活动准确率为99 %,跌倒行为检测准确率96.5 %,整体误报率为2.25 %,整体准确率为97.75 %。实验结果表明基于改进的多级阈值跌倒检测算法误差较小,准确率较高。
本文设计的跌倒检测系统基于改进的多级阈值跌倒检测算法,采用了MEMS传感器MPU6050、ATGM332D定位模块和SIM900A采集和传输数据,通过欧拉角旋转矩阵,利用加速度数据补偿陀螺仪漂移误差,计算出更准确的姿态角, 有效提高了跌倒检测的准确率和系统的可靠性。ATGM332D定位模块实时将定位数据传输到云数据库,微信小程序实现了实时查看被监护人的位置信息和状态信息的功能,若检测到跌倒时,能及时短信报警,便于被监护人得到及时救助。实验结果表明:本系统报警准确率97.75 %,可靠性高,系统稳定,隐私保护性好,穿戴便捷,基本满足对老年人进行实时监测的需求,达到预期效果。