翁佩純++張遠海
摘 要為解決老年人日常生活中的摔倒檢測和定位問題,設計了可穿戴式老年人摔倒檢測和定位系統。采用低功耗的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<40°,判定為發生摔倒事件。具體算法流程如圖1所示。
2 系統總體設計
系統采用可穿戴式設計,實現一款搭載Android平臺的智能手表,佩戴于被監護人手腕上。智能手表包含系統主控MCU,MEMS加速度傳感器,北斗GPS定位模塊,GPRS模塊,并實現了人體摔倒檢測算法和定位算法。當智能手表檢測到被監護人發生摔倒事件,通過手表上預裝的SIM卡,將報警信息發送給監護人手機,并將被監護人的地理位置信息、人體狀態等數據發送到服務器上。監護人可以通過手機或電腦終端登錄服務器查看被監護人的實時狀態。整個系統的網絡通信圖如圖2所示。
3 系統的硬件結構
系統的硬件部分主要包括系統主控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]曹玉珍,蔡偉超,程旸.基于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