原始數(shù)據(jù),即帶有數(shù)據(jù)幀的原始數(shù)據(jù)單元(數(shù)組),以及用于存放經(jīng)分析處理后生成的有序的生理或運(yùn)動(dòng)數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)單元(數(shù)組)。
[0023]所述的原始數(shù)據(jù)單元和數(shù)據(jù)存儲(chǔ)單元均設(shè)有讀寫鎖,即讀模式鎖定時(shí)可以共享,寫模式鎖定時(shí)則為獨(dú)占。
[0024]所述的可視化模塊是指:在移動(dòng)終端上,應(yīng)用OpenGL-ES的圖形程序接口技術(shù),渲染和繪制具有景深場景的界面,以立方塊的空間姿態(tài)代表所監(jiān)測身體節(jié)段的空間姿態(tài),實(shí)現(xiàn)了移動(dòng)終端上的人體姿態(tài)展示;以點(diǎn)圖形式,實(shí)時(shí)繪制加速度數(shù)據(jù)的波形;根據(jù)加速度在一個(gè)步態(tài)周期內(nèi)的數(shù)值變化特征,通過設(shè)定動(dòng)態(tài)閾值的方法,計(jì)算步態(tài)周期和步態(tài)時(shí)空參數(shù),包括步頻、步長、跨步時(shí)間等,在移動(dòng)終端界面上實(shí)時(shí)顯示;通過設(shè)計(jì)跌倒識別算法,判別跌倒發(fā)生狀態(tài)和次數(shù),在移動(dòng)終端界面上實(shí)時(shí)顯示。
[0025]所述的多線程架構(gòu)方式是指:兩個(gè)藍(lán)牙通訊線程、兩個(gè)數(shù)據(jù)處理線程及一個(gè)界面顯示線程,其中:兩個(gè)藍(lán)牙通訊線程中一個(gè)是用于與對應(yīng)傳感器節(jié)點(diǎn)的藍(lán)牙芯片進(jìn)行連接的藍(lán)牙連接線程,另一個(gè)是用于接收該傳感器節(jié)點(diǎn)的數(shù)據(jù),并向該節(jié)點(diǎn)發(fā)送工作狀態(tài)調(diào)整指令的藍(lán)牙收發(fā)線程;兩個(gè)數(shù)據(jù)處理線程中一個(gè)是用于讀取并處理來自傳感器節(jié)點(diǎn)原始數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)線程,根據(jù)數(shù)據(jù)幀的幀頭,對數(shù)據(jù)幀進(jìn)行解析,得到帶有時(shí)間戳的有序的加速度、角速度等運(yùn)動(dòng)數(shù)據(jù),并存入帶有時(shí)間戳的有序數(shù)據(jù)單元,另一個(gè)是用于讀取解析后的運(yùn)動(dòng)數(shù)據(jù)并進(jìn)行運(yùn)動(dòng)姿態(tài)解算的線程,應(yīng)用姿態(tài)算法可得到步態(tài)時(shí)空參數(shù)和姿態(tài)信息;界面顯示線程用于顯示經(jīng)過上述分析處理后的運(yùn)動(dòng)數(shù)據(jù)、時(shí)空參數(shù)和姿態(tài)信息。
[0026]本發(fā)明涉及上述系統(tǒng)的三維運(yùn)動(dòng)監(jiān)測方法,包括以下步驟:
[0027]I)傳感器節(jié)點(diǎn)將由傳感器得到的運(yùn)動(dòng)或生理數(shù)據(jù),通過節(jié)點(diǎn)微控制器進(jìn)行數(shù)據(jù)壓縮加密處理,為數(shù)據(jù)加上起始標(biāo)記、節(jié)點(diǎn)編號、傳感器數(shù)據(jù)類型、時(shí)間戳和結(jié)束標(biāo)記;節(jié)點(diǎn)微控制器檢監(jiān)測藍(lán)牙收發(fā)模塊接收到的數(shù)據(jù)包,判斷其內(nèi)是否包含正確的控制幀。
[0028]所述的控制幀包括但不僅限于:藍(lán)牙收發(fā)模塊的參數(shù)調(diào)整,數(shù)據(jù)傳輸開始或結(jié)束指令,同步指令。
[0029]2)移動(dòng)終端搜索判斷是否有上電的傳感器節(jié)點(diǎn)。當(dāng)發(fā)現(xiàn)上電的傳感器節(jié)點(diǎn)時(shí),貝Ij進(jìn)入數(shù)據(jù)接收及處理模型,每隔一個(gè)搜索周期搜索藍(lán)牙設(shè)備的情況,當(dāng)有其他傳感器節(jié)點(diǎn)存在時(shí),分別為多節(jié)點(diǎn)數(shù)據(jù)處理模塊的原始數(shù)據(jù)單元和數(shù)據(jù)存儲(chǔ)單元各分配一個(gè)讀寫鎖。
[0030]3)多節(jié)點(diǎn)數(shù)據(jù)處理模塊通過藍(lán)牙連接線程,以Mac地址為準(zhǔn)與傳感器節(jié)點(diǎn)的藍(lán)牙收發(fā)模塊相連,待連接后返回藍(lán)牙套接字并注銷藍(lán)牙連接線程。
[0031 ] 4)數(shù)據(jù)存儲(chǔ)線程循環(huán)讀取socket流的內(nèi)容,為原始數(shù)據(jù)單元加上寫鎖,并將其存儲(chǔ)至第一動(dòng)態(tài)數(shù)組內(nèi);運(yùn)動(dòng)姿態(tài)解算線程循環(huán)檢測原始數(shù)據(jù)單元的狀態(tài),當(dāng)原始數(shù)據(jù)單元的寫鎖被釋放時(shí),則為原始數(shù)據(jù)單元加上讀鎖并讀取數(shù)據(jù)內(nèi)容,將該數(shù)據(jù)內(nèi)容去除幀頭、幀尾和解壓數(shù)據(jù)內(nèi)容處理后,為第二動(dòng)態(tài)數(shù)組加上寫鎖并按序存入數(shù)據(jù)存儲(chǔ)單元中,然后解開資源的寫鎖;最后多節(jié)點(diǎn)數(shù)據(jù)處理模塊按需開辟相應(yīng)的線程,讀取存放處理后的有序數(shù)據(jù)單元,為其加上寫鎖。
[0032]優(yōu)選地,步驟4中當(dāng)動(dòng)態(tài)數(shù)組超出閾值時(shí),以隊(duì)列方式刪去最早存放于動(dòng)態(tài)數(shù)組中的數(shù)據(jù),以確保不會(huì)造成過大的內(nèi)存消耗。
[0033]所述的刪去,優(yōu)選為刪去的數(shù)據(jù)大小與超出閾值部分相同。
[0034]優(yōu)選地,步驟4中數(shù)據(jù)存儲(chǔ)線程每運(yùn)行完成一次存儲(chǔ)操作后,解開原始數(shù)據(jù)單元的寫鎖并進(jìn)入睡眠狀態(tài)。
[0035]所述的睡眠狀態(tài)的時(shí)間與是否出現(xiàn)數(shù)組越界及越界數(shù)量負(fù)相關(guān),與實(shí)時(shí)性的要求正相關(guān)。
[0036]5)根據(jù)采集獲取的傳感器節(jié)點(diǎn)的加速度變化特征,通過設(shè)定加速度的動(dòng)態(tài)閾值,判斷人體步態(tài)周期,計(jì)算步態(tài)時(shí)空參數(shù);根據(jù)采集獲取的腰背部節(jié)點(diǎn)的加速度數(shù)據(jù),判斷人體跌倒過程中的三種狀態(tài),即失重、超重和靜止?fàn)顟B(tài)。
[0037]優(yōu)選地,所述的動(dòng)態(tài)閾值設(shè)定為50次采樣點(diǎn)數(shù)中的加速度均值,動(dòng)態(tài)閾值每采樣50次會(huì)更新一次。
技術(shù)效果
[0038]與現(xiàn)有技術(shù)相比,本發(fā)明通過在傳感器終端和智能終端機(jī)上建立藍(lán)牙數(shù)據(jù)采集和交換的多節(jié)點(diǎn)傳輸模型,較大程度地提高多節(jié)點(diǎn)體域網(wǎng)數(shù)據(jù)的傳輸速度和準(zhǔn)確率,使數(shù)據(jù)錯(cuò)誤溢出的可能性大為降低。應(yīng)用本技術(shù)后,傳感器節(jié)點(diǎn)的數(shù)據(jù)采集速率可達(dá)900Hz以上,應(yīng)用姿態(tài)解算功能后,人體運(yùn)動(dòng)的姿態(tài)數(shù)據(jù)輸出速率可達(dá)150Hz。
[0039]與現(xiàn)有技術(shù)相比,本發(fā)明通過在移動(dòng)終端上建立多任務(wù)線程,實(shí)現(xiàn)三維運(yùn)動(dòng)監(jiān)測系統(tǒng)多節(jié)點(diǎn)數(shù)據(jù)采集、藍(lán)牙通訊、姿態(tài)解算處理和在移動(dòng)終端上的可視化功能,以滿足臨床對人體運(yùn)動(dòng)障礙診斷和評估的需求。
【附圖說明】
[0040]圖1為藍(lán)牙連接和傳輸示意圖;
[0041 ]圖2為智能終端數(shù)據(jù)接收和解析示意圖;
[0042]圖3為移動(dòng)終端APP上的運(yùn)動(dòng)和姿態(tài)的三維顯示界面圖;
[0043]圖4為實(shí)施例中實(shí)時(shí)獲得的人體行走時(shí)腰背部加速度曲線示意圖;
[0044]圖5為實(shí)施例中系統(tǒng)實(shí)時(shí)獲得的人體跌倒時(shí)的加速度變化曲線示意圖。
[0045]圖6為根據(jù)采集節(jié)點(diǎn)的加速度數(shù)據(jù)進(jìn)行步態(tài)周期識別的算法流程。
[0046]圖7為根據(jù)采集節(jié)點(diǎn)(一般為腰背部)的加速度數(shù)據(jù)進(jìn)行跌倒識別與報(bào)警的算法流程。
【具體實(shí)施方式】
[0047]如圖1所示,本實(shí)施例涉及一種應(yīng)用于多傳感器節(jié)點(diǎn)與移動(dòng)終端的數(shù)據(jù)交換傳輸模型,包括在傳感器節(jié)點(diǎn)上實(shí)現(xiàn)的多節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)生成和藍(lán)牙收發(fā)模塊。在移動(dòng)終端上實(shí)現(xiàn)的多節(jié)點(diǎn)數(shù)據(jù)接受和處理模塊。
[0048]本系統(tǒng)通過以下方式實(shí)現(xiàn):
[0049]在傳感器節(jié)點(diǎn)上:
[0050]第一步,藍(lán)牙模塊的初始化、啟動(dòng)和停止。在節(jié)點(diǎn)微控制器上,通過AT指令集完成對藍(lán)牙收發(fā)模塊的波特率,發(fā)射功耗,并且進(jìn)入低功耗模式等待來自移動(dòng)終端的指令。當(dāng)藍(lán)牙收發(fā)模塊完成與移動(dòng)終端的藍(lán)牙連接后,每次收到數(shù)據(jù)都需要分析數(shù)據(jù)內(nèi)容,判斷指令類型。根據(jù)指令的要求,啟動(dòng)與節(jié)點(diǎn)微控制器連接的傳感器并設(shè)置相應(yīng)的傳感器參數(shù),關(guān)閉傳感器進(jìn)入低功耗模式。
[0051]第二步,生成藍(lán)牙多節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu):在節(jié)點(diǎn)微控制器上,對由傳感器采集到的數(shù)據(jù)進(jìn)行壓縮和加密,同時(shí)在存儲(chǔ)器中申請一段長度適中的存儲(chǔ)空間,依次存放幀頭部分、壓縮加密后的傳感器數(shù)據(jù)以及幀尾部分,其中:幀頭部分包括起始標(biāo)記、節(jié)點(diǎn)編號、傳感器數(shù)據(jù)類型內(nèi)容。幀尾包含該次采樣所處的節(jié)點(diǎn)微控制器時(shí)間以及結(jié)束標(biāo)記;數(shù)據(jù)幀生成后通過藍(lán)牙收發(fā)模塊傳送至移動(dòng)終端。
[0052]在智能移動(dòng)終端上:
[0053]第一步,通過藍(lán)牙模塊對每一個(gè)需要接入體域網(wǎng)的穿戴式設(shè)備節(jié)點(diǎn)建立連接,利用基于藍(lán)牙的體域網(wǎng)維護(hù)與不同節(jié)點(diǎn)的通訊。
[0054]第二步,建立多個(gè)藍(lán)牙數(shù)據(jù)緩沖池,為每一個(gè)節(jié)點(diǎn)維護(hù)一個(gè)大小合適的數(shù)據(jù)緩沖池,用于存放來自節(jié)點(diǎn)的數(shù)據(jù)信息。
[0055]第三步,開辟多數(shù)據(jù)處理線程,對每個(gè)緩存區(qū)的信息進(jìn)行校驗(yàn),確保數(shù)據(jù)幀的完整性和正確性。驗(yàn)證完成后,提取有效數(shù)據(jù)并做相應(yīng)處理。將加工后的數(shù)據(jù)通過有名管道等進(jìn)程間通訊措施來傳遞給其他線程。
[0056]第四步,通過讀寫鎖的方式來實(shí)現(xiàn)對管道內(nèi)數(shù)據(jù)的同步控制,支持同時(shí)有多個(gè)用戶中斷后臺(tái)等線程的訪問以及改寫操作。
[0057]第五步,如圖6所示,根據(jù)采集的人體加速度信息,通過基于閾值的步態(tài)周期識別算法,分析獲得人體的步態(tài)時(shí)空參數(shù)。
[0058]第六步,如圖7所示,根據(jù)采集的人體跌倒時(shí)的加速度信息,通過基于閾值的跌倒識別算法,實(shí)現(xiàn)對跌倒的實(shí)時(shí)監(jiān)測。
[0059]第七步,應(yīng)用OpenGL-ES的圖形程序接口技術(shù),對采集的多節(jié)點(diǎn)數(shù)據(jù)進(jìn)行運(yùn)動(dòng)姿態(tài)的渲染和展示。
[0060]本方法在進(jìn)行人體步態(tài)分析時(shí),放置于人體某個(gè)運(yùn)動(dòng)節(jié)點(diǎn)上的傳感器數(shù)據(jù)傳輸速率達(dá)到150Hz ο當(dāng)同步采集6個(gè)節(jié)點(diǎn)數(shù)