翁佩純++張遠(yuǎn)海
摘 要為解決老年人日常生活中的摔倒檢測和定位問題,設(shè)計了可穿戴式老年人摔倒檢測和定位系統(tǒng)。采用低功耗的STM8S系列芯片,通過MEMS 三軸加速度傳感器完成人體三軸加速度數(shù)據(jù)的采集和處理,使用卡爾曼濾波算法進(jìn)行噪聲剔除,實現(xiàn)了三級檢測閾值摔倒檢測算法,北斗GPS雙模定位模塊獲得地理定位信息,GPRS模塊進(jìn)行遠(yuǎn)程報警。實驗說明系統(tǒng)可以有效地對老年人摔倒行為作出檢測,并實時進(jìn)行定位和報警。
【關(guān)鍵詞】摔倒檢測算法 MEMS加速度傳感器 北斗定位
隨著我國人口老齡化的加速,老年人的照料和養(yǎng)老問題將嚴(yán)重加重未來社會負(fù)擔(dān)。高效、有效、專業(yè)的養(yǎng)老產(chǎn)業(yè)是解決老齡化社會帶來沉重養(yǎng)老負(fù)擔(dān)的唯一途徑。在老年人的日常生活中,摔倒[1]是老年人經(jīng)常發(fā)生的意外之一,嚴(yán)重威脅老年人的身體健康甚至生命安全。因此,設(shè)計一種針對老年人的摔倒檢測和定位裝置的需求尤為迫切。
MEMS 技術(shù)以其體積小,重量輕,耗能低,諧振頻率高等優(yōu)勢,近幾年得到了快速發(fā)展和廣泛應(yīng)用,在加速度檢測、狀態(tài)檢測、運動檢測等方面的技術(shù)已經(jīng)相對成熟和穩(wěn)定。本文提出一種基于MEMS 三軸加速度傳感器的老年人摔倒檢測與定位系統(tǒng),可穿戴并實時檢測和衛(wèi)星定位。三軸加速度傳感器采集人體摔倒特征向量,北斗GPS模塊判斷摔倒位置,通過GPRS模塊通知家人,大大提高老年人的安全保障,減輕了子女和社會的壓力。
1 人體摔倒模型
1.1 摔倒檢測算法
人體運動的特征向量包括加速度、加速度向量幅值SVM ( Signal vector magnitude) 、微分加速度幅值絕對平均值MADS ( Mean absolute value of differential) 、人體姿態(tài)角pitch、roll 和yaw等[2]。當(dāng)人體進(jìn)行劇烈活動時,SVM 峰值會變得比較大,其定義為:
(1)
其中:ax、ay、az分別為x、y、z 軸的加速度。
人體摔倒時狀態(tài)變化劇烈,SVM一般會超過1.8gn,因而第一級摔倒檢測閾值可選擇1.8gn作為衡量準(zhǔn)則。但當(dāng)人體進(jìn)行一些非摔倒性劇烈活動,如快速跑步,SVM的峰值有時也會超過1.8gn,這時可利用微分加速度幅值絕對平均值MADS 來進(jìn)行第二級摔倒檢測。研究表明,人體摔倒期間MADS 超過0.36g/s,跑步期間MADS 小于0.36g/s,因而選擇0.36g/s作為人體摔倒的第二級判決閾值。MADS具體定義如下[3]:
(2)
其中:T 為時間周期
為了進(jìn)一步減少誤報,可利用三軸加速度和重力之間的關(guān)系,計算人體姿態(tài)角yaw,即人體軀干與水平面的傾角θ。將人體姿態(tài)角yaw小于40°,作為第三級判斷閾值。其定義如下[4]:
(3)
1.2 卡爾曼濾波算法
為了降低MEMS加速度傳感器的噪聲干擾,系統(tǒng)采用卡爾曼濾波算法對數(shù)據(jù)使用進(jìn)行降噪處理??柭鼮V波(Kalman filtering)是一種利用線性系統(tǒng)狀態(tài)方程,在測量方差已知的情況下觀測數(shù)據(jù),對系統(tǒng)狀態(tài)進(jìn)行最優(yōu)估計的算法。由于觀測數(shù)據(jù)中包括系統(tǒng)中的噪聲和干擾的影響,所以最優(yōu)估計也可看作是濾波過程。
具體算法如下,時間更新方程負(fù)責(zé)向前推算當(dāng)前狀態(tài)向量和誤差協(xié)方差,為下一狀態(tài)構(gòu)成先驗估計;測量更新方程負(fù)責(zé)將先驗估計和最新測量構(gòu)成后驗估計。設(shè)加速度的離散狀態(tài)方程和觀測方程為[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時刻的狀態(tài)矢量和觀測矢量;F(k,k-1)為狀態(tài)轉(zhuǎn)移矩陣;U(k)為k時刻動態(tài)噪聲;T(k,k-1)為系統(tǒng)控制矩陣;H(k)為k時刻觀測矩陣;N(k)為k時刻觀測噪聲;則卡爾曼濾波的算法流程為:
預(yù)估計X(k)^= F(k,k-1)·X(k-1)
計算預(yù)估計協(xié)方差矩陣:
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)^]
計算更新后估計協(xié)防差矩陣:
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 算法流程
系統(tǒng)MCU讀取MEMS加速度傳感器采集的三軸加速度數(shù)據(jù),采用卡爾曼濾波算法進(jìn)行優(yōu)化之后,通過計算得出SVM、MADS和yaw的值,當(dāng)SVM>1.8gn,MADS>0.36g/s,yaw<40°,判定為發(fā)生摔倒事件。具體算法流程如圖1所示。
2 系統(tǒng)總體設(shè)計
系統(tǒng)采用可穿戴式設(shè)計,實現(xiàn)一款搭載Android平臺的智能手表,佩戴于被監(jiān)護(hù)人手腕上。智能手表包含系統(tǒng)主控MCU,MEMS加速度傳感器,北斗GPS定位模塊,GPRS模塊,并實現(xiàn)了人體摔倒檢測算法和定位算法。當(dāng)智能手表檢測到被監(jiān)護(hù)人發(fā)生摔倒事件,通過手表上預(yù)裝的SIM卡,將報警信息發(fā)送給監(jiān)護(hù)人手機(jī),并將被監(jiān)護(hù)人的地理位置信息、人體狀態(tài)等數(shù)據(jù)發(fā)送到服務(wù)器上。監(jiān)護(hù)人可以通過手機(jī)或電腦終端登錄服務(wù)器查看被監(jiān)護(hù)人的實時狀態(tài)。整個系統(tǒng)的網(wǎng)絡(luò)通信圖如圖2所示。
3 系統(tǒng)的硬件結(jié)構(gòu)
系統(tǒng)的硬件部分主要包括系統(tǒng)主控MCU、MEMS三軸加速度模塊、北斗GPS定位模塊、GPRS通信模塊以及電源模塊等。系統(tǒng)硬件結(jié)構(gòu)如圖3所示。
系統(tǒng)主控MCU采用雙串口的STM8S007單片機(jī),STM8S007是ST公司提供的基于ARM CORTEX M0的8位微控制器,具有極佳性價比。STM8S單片機(jī)系列是8位的低功耗的單片機(jī),采用ST的130納米工藝技術(shù)和先進(jìn)內(nèi)核架構(gòu),主頻達(dá)到24 MHz,處理能力高達(dá)20MIPS。STM8S單片機(jī)系列以其嵌入式EEPROM、RC振蕩器和全套標(biāo)準(zhǔn)外設(shè)為設(shè)計者提供了穩(wěn)定且可靠的解決方案。
三軸加速度采集模塊采用Freescale(飛思卡爾) 公司開發(fā)的基于微機(jī)電系統(tǒng)(MEMS)的的三軸向低重力加速計MMA7260Q[6]。MMA7260Q 是一款具有三軸向檢測功能的單芯片設(shè)備,能在XYZ 三個軸向上以極高的靈敏度檢測低重力水平的墜落、傾斜、移動、放置、震動和搖擺。MMA7260Q具有3μA 睡眠模式、500μA 低運行模式、1.0ms的快速啟動響應(yīng)時間,能夠提供± ( 1.5-6) g 的可變量程加速度,并將三軸向加速度轉(zhuǎn)化為電壓值輸出。
定位模塊采用北斗GPS UM220模塊。UM220是市場上尺寸最小的雙模模塊,集成BD2/GPS模塊,功耗低,適合于人體定位、車輛導(dǎo)航、定位導(dǎo)航等應(yīng)用。UM220模塊工作電壓:3V到3.6V。首次定位時間為:冷啟動30S,熱啟動1S。定位后PPS端發(fā)送精度為50nS的秒脈沖給STM8S007。UM220模塊定位模式支持單系統(tǒng)獨立定位和多系統(tǒng)聯(lián)合定位,支持UART,SPI,1PPS,I2C等多種接口。
GPRS通信模塊采用具有藍(lán)牙功能的四頻GPRS SIM800H模塊。SIM800H模塊可支持4頻GSM/GPRS,工作的頻段為:GSM850、EGSM900、DCS1800和PCS1900 MHz。 模塊的尺寸只有15.8*17.8*2.4 mm,幾乎可以滿足所有用戶應(yīng)用中的對空間尺寸的要求。同時SIM800H模塊具有標(biāo)準(zhǔn)AT命令接口,可以提供GSM語音、短消息等業(yè)務(wù),支持藍(lán)牙功能,可以通過藍(lán)牙與智能手機(jī)等設(shè)備的管理APP軟件進(jìn)行通信。
4 軟件設(shè)計
系統(tǒng)的工作流程如下:系統(tǒng)上電后各模塊進(jìn)行初始化,MMA7260Q傳感器實時采集三軸加速度數(shù)據(jù);系統(tǒng)MCU通過I2C 接口讀取三軸加速度數(shù)據(jù),進(jìn)行噪聲剔除,歸一化處理;系統(tǒng)根據(jù)摔倒檢測算法進(jìn)行狀態(tài)判斷。當(dāng)系統(tǒng)確定被監(jiān)護(hù)人摔倒后,進(jìn)行本地蜂鳴報警。如果出現(xiàn)誤判, 用戶可在蜂鳴30s內(nèi)通過按鍵手動取消報警;如果用戶沒有取消報警,系統(tǒng)將通過UM220模塊自動進(jìn)行定位,接收UM220傳來的衛(wèi)星定位數(shù)據(jù),并將地理位置信息通過SIM800H模塊發(fā)送到預(yù)設(shè)的監(jiān)護(hù)人手機(jī)。系統(tǒng)軟件流程如圖4所示。
5 系統(tǒng)實現(xiàn)
5.1 卡爾曼算法實現(xiàn)
卡爾曼算法實現(xiàn)的主要代碼如下:
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定位實現(xiàn)
GPS定位實現(xiàn)的一般流程如下:
5.2.1 配置權(quán)限
AndroidManifest.xml中配置權(quán)限
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 創(chuàng)建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 實現(xiàn)LocationListener接口
采用MyLocationListener類方式實現(xiàn),重寫接口方法,添加相應(yīng)的代碼:onLocationChanged(Location location);onStatusChanged(String provider, int status, Bundle extras);onProviderEnabled(String provider);onProviderDisabled(String provider);
5.2.6 創(chuàng)建MyLocationListener對象mLocationListener,并添加監(jiān)聽
mLocationListener = new MyLocationListener();
mLocationManager.requestLocationUpdates(pProvider,MIN_TIME_UPDATE, MIN_DISTANCE_UPDATE, mLocationListener);
5.2.7 使用完釋放監(jiān)聽
mLocationManager.removeUpdates(mLocationListener);
6 系統(tǒng)測試
系統(tǒng)測試包括3 個部分: 檢測人體摔倒的準(zhǔn)確率、北斗GPS 定位誤差、GPRS發(fā)送報警信號實時性。將老年人摔倒檢測與定位系統(tǒng)設(shè)備佩戴于手腕,模擬跑步、下蹲、摔倒等日常行為[9],測試系統(tǒng)檢測準(zhǔn)確率與穩(wěn)定性,檢測摔倒后北斗GPS 定位地點與實際摔倒地點誤差;記錄摔倒事件發(fā)生時間與手機(jī)接收到報警信號時間,測試系統(tǒng)實時性,測試結(jié)果如表1 所示。經(jīng)反復(fù)實驗測試,人體摔倒行為檢測誤差率≤4%,GPS 定位誤差小于2m、系統(tǒng)精度高,實時性高,穩(wěn)定可靠,可廣泛用于人體摔倒檢測和定位。
7 結(jié)語
本文研究一種基于MEMS的老年人摔倒檢測和定位系統(tǒng),利用三軸加速度傳感器采集人體加速度數(shù)據(jù),北斗GPS雙模定位檢測摔倒發(fā)生的位置,GPRS模塊進(jìn)行遠(yuǎn)程報警。經(jīng)測試,系統(tǒng)定位精度可達(dá)2米,功耗低,體積小巧,具有一定的實用性。
參考文獻(xiàn)
[1]許繼平,李景濤,彭森等.基于三軸加速度傳感器的老年人摔倒檢測系統(tǒng)[J].計算機(jī)仿真,2014,31(12):434-437.
[2]劉鵬,盧潭城,呂愿愿等.基于MEMS三軸加速度傳感器的摔倒檢測[J].傳感技術(shù)學(xué)報,2014,27(04):570-575.
[3]曹玉珍,蔡偉超,程旸.基于MEMS加速度傳感器的人體姿態(tài)檢測技術(shù)[J].納米技術(shù)與精密工程,2010,8(01):37-41.
[4]王榮,章韻,陳建新.基于三軸加速度傳感器的人體跌倒檢測系統(tǒng)設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用,2012,32(05):1450-1452,1456.
[5]周樹道,金永奇,衛(wèi)克晶等.采用卡爾曼濾波算法的MEMS 器件姿態(tài)測量[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應(yīng)用研究[J].國外電子測量技術(shù),2014,33(03):76-79.
[8]張遠(yuǎn)海,龍濤元,翁佩純.基于卡爾曼濾波的北斗GPS定位應(yīng)用的研究[J].電子技術(shù)2016,9(09):31-34.
[9]晏勇.可穿戴式人體跌倒監(jiān)測與定位系統(tǒng)設(shè)計與實現(xiàn)[J].洛陽理工學(xué)院學(xué)報(自然科學(xué)版),2016,26(02):71-75.
作者簡介
翁佩純(1982-)女,廣東省潮州市人。電子科技大學(xué)中山學(xué)院,碩士研究生。研究方向為計算機(jī)應(yīng)用,網(wǎng)絡(luò)計算。
張遠(yuǎn)海(1978-),男,黑龍江省牡丹江人。中山火炬職業(yè)技術(shù)學(xué)院,工程師。研究方向為通信技術(shù)。
作者單位
1.電子科技大學(xué)中山學(xué)院 廣東省中山市 5284001
2.中山火炬職業(yè)技術(shù)學(xué)院 廣東省中山市528436