1、一种适用于单片机的老人跌倒检测算法研究 孙荣霞 马少卿 王硕南 沈文博 河北大学电子信息工程学院 摘 要: 针对单片机的计算能力和检测系统的实时性, 设计了一种可穿戴的老人跌倒检测装置。利用六轴陀螺仪加速度计进行原始信号的采集, 将合成加速度和姿态角作为特征量, 设计一种基于二叉树支持向量机分类思想的三级检测算法。首先, 以合成加速度是否超出阈值作为分类条件, 识别样本是否属于剧烈运动;其次, 则以合成加速度是否呈现周期性变化和人体是否处于类静止状态 (合成加速度在 0.81.2 g) 将样本进一步细分;最后, 则通过判断人体的姿态确定老人是否跌倒。当检测到老人跌倒后, 利用 GPS 对老人进
2、行定位, 同时利用 GSM 模块发送报警信息。实验证明算法准确率高、实时性好。同时能够准确定位, 并将信息发送出去。关键词: 跌倒检测; 二叉树支持向量机; 惯性测量单元; 定位; 无线通信; 作者简介:孙荣霞 (1960) , 女, 高级工程师, 硕士生导师。主要从事分析仪器、环境监测、检测技术及自动化装置方面的研究工作。作者简介:马少卿 (1992) , 男, 在读硕士研究生。主要从事惯性传感器信号处理、无线传感网络方面的研究工作。作者简介:王硕南 (1988) , 男, 硕士研究生。主要从事检测技术及自动化装置方面的研究工作。收稿日期:2017-02-27基金:河北省研究生创新资助项目
3、(S2016015) Research on fallen elder detection algorithm applicable to single chip microcomputerSUN Rongxia MA Shaoqing WANG Shuonan SHEN Wenbo School of Electronic Information and Engineering, Hebei University; Abstract: In allusion to the computation capability of the single chip microcomputer and
4、the real-time performance of the detection system, a wearable fallen elder detection device is designed.The original signal is collected by the six-axis gyroscope accelerometer, and with the synthetic acceleration and attitude angle as the characteristic quantities, a three-level detection algorithm
5、 based on binary-tree support vector machine (BT-SVM) classification is designed.First, whether the synthetic acceleration has exceeded the threshold is taken as the classification condition to identify whether the sample is in strenuous motion.Second, the sample is further classified according to w
6、hether the synthetic acceleration (0.81.2 g) is changing periodically and whether the human body is in static state.Finally, whether the elder has fallen or not is judged according to his attitude.When a fallen elder is detected, his location will be determined by GPS, and the alarm information will
7、 be sent by the GSM module at the same time.The experimental results show that the algorithm has high accuracy and good real-time performance, and can locate the fallen elder accurately and send information out.Keyword: fall detection; BT-SVM; inertial measurement unit; location; wireless communicat
8、ion; Received: 2017-02-270 引言研究资料显示, 在我国 65 岁以上的老年人每年至少跌倒 1 次的比例1为30%40%。老人在日常生活中发生意外时, 如果能获得及时的医疗救助或他人的帮助, 可以有效减少当事人所受的伤害。目前跌倒检测的主流研究手段主要有两种, 一种是基于图像分析的方法, 另一种是基于惯性测量单元 (Inertial Measurement Unit, IMU) 检测方法。基于图像分析的方法对设备要求高、算法复杂, 而且局限于特定的场合。基于 IMU 的检测方法不但成本低, 而且不受环境限制, 方便携带2。基于 IMU 的跌倒检测, 国内外众多学者进行了
9、深入的研究。文杰等人提出通过计算合成加速度的平均值和人体姿态来检测跌倒3。但是利用重力加速度向量进行姿态解算, 容易受机体运动加速度的影响, 短时间内精度较低。王之琼等人提出了基于极限学习机的跌倒检测分类算法4, 更多侧重于对跌倒检测算法的研究, 算法相对复杂, 计算量较大。刘鹏等人提出了基于固定阈值的信号幅度向量滑动平均值法 (SVMSA) 和差分信号幅度域 (DSMA) 2, 在计算 SVMSA和 DSMA 时需要多次进行积分和微分运算。对于单片机而言, 运算量较大, 而且实时性不好, 不适合应用于便携式设备中。本设计利用基于二叉树支持向量机分类思想 (Binary Tree SVM, B
10、T-SVM) 将姿态角和合成加速度作为特征量, 引入三级跌倒检测算法。在进行姿态解算时选用互补滤波器来修正由角速度求解姿态时的累积误差。算法相对简单, 实时性好, 适合应用于可穿戴设备中。1 跌倒检测算法1.1 特征值预处理在进行跌倒分析前, 需要对传感器采集到的数据进行预处理, 首先建立自然坐标系, 人体直立且面部向前的水平方向定义为 Y 轴正方向, 水平向右定义为 X轴正方向, 垂直向上定义为 Z 轴正方向。将检测装置佩戴到人体质量较为集中的腰部, 使传感器的三维坐标轴 (x 轴、y 轴、z 轴) 与自然坐标系完全重合。运动过程中加速度传感器测出的 X 轴、Y 轴和 Z 轴的加速度分别为
11、ax, ay和 az, 合成加速度如下:合成加速度的大小表征人体运动的激烈程度5。利用四元数来进行姿态解算。选用互补滤波器来消除利用角速度和加速度求解姿态时的噪声。1.2 分类原理老人的日常活动主要包括走、跑步、跳跃、上下楼、坐下、站立、蹲下, 躺下等。为了能够将跌倒和这些行为活动区分开, 利 BT-SVM 分类思想来进行分类。设计本装置的主要目的是检测老人跌倒, 所以只需要将跌倒和其他干扰区分开即可。如图 1 所示。图 1 二叉树多分类 SVM 结构示意图 下载原图注:1 为平地走;2 为上下楼梯;3 为坐下, 站立;4 为蹲下;5 为躺下;6 为跑步;7为跳跃;8 为其他非剧烈运动;9 为
12、其他剧烈运动;10 为跌倒将图 1 运动模式进行了分类如表 1 所示。表 1 运动模式分类 下载原表 1.3 分类过程根据上述二叉树多分类 SVM 结构示意图设计了一个三级检测算法, 只有通过了前一级的检测, 才会进行下一级的检测, 直到检测出跌倒为止。检测过程中所使用的特征向量为合成加速度和姿态角。1.3.1 第一级检测算法跌倒是一个短暂的过程, 主要分为三种状态, 即失重状态, 撞击状态和静止状态, 当老人处于撞击状态时 a 的值会明显增大。选择合适的阈值可以将跌倒和一些非剧烈运动区分开。如图 2 所示, 选取了在实验过程中具有代表性的一组数据, 并将它导入到 Matlab 中进行绘图分析
13、。图 2 人体跌倒时的合成加速度变化曲线 下载原图人体在正常站立时 a 的值在 1 g 上下浮动;人体跌倒的瞬间处于失重状态, a 值会减小;随后身体与地面发生碰撞产生较大的合成加速度。碰撞结束后人体基本处于静止状态, a 的值稳定在 0.81.2 g, 从图 2 可以看到整个过程持续了 2 s左右 (采样频率是 100 Hz, 在整个过程大概有 200 个采样点) , a 的峰值为2.6 g 左右, 观察放大后的图像 (图 2 右上角) 可知有 8 个采样点的 a 值在 2.0 g 以上。人体正常走路时 a 的波动不会很大, 并且呈现出周期性变化, 如图 3所示, 人体正常行走时 a 的峰值
14、没有超过 2.0 g。快步走已经逐渐成为老年人锻炼身体的一种方式, 如图 4 所示当老人快步走时 a 值大部分都在 2.0 g 一下, 只有个别采样点的 a 值超过了 2.0 g。图 3 人体正常行走时的合成加速度变化曲线 下载原图坐下和起立也是老人日常生活中经常出现的活动, 其 a 值变化曲线如图 5 所示。当坐下时人体的上半身相当于在做自由落体运动, 当人体触碰到椅子时会产生较大的加速度。起立时会产生 Z 轴正方向上的加速度, 当人体完全站立的瞬间由于惯性会产生 Z 轴负方向上的加速度。通过观察其合成加速度变化曲线, 可以发现无论是坐下还是起立, a 值都在 2.0 g 以下。图 4 人体
15、快步走时的合成加速度变化曲线 下载原图图 5 坐下起立时的合成加速度变化曲线 下载原图通过对上述几个运动的分析, 将第一级检测 a 的阈值设定为 2.0 g 能够有效地将跌倒与正常走路、坐下起立区分开。快步走时会有个别几个采样点的 a 值超过 2.0 g, 但是这些采样点都是比较分散的, 且持续时间较短。而跌倒时 a 值超过 2.0 g 的采样点是连续的, 可以根据这一点将快步走和跌倒区分开, 同时滤除外部干扰引起的 a 值突变。第一级检测算法主要是将剧烈运动和非剧烈运动区分开。合成加速度是由 X, Y, Z 轴的采样值直接计算得到的, 本文采用中位值滤波法对合成加速度进行去噪处理。系统采样频
16、率为 100 Hz, 通过观察图 2 可知人体撞击地面的持续时间大约为 100 ms, 当有采样点的 a 值超过 2.0 g, 再连续采样 9 次, 对这 10 组数据进行排序, 取中间的 8 组数据, 如果其中有 6 组以上的数据超过了 2.0 g, 则通过第一级检测, 被判定为“疑似跌倒”, 进行二级检测。采用这种概率的方式更好地抑制了外部干扰引起 a 值突变。1.3.2 第二级检测算法第一级检测能够将跌倒与坐下起立、正常走、快步走这些非剧烈运动区分开, 但是在进行跑步、跳跃这些剧烈运动时也会产生较大的加速度。想要将这些运动和跌倒区分开, 还要加入第二级检测。跑步时的合成加速度变化曲线如图
17、 6 所示, 在跑步时 a 的幅值变化剧烈, a 的值在 2.0 g 上下浮动, 并且可以看到出有连续 6 个采样点的 a 值超过了 2.0 g, 这也充分说明了仅仅用一级检测时无法成功检测出跌倒的。图 6 人体跑步时的合成加速度变化曲线 下载原图人体跳跃时的合成加速度曲线如图 7 所示, 从图中可以看到跳跃过程中的合成加速度曲线有 4 个极值点 (排除跳跃结束后加速度震荡的过程) 。第 1 个极值点是下蹲蓄力的过程, 这个过程中人体的上半身相当于在做自由落体, 加速度下降。第 2 个极值点是人体起跳的过程, 这个过程中 X, Y 轴方向上的加速度变化不大, Z 轴上正方向上产生一个较大的加速
18、。第 3 个极值点是人体下落的过程。第 4 个极值点出现在人体与地面碰撞的过程中, 此时在 Z 轴的正方向上产生较大的加速度。从图 7 中可以看到无论是起跳的过程中还是与地面碰撞的过程, 都会出现连续 6 组采样点的 a 值超过 2.0 g。图 7 人体跳跃时的合成加速度变化曲线 下载原图从图 2 中可以看到在整个跌倒过程中连续出现 6 个以上采样点的 a 值大于 2.0 g 的情况只有一次, 老人在跌倒后的 3 s 内无法站起来, 其 a 值趋于稳定, 保持在 0.81.2 g。可以根据上述这两种情况来设置第二级检测。第二级检测算法将对“疑似跌倒”的情况进行二级检测, 由于跑步时一个周期性运
19、动, 跳跃的过程中也会出现第二次有连续几个采样点的 a 值大于 2.0 g。第二级检测算法将对“疑似跌倒”的情况进行二级检测, 由于跑步是一个周期性运动, 并且跳跃也会出现第二次峰值。通过一级检测后, 经过短暂的延时, 继续对人体的加速进行采样, 如果再次出现连续 3 个以上的采样点 a 值超过2.0 g, 则被判定为“未跌倒”, 返回一级检测。否则再进行静止检测。当人体处于静止状态时, a 值会在 1 g 上下波动, 根据静止状态下 a 值的变化范围, 定义一个基准带 B=b1, b2, 取 b1=0.8 g, b2=1.2 g。延时 3 s, 连续采样 10次, 如果有 8 组以上的数据处
20、于这个基准带, 则进入三级检测。1.3.3 第三级检测算法第三级检测作为辅助判断, 主要用降低第二级检测的误判率。如图 6 所示, 在跑步过程中有一小段的 a 值是小于 2.0 g 的。如果在通过第一级检测后, 刚好处于这个阶段, 那么就会产生误判。第三级检测的特征量为 pitch 和 roll, 在通过第二级检测后, 连续对人体的姿态采样 10 次, 如果有 8 组以上的 pitch和 roll 的绝对值超过 45, 则通过第三级检测, 判定为跌倒。系统的软件流程图如图 8 所示。图 8 系统软件流程图 下载原图图 8 中 C1, C2, C3, C4, C5, C6 分别代表(1) C1
21、为连续采样 10 次 a 值。(2) C2 为延时 3 s 后, 连续采样 10 次 a 值。(3) C3 为连续采样 10 次 roll 和 pitch。(4) C4 为 10 组数据中 a 值大于 2.0 g 的比例是否大于 4 5。(5) C5 为 10 组数据中 a 值在 0.81.2 g 之间的比例是否大于 4 5。(6) C6 为 10 组数据中 pitch 或 roll 的绝对值大于 45的比例是否大于 4 5。本设计采用三级检测算法, flag 为检测标志位, 第一级将 a 值作为检测参数, 排除了正常走、快步走、坐下、起立等非剧烈运动, 当进行第一级检测时, flag=0x0
22、1。第二级依然将 a 值作为检测参数, 利用跌倒的特性, 检测老人跌倒后的静止状态, 有效排除了跑步等周期性剧烈运动以及跳跃。由于老人的活动习惯不同、样本容量小, 上述两级算法可能存在误判的情况。故引入三级检测, 三级检测算法的参数是人体的姿态, 姿态角的引入可以进一步降低检测误判率。不同的检测标志位代表正在进行的检测级数, 通过第三级检测后进入中断 2, 开始进行定位和发送短消息, 最终实现跌倒检测。2 实验结果与分析为了验证检测装置和算法的可行性和准确性。邀请了 10 名健康的志愿者 (年龄2428 岁, 身高 160180 cm, 男 5 人, 女 5 人) 。验证在日常生活中检测装置是
23、否发生误判, 以及在跌倒时是否发生漏判。同时验证了跌倒后是否能准确定位、发送短信, 一键报警功能和发短信获取老人当前位置的功能。2.1 针对日常活动的实验10 名志愿者分别佩戴本装置进行了 5 组实验, 分别是正常走、快步走、跑步、跳跃、坐下起立。每人每组实验做 5 次。每组实验采集到 50 个数据, 共计 250个数据。实验结果如表 2 所示。表 2 日常活动检测结果 下载原表 从表 2 中可以看出在进行一些非剧烈运动时检测装置的误判率为 0, 但是在进行跑步时出现了一次误判, 这是由于一位志愿者在跑步结束后直接坐到草地上, 导致了误判。在跳跃过程中也出现了两次误判。考虑到跳跃和在跑完步后直
24、接坐下在老人日常生活中出现较少, 并且本装置中设置了取消报警按钮, 所以误判率在可接受的范围内。2.2 针对跌倒的实验10 名志愿者分别佩戴本装置进行了 4 组实验, 分别是正常走时向前跌倒、正常走时向后跌倒、跑步时向前跌倒、跑步时向后跌倒。每人每组实验做 5 次。共计 200 个数据。实验结果如表 3 所示。表 3 跌倒检测结果 下载原表 从表 3 中可以看到跑步时向前跌倒的检测准确率最高, 这是因为跌倒时的合成加速度非常大。正常走时跌倒出现漏判的原因是, 跌倒过于缓慢了, 没有像真实跌倒那样逼真, 毕竟所有的动作都是由志愿者模拟老人完成的。此外样本容量还不够大, 算法还需进一步的完善。装置
25、检测到跌倒后向目标手机发送报警信息如图 9 所示。图 9 报警信息 下载原图从图 9 所示的报警信息中可以看到所处位置是北纬 38.886 554 6, 东经115.571 659 0。在百度地图上进行经纬度查询如图 10 所示。图 1 0 定位信息 下载原图测试地点是河北大学新校区 C2 实验楼, 从图中可以看到装置的定位误差在可接受范围内。3 结论本文设计了一种老人跌倒检测装置, 利用惯性测量单元获取人体运动时的加速度和角速度信息。利用这些信息检测老人跌倒, 并且设计了完整的检测报警系统, 能够通过 GPS 获取老人位置信息, 同时向目标手机发送短信。针对单片机的计算能力和装置的实时性,
26、设计了一种基于 BT-SVM 分类思想的三级检测算法。实验证明算法简单可靠, 准确率高, 适合应用于便携式设备中。本装置易于进行功能扩展, 比如加入心率检测传感器, 当老人独自在家中突发心脏病时, 能够及时将信息传送给 120 和家人。本装置还有一些可以改进的地方, 例如续航时间较短, 体积还可以更小一些, 扩大样本容量, 进一步完善跌倒检测算法。参考文献1任志玲, 张冰倩, 郑丽媛.基于加速度传感器的跌倒检测与报警系统设计J.计算机测量与控制, 2013, 21 (6) :1428-1430. 2刘鹏, 卢潭城, 吕愿愿, 等.基于 MEMS 三轴加速度传感器的跌倒检测J.传感技术学报, 2
27、014, 27 (4) :571-574. 3文杰, 马忠丽, 薛祖播.基于无线通信与 GPS 定位的人体跌倒检测器J.应用科技, 2014, 41 (4) :23-28. 4王之琼, 曲璐渲, 隋雨彤, 等.基于极限学习机的跌倒检测分类识别研究J.中国生物医学工程学报, 2014, 33 (4) :419-424. 5林海波, 李杨, 张毅, 等.基于时序分析的人体运动模式的识别及应用J.计算机应用与软件, 2014, 31 (12) :225-228. 6李易陆, 陈洪波, 蒋晓旭, 等.基于三轴加速度传感器的人机交互智能手环J.桂林电子科技大学学报, 2015, 35 (5) :412-
28、415. 7谢丛霜, 邓豪, 王露.基于 STM32F407 的颈部姿态报警装置设计J.信息通信, 2015 (10) :59-60. 8徐雷, 张瑾, 马腾, 等.基于 GSM 网络的老年人身体姿态检测系统设计J.信息化研究, 2014, 40 (6) :65-68. 9李梦华, 熊显名, 赵国如.基于 GPS/GPRS 的跌倒监测终端J.计算机系统应用, 2014, 23 (12) :67-71. 10王剑.基于 MEMS 三轴加速度计的跌倒检测电路的设计J.自动化技术与应用, 2013, 32 (6) :81-84. 11兰建军, 谭力弓, 朴亨, 等.惯性传感器和互补滤波器在姿态估计中
29、的应用J.制造业自动化, 2013, 35 (9) :65-67. 12陈孟元, 谢义建, 陈跃东.基于四元数改进型互补滤波的 MEMS 姿态解算J.电子测量与仪器学报, 2015, 29 (9) :1392-1396. 13吴恩英, 吕佳.基于二叉树支持向量机多类分类算法的研究J.重庆师范大学学报, 2016, 33 (3) :102-106. 14郑伟, 马楠.一种改进的决策树后剪枝算法J.计算机与数字工程, 2015 (6) :960-966. 15CURONE D, BERTOLOTTI G M, CRISTIANI A, et al.A real-time and self-calibrating algorithm based on triaxial accelerometer signals for the detection of human posture and activityJ.IEEE transactions on information technology in biomedicine, 2010, 14 (4) :1098-1105.