徐甲棟, 陳 強, 徐一雄, 楊文龍, 張新宇, 梁明遠
(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 %,可靠性高,系統穩定,隱私保護性好,穿戴便捷,基本滿足對老年人進行實時監測的需求,達到預期效果。