基于MEMS的摔倒检测和定位系统设计

时间:2022-08-21 05:18:14

基于MEMS的摔倒检测和定位系统设计

摘 要为解决老年人日常生活中的摔倒检测和定位问题,设计了可穿戴式老年人摔倒检测和定位系统。采用低功耗的STM8S系列芯片,通过MEMS 三轴加速度传感器完成人体三轴加速度数据的采集和处理,使用卡尔曼滤波算法进行噪声剔除,实现了三级检测阈值摔倒检测算法,北斗GPS双模定位模块获得地理定位信息,GPRS模块进行远程报警。实验说明系统可以有效地对老年人摔倒行为作出检测,并实时进行定位和报警。

【关键词】摔倒检测算法 MEMS加速度传感器 北斗定位

随着我国人口老龄化的加速,老年人的照料和养老问题将严重加重未来社会负担。高效、有效、专业的养老产业是解决老龄化社会带来沉重养老负担的唯一途径。在老年人的日常生活中,摔倒[1]是老年人经常发生的意外之一,严重威胁老年人的身体健康甚至生命安全。因此,设计一种针对老年人的摔倒检测和定位装置的需求尤为迫切。

MEMS 技术以其体积小,重量轻,耗能低,谐振频率高等优势,近几年得到了快速发展和广泛应用,在加速度检测、状态检测、运动检测等方面的技术已经相对成熟和稳定。本文提出一种基于MEMS 三轴加速度传感器的老年人摔倒检测与定位系统,可穿戴并实时检测和卫星定位。三轴加速度传感器采集人体摔倒特征向量,北斗GPS模块判断摔倒位置,通过GPRS模块通知家人,大大提高老年人的安全保障,减轻了子女和社会的压力。

1 人体摔倒模型

1.1 摔倒检测算法

人体运动的特征向量包括加速度、加速度向量幅值SVM ( Signal vector magnitude) 、微分加速度幅值绝对平均值MADS ( Mean absolute value of differential) 、人体姿态角pitch、roll 和yaw等[2]。当人体进行剧烈活动时,SVM 峰值会变得比较大,其定义为:

(1)

其中:ax、ay、az分别为x、y、z 轴的加速度。

人体摔倒时状态变化剧烈,SVM一般会超过1.8gn,因而第一级摔倒检测阈值可选择1.8gn作为衡量准则。但当人体进行一些非摔倒性剧烈活动,如快速跑步,SVM的峰值有时也会超过1.8gn,这时可利用微分加速度幅值绝对平均值MADS 来进行第二级摔倒检测。研究表明,人体摔倒期间MADS 超过0.36g/s,跑步期间MADS 小于0.36g/s,因而选择0.36g/s作为人体摔倒的第二级判决阈值。MADS具体定义如下[3]:

(2)

其中:T 为时间周期

为了进一步减少误报,可利用三轴加速度和重力之间的关系,计算人体姿态角yaw,即人体躯干与水平面的倾角θ。将人体姿态角yaw小于40°,作为第三级判断阈值。其定义如下[4]:

(3)

1.2 卡尔曼滤波算法

为了降低MEMS加速度传感器的噪声干扰,系统采用卡尔曼滤波算法对数据使用进行降噪处理。卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,在测量方差已知的情况下观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。

具体算法如下,时间更新方程负责向前推算当前状态向量和误差协方差,为下一状态构成先验估计;测量更新方程负责将先验估计和最新测量构成后验估计。设加速度的离散状态方程和观测方程为[5]:

X(k) = F(k,k-1)・X(k-1)+T(k,k-1)・U(k-1)

Y(k) = H(k)・X(k)+N(k)

其中:

X(k)和Y(k)分别是k时刻的状态矢量和观测矢量;F(k,k-1)为状态转移矩阵;U(k)为k时刻动态噪声;T(k,k-1)为系统控制矩阵;H(k)为k时刻观测矩阵;N(k)为k时刻观测噪声;则卡尔曼滤波的算法流程为:

预估计X(k)^= F(k,k-1)・X(k-1)

计算预估计协方差矩阵:

C(k)^=F(k,k-1)×C(k)×F(k,k-1)'+T(k,k-1)×Q(k)×T(k,k-1)'

Q(k) = U(k)×U(k)'

计算卡尔曼增益矩阵:

K(k)=C(k)^×H(k)'×[H(k)×C(k)^×H(k)'+R(k)]^(-1)

R(k) = N(k)×N(k)'

更新估计:

X(k)~=X(k)^+K(k)×[Y(k)-H(k)×X(k)^]

计算更新后估计协防差矩阵:

C ( k ) ~ =[I-K(k)×H(k)]×C(k)^×[I-K(k)×H(k)]'+K(k)×R(k)×K(k)'

X(k+1) = X(k)~

C(k+1) = C(k)~

1.3 算法流程

系统MCU读取MEMS加速度传感器采集的三轴加速度数据,采用卡尔曼滤波算法进行优化之后,通过计算得出SVM、MADS和yaw的值,当SVM>1.8gn,MADS>0.36g/s,yaw

2 系统总体设计

系统采用可穿戴式设计,实现一款搭载Android平台的智能手表,佩戴于被监护人手腕上。智能手表包含系统主控MCU,MEMS加速度传感器,北斗GPS定位模块,GPRS模块,并实现了人体摔倒检测算法和定位算法。当智能手表检测到被监护人发生摔倒事件,通过手表上预装的SIM卡,将报警信息发送给监护人手机,并将被监护人的地理位置信息、人体状态等数发送到服务器上。监护人可以通过手机或电脑终端登录服务器查看被监护人的实时状态。整个系统的网络通信图如图2所示。

3 系y的硬件结构

系统的硬件部分主要包括系统主控MCU、MEMS三轴加速度模块、北斗GPS定位模块、GPRS通信模块以及电源模块等。系统硬件结构如图3所示。

系统主控MCU采用双串口的STM8S007单片机,STM8S007是ST公司提供的基于ARM CORTEX M0的8位微控制器,具有极佳性价比。STM8S单片机系列是8位的低功耗的单片机,采用ST的130纳米工艺技术和先进内核架构,主频达到24 MHz,处理能力高达20MIPS。STM8S单片机系列以其嵌入式EEPROM、RC振荡器和全套标准外设为设计者提供了稳定且可靠的解决方案。

三轴加速度采集模块采用Freescale(飞思卡尔) 公司开发的基于微机电系统(MEMS)的的三轴向低重力加速计MMA7260Q[6]。MMA7260Q 是一款具有三轴向检测功能的单芯片设备,能在XYZ 三个轴向上以极高的灵敏度检测低重力水平的坠落、倾斜、移动、放置、震动和摇摆。MMA7260Q具有3μA 睡眠模式、500μA 低运行模式、1.0ms的快速启动响应时间,能够提供± ( 1.5-6) g 的可变量程加速度,并将三轴向加速度转化为电压值输出。

定位模块采用北斗GPS UM220模块。UM220是市场上尺寸最小的双模模块,集成BD2/GPS模块,功耗低,适合于人体定位、车辆导航、定位导航等应用。UM220模块工作电压:3V到3.6V。首次定位时间为:冷启动30S,热启动1S。定位后PPS端发送精度为50nS的秒脉冲给STM8S007。UM220模块定位模式支持单系统独立定位和多系统联合定位,支持UART,SPI,1PPS,I2C等多种接口。

GPRS通信模块采用具有蓝牙功能的四频GPRS SIM800H模块。SIM800H模块可支持4频GSM/GPRS,工作的频段为:GSM850、EGSM900、DCS1800和PCS1900 MHz。 模块的尺寸只有15.8*17.8*2.4 mm,几乎可以满足所有用户应用中的对空间尺寸的要求。同时SIM800H模块具有标准AT命令接口,可以提供GSM语音、短消息等业务,支持蓝牙功能,可以通过蓝牙与智能手机等设备的管理APP软件进行通信。

4 软件设计

系统的工作流程如下:系统上电后各模块进行初始化,MMA7260Q传感器实时采集三轴加速度数据;系统MCU通过I2C 接口读取三轴加速度数据,进行噪声剔除,归一化处理;系统根据摔倒检测算法进行状态判断。当系统确定被监护人摔倒后,进行本地蜂鸣报警。如果出现误判, 用户可在蜂鸣30s内通过按键手动取消报警;如果用户没有取消报警,系统将通过UM220模块自动进行定位,接收UM220传来的卫星定位数据,并将地理位置信息通过SIM800H模块发送到预设的监护人手机。系统软件流程如图4所示。

5 系统实现

5.1 卡尔曼算法实现

卡尔曼算法实现的主要代码如下:

abstract class kalman{

//members

int t;

matrix Sm1, S, R, HTRinv, M, Sn, A;

vector eps, x, xn, a;

//default constructor

kalman(){}

void forward(matrix Sm1m1, vector xm1m1, vector y){

Sm1=F(t-1).times(Sm1m1.times(F(t-1).trans())).plus(Q(t-1));

R=H(t).times(Sm1.times(H(t).trans())).plus(W(t));

HTRinv=R.chol(H(t)).trans();

matrix temp1=Sm1.times(HTRinv.times(H(t)));

S=Sm1.minus(temp1.times(Sm1));

M=F(t).minus(F(t).times(temp1));

vector temp2=F(t-1).times(xm1m1);

eps=y.minus(H(t).times(temp2));

x=Sm1.times(HTRinv.times(eps)).plus(temp2);

}

}

5.2 GPS定位实现

GPS定位实现的一般流程如下:

5.2.1 配置权限

AndroidManifest.xml中配置权限

5.2.2 获取LocationManager 类型对象

mLocationManager=(LocationManager)pContext.getSystemService Context.LOCATION_SERVICE);

pContext为Context类型的对象

5.2.3 获取最佳位置定位方式pProvider

mLocationManager.getBestProvider(pCriteria, true);

pCriteria为Criteria类型的对象,包含精度、是否返回高度、方位、速度等信息。

5.2.4 创建Criteria对象示例

public static Criteria createFineCriteria() {

Criteria c = new Criteria();

c.setAccuracy(Criteria.ACCURACY_FINE);//高精度

c.setAltitudeRequired(true);//包含高度信息

c.setBearingRequired(true);//包含方位信息

c.setSpeedRequired(true);//包含速度信息

c.setCostAllowed(true);//允许付费

c.setPowerRequirement(Criteria.POWER_HIGH);//高耗电

return c;

}

5.2.5 实现LocationListener接口

采用MyLocationListener类方式实现,重写接口方法,添加相应的代码:onLocationChanged(Location location);onStatusChanged(String provider, int status, Bundle extras);onProviderEnabled(String provider);onProviderDisabled(String provider);

5.2.6 创建MyLocationListener对象mLocationListener,并添加监听

mLocationListener = new MyLocationListener();

mLocationManager.requestLocationUpdates(pProvider,MIN_TIME_UPDATE, MIN_DISTANCE_UPDATE, mLocationListener);

5.2.7 使用完释放监听

mLocationManager.removeUpdates(mLocationListener);

6 系统测试

系统测试包括3 个部分: 检测人体摔倒的准确率、北斗GPS 定位误差、GPRS发送报警信号实时性。将老年人摔倒检测与定位系统设备佩戴于手腕,模拟跑步、下蹲、摔倒等日常行为[9],测试系统检测准确率与稳定性,检测摔倒后北斗GPS 定位地点与实际摔倒地点误差;记录摔倒事件发生时间与手机接收到报警信号时间,测试系统实时性,测试结果如表1 所示。经反复实验测试,人体摔倒行为检测误差率≤4%,GPS 定位误差小于2m、系统精度高,实时性高,稳定可靠,可广泛用于人体摔倒检测和定位。

7 结语

本文研究一种基于MEMS的老年人摔倒检测和定位系统,利用三轴加速度传感器采集人体加速度数据,北斗GPS双模定位检测摔倒发生的位置,GPRS模块进行远程报警。经测试,系统定位精度可达2米,功耗低,体积小巧,具有一定的实用性。

参考文献

[1]许继平,李景涛,彭森等.基于三轴加速度传感器的老年人摔倒检测系统[J].计算机仿真,2014,31(12):434-437.

[2]刘鹏,卢潭城,吕愿愿等.基于MEMS三轴加速度传感器的摔倒检测[J].传感技术学报,2014,27(04):570-575.

[3]曹玉珍,蔡伟超,程D.基于MEMS加速度传感器的人体姿态检测技术[J].纳米技术与精密工程,2010,8(01):37-41.

[4]王荣,章韵,陈建新.基于三轴加速度传感器的人体跌倒检测系统设计与实现[J].计算机应用,2012,32(05):1450-1452,1456.

[5]周树道,金永奇,卫克晶等.采用卡尔曼滤波算法的MEMS 器件姿态测量[J].实验室研究与探索,2012,22(02):116-120.

[6]Freescale Semiconductor.± 1.5g-6g three axis low-g micromachinedaccelerometer[EB/OL].2016-12-06.http://Hercules.unimb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf.

[7]蜒螅邵琼玲,路振民.北斗/GPS混合定位模块UM220应用研究[J].国外电子测量技术,2014,33(03):76-79.

[8]张远海,龙涛元,翁佩纯.基于卡尔曼滤波的北斗GPS定位应用的研究[J].电子技术2016,9(09):31-34.

[9]晏勇.可穿戴式人体跌倒监测与定位系统设计与实现[J].洛阳理工学院学报(自然科学版),2016,26(02):71-75.

作者简介

翁佩纯(1982-)女,广东省潮州市人。电子科技大学中山学院,硕士研究生。研究方向为计算机应用,网络计算。

张远海(1978-),男,黑龙江省牡丹江人。中山火炬职业技术学院,工程师。研究方向为通信技术。

作者单位

1.电子科技大学中山学院 广东省中山市 5284001

2.中山火炬职业技术学院 广东省中山市528436

上一篇:连铸二级模型系统的设计 下一篇:基于云计算下网络安全技术实现的路径