張晶瑩 劉芳羽 尚林樂 黃少年 陳榮元
關(guān)鍵詞:三軸傳感器;坐姿監(jiān)測;支持向量機(jī);多分類
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2023)10-0035-05
0 引言
截至2022年1月,流行病學(xué)調(diào)查顯示[1],我國青少年患有脊柱側(cè)彎人數(shù)已經(jīng)500萬,并且該數(shù)據(jù)還在以每年30萬左右的速度遞增。繼肥胖、近視之后,脊柱側(cè)彎成了危害我國兒童青少年健康的第三大疾病。脊柱側(cè)彎是一種三維結(jié)構(gòu)畸形,在冠狀面脊柱側(cè)向彎曲,在水平面脊柱和胸廓發(fā)生旋轉(zhuǎn),在矢狀面脊柱的生理曲度發(fā)生變化,因?yàn)槿梭w有較多的單側(cè)運(yùn)動模式,兩側(cè)肌肉力量不同,不但會影響患者的形態(tài)美觀,而且還會造成肌肉緊張,導(dǎo)致背痛發(fā)生。而當(dāng)脊柱側(cè)彎嚴(yán)重到一定程度時,很難再改變脊柱形態(tài),恢復(fù)正常生理曲度,與此同時還會損害神經(jīng)、壓迫肺部,甚至?xí)霈F(xiàn)呼吸困難等影響正常呼吸的癥狀。
對脊柱側(cè)彎所帶來的其他延展性病變進(jìn)行針對性治療外,對于脊柱側(cè)彎應(yīng)采取重視態(tài)度,在日常生活中對于身體姿態(tài)的主動矯正尤為關(guān)鍵,側(cè)彎節(jié)段的脊柱活動幅度會降低,脊柱不能主動挺直,側(cè)彎通常會伴隨椎體旋轉(zhuǎn),引起肋隆突或腰突。處于病態(tài)的脊柱,自主矯正存在著不確定性,因此借助外力協(xié)助人體進(jìn)行姿勢調(diào)節(jié)是必要的。
基于支持向量機(jī)算法研發(fā)的坐姿監(jiān)測器,坐姿監(jiān)測器可以長時間的對監(jiān)測實(shí)體進(jìn)行實(shí)時的監(jiān)視,實(shí)時對檢測實(shí)體進(jìn)行坐姿矯正提醒,有效避免因坐姿錯誤對人體帶來的傷害;因此坐姿監(jiān)測器的市場需求旺盛,有足夠的發(fā)展前景與可推廣性。
1 坐姿監(jiān)測器現(xiàn)狀分析
傳統(tǒng)的坐姿監(jiān)測器已不能對正常人體脊柱生理曲度進(jìn)行細(xì)致測算,并及時對用戶發(fā)出信號,提醒用戶進(jìn)行坐姿監(jiān)測。
1)強(qiáng)制性佩戴儀器對人體造成二次損傷
如今市場上已有的人體佩戴式坐姿監(jiān)測器將對用戶運(yùn)動范圍有很大程度的束縛,可能導(dǎo)致自身過度疲勞,還會伴隨著酸痛,對于人體脊椎及其他臟器造成二次傷害[2],從主觀層面而言,用戶會更加排斥坐姿監(jiān)測器的存在,對于預(yù)防及控制脊椎病無益。
2)無法進(jìn)行感應(yīng)人體脊椎壓力
大多數(shù)的坐姿監(jiān)測器為固定儀器,根據(jù)刻板的坐姿標(biāo)準(zhǔn)進(jìn)行約束,該種商品無法把握用戶當(dāng)前坐姿對于自身脊椎所產(chǎn)生的實(shí)際壓力,從而將坐姿監(jiān)測的過程變成表面性工作,而沒有將保持用戶身體健康作為最終目的。
3)AI坐姿儀分散注意力
AI坐姿儀需要通過“主動提醒+主動調(diào)整”的模式,養(yǎng)成用戶良好的坐姿習(xí)慣,但該種坐姿儀發(fā)出提示音會很大程度地分散用戶及周圍人群的精力,對于注意力集中無益,且該種用品同樣無法根據(jù)用戶實(shí)際用力方式進(jìn)行坐姿調(diào)整,用戶體驗(yàn)感較差。
對于現(xiàn)有坐姿監(jiān)測儀的上述缺點(diǎn)進(jìn)行規(guī)避,設(shè)計(jì)一款基于支持向量機(jī)算法研發(fā)的坐姿監(jiān)測系統(tǒng),該系統(tǒng)采用STM32模塊為主控核心、MEMS傳感器進(jìn)行采集數(shù)據(jù),使該監(jiān)測器具有佩戴方式簡單且輕便、監(jiān)測功能靈敏等特點(diǎn),可以很好地解決傳統(tǒng)坐姿監(jiān)測器存在的上述弊端。這使得產(chǎn)品的客戶群體更加充實(shí),在日常工作學(xué)習(xí)中都可以做到實(shí)時坐姿監(jiān)測,減少對用戶的負(fù)面影響,提高產(chǎn)品體驗(yàn)感。
2 系統(tǒng)設(shè)計(jì)
本系統(tǒng)使用STM32模塊作為主控核心、MEMS傳感器模塊、輔助模塊三大模塊來實(shí)現(xiàn)對坐姿的監(jiān)測,通過單片機(jī)中的程序,實(shí)現(xiàn)對系統(tǒng)的整體控制。
系統(tǒng)首先通過ADXL345采集移動過程中產(chǎn)生的三軸加速度后,將相應(yīng)的數(shù)據(jù)傳輸?shù)絾纹瑱C(jī)中,單片機(jī)再根據(jù)SVM算法對數(shù)據(jù)進(jìn)行二分法分類,根據(jù)分類結(jié)果與預(yù)置的數(shù)據(jù)進(jìn)行比較,若超出所設(shè)定的范圍,則發(fā)出震動提醒,并將相應(yīng)數(shù)據(jù)通過藍(lán)牙發(fā)送到手機(jī)讓用戶能實(shí)時查看具體情況。
下面通過硬件與軟件兩方面對系統(tǒng)進(jìn)行詳細(xì)說明。
2.1 硬件設(shè)計(jì)
系統(tǒng)的硬件部分主要分為四大模塊來實(shí)現(xiàn)對坐姿的監(jiān)控及矯正處理,主要設(shè)備包括:1 個STM32F103ZET6作為單片機(jī)控制模塊、1個ADXL345 三軸加速度傳感器、1個HC-06藍(lán)牙模塊、1塊1 000mA可充電鋰電池,總體硬件結(jié)構(gòu)框架如圖1所示。
當(dāng)用戶的坐姿不正確時,ADXL345三軸傳感器可即時測算出相應(yīng)的加速度,并根據(jù)預(yù)置程序?qū)⑾嚓P(guān)信息通過藍(lán)牙傳輸至手機(jī),用戶可以實(shí)時查看自己坐姿的不正確之處并及時采取調(diào)整措施。
核心模塊STM32F103ZET6具有72MHz的CPU速度和高達(dá)1MB的閃存。能夠滿足對傳感器等模塊的控制。
2.1.1 MEMS 傳感器模塊
ADXL345是基于MEMS技術(shù)的三軸、數(shù)字輸出的加速度傳感器[3]。在系統(tǒng)運(yùn)行過程中,首先由ADXL345測出加速度大小,再通過相應(yīng)模塊內(nèi)部的感應(yīng)電信號器件,將加速度轉(zhuǎn)換為可識別的電信號,最后通過AD 轉(zhuǎn)換器將模擬電信號轉(zhuǎn)換成數(shù)字信號。AD轉(zhuǎn)換器輸出的16位二進(jìn)制補(bǔ)碼輸入單片機(jī)中,將其轉(zhuǎn)化為三軸加速度和三維坐標(biāo)進(jìn)行分類處理。
將ADXL345的x 軸、y 軸、z 軸的加速度值轉(zhuǎn)換為坐標(biāo)系的角度值。函數(shù)連續(xù)讀出數(shù)據(jù)并將其存儲于BUF中,以x 軸加速度和軸坐標(biāo)為例:
Acc_X=(float)Acc_dis_data*3.9/1000*9.8;//計(jì)算數(shù)據(jù)x軸加速度
temp_X=(float)dis_data*3.9;//計(jì)算數(shù)據(jù)和顯示x 軸坐標(biāo)y 軸和z 軸數(shù)據(jù)同理可以得出。
傳感器還需要通過IIC通信方式與單片機(jī)進(jìn)行通信。首先需要將CS引腳拉高至Vddi/o,使ADXL345 處于IIC 模式,ALT ADDRESS 引腳置1,即處于高電平。然后選定測量范圍為±16g,速率設(shè)定為25,選擇電源模式且使能DATA_READY中斷。器件的7位IIC 地址是0x1D,隨后為R/W位。將其轉(zhuǎn)化為0x3A寫入,0x3B讀取。再通過ALT ADDRESS引腳接地,此時也可以選擇備用IIC地址0x53(隨后為R/W位),將其轉(zhuǎn)化為0xA6寫入,0xA7讀取。設(shè)置好通信方式后,即可與單片機(jī)連接,在單片機(jī)代碼中配置實(shí)現(xiàn)傳感數(shù)據(jù)的輸入。
2.1.2 其他輔助模塊
1)電源模塊
系統(tǒng)采用1000 mA鋰電池進(jìn)行供電。使用鋰電池充電管理芯片對充電功能進(jìn)行管理。所用鋰電池的充電電壓為5V,并且通過單片機(jī)能夠即時獲取電量的剩余量。電源模塊主要負(fù)責(zé)為單片機(jī)、加速度傳感器以及藍(lán)牙模塊供電。
2)藍(lán)牙模塊
藍(lán)牙模塊使用HC-06 芯片,通過串口實(shí)現(xiàn)與STM32之間的聯(lián)系。將STM32上的PA2、PA3與HC-06上的RX、TX連接。并將驅(qū)動代碼燒錄到單片機(jī)芯片中并進(jìn)行配置調(diào)整,即可實(shí)現(xiàn)系統(tǒng)與手機(jī)之間的信息傳輸。
2.2 軟件設(shè)計(jì)
根據(jù)SVM算法進(jìn)行二分法分類,如果是錯誤坐姿,則需要判斷彎曲是否保持40秒以上,若超過這個設(shè)定時間,那么根據(jù)需求選擇進(jìn)行報警提示,過程中一直保持檢測狀態(tài),檢測到脊柱狀態(tài)調(diào)整到正常后停止報警。
2.2.1 坐標(biāo)系建立
傳感器芯片如圖3擺放時,根據(jù)圖4的關(guān)系可知,此時Xout=+1g,Yout=0g,Zout=0g,沿著敏感軸加速時,相應(yīng)的輸出電壓會增加。
2.2.2 數(shù)據(jù)采集與預(yù)處理
在三軸傳感器數(shù)據(jù)采集中,以脊柱和傳感器的貼合點(diǎn)為中心建立三維坐標(biāo)軸,采用STM32F103ZET6 處理數(shù)據(jù),對采集的數(shù)據(jù)進(jìn)行實(shí)時濾波預(yù)處理。通過限幅濾波,濾除異常數(shù)據(jù)。經(jīng)過預(yù)處理后,將數(shù)據(jù)傳至芯片處理。
數(shù)據(jù)采集時存在過大的加速度數(shù)據(jù),但這并不是真實(shí)的數(shù)據(jù),需要通過模塊輸出補(bǔ)碼值轉(zhuǎn)化成十六進(jìn)制,再轉(zhuǎn)化為補(bǔ)碼從而轉(zhuǎn)換為有符號數(shù),最終得到真實(shí)X軸加速度,以部分正常坐姿數(shù)據(jù)為例。
通過計(jì)算轉(zhuǎn)化后,可以得到實(shí)際坐標(biāo)數(shù)據(jù),2 500 左右的值實(shí)際為負(fù)值。
2.2.3 支持向量機(jī)
將ADXL345的x 軸、y 軸、z 軸的加速度值轉(zhuǎn)換為坐標(biāo)系的角度值,對于采集的三軸感應(yīng)器加速度的數(shù)據(jù),根據(jù)歐拉旋轉(zhuǎn)矩陣結(jié)合加速度補(bǔ)償角速度的算法,減小姿態(tài)角誤差。選擇合適的關(guān)于三軸加速度和坐標(biāo)的核函數(shù),先預(yù)設(shè)一個閾值作為約束條件。
支持向量機(jī)[4]對數(shù)據(jù)進(jìn)行二分類的一種分類方式,“間隔”是指作為支持向量的點(diǎn)到超平面的幾何距離之和,支持向量機(jī)的學(xué)習(xí)訓(xùn)練過程就是使間隔最大化的過程。
將數(shù)據(jù)樣本分成兩組,80%用于訓(xùn)練樣本,20% 用于檢測系統(tǒng),并且根據(jù)檢測的結(jié)果對于參數(shù)等進(jìn)行優(yōu)化,使結(jié)果準(zhǔn)確率更高。支持向量機(jī)二分方式如圖6所示。
若是對于坐姿進(jìn)行多分類,則是對于訓(xùn)練的樣本進(jìn)行再次分組、訓(xùn)練和檢驗(yàn),以此類推[6]。
3 系統(tǒng)實(shí)現(xiàn)與討論
3.1 系統(tǒng)使用方式
將各模塊組合起來后,如圖7所示,將其佩戴至腰間,并貼近尾椎骨處,注意芯片擺放位置,使得采集的數(shù)據(jù)更貼近真實(shí)值,分類更準(zhǔn)確。
3.2 數(shù)據(jù)分析
根據(jù)上述算法描述以及數(shù)據(jù)收集情況,利用歸一化方法對基于支持向量機(jī)算法的三軸運(yùn)動傳感坐姿監(jiān)測裝置進(jìn)行準(zhǔn)確性預(yù)測,對三軸運(yùn)動傳感裝置進(jìn)行數(shù)據(jù)收集,數(shù)據(jù)模塊以補(bǔ)碼形式給單片機(jī)進(jìn)行處理,得到數(shù)據(jù)后利用Python進(jìn)行數(shù)據(jù)分析,得到相關(guān)因素之間的關(guān)系圖8所示。
由圖片可知,Y軸加速度對于不同坐姿情況下的影響非常明顯,四種坐姿的數(shù)據(jù)分布區(qū)別較大,易于分析,因此可以得出,對于坐姿判斷所涉及的判斷因素里,Y軸加速度為主要影響因素。
而與Y軸加速度相互影響的因素關(guān)系,可由熱力圖(圖9)所示:
由圖9可知,X軸加速度與Y軸加速度的相關(guān)性較強(qiáng),其相關(guān)系數(shù)可達(dá)到0.7;其次,X軸加速度與Z軸加速度也呈正相關(guān)趨勢,相關(guān)系數(shù)為0.2,從而可以利用支持向量機(jī)算法對少量的支持向量進(jìn)行計(jì)算分析
3.3 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)測試時將總數(shù)據(jù)隨機(jī)按比例分為訓(xùn)練集和測試集,分別約占總數(shù)據(jù)集的80%和20%。首先用大量的訓(xùn)練集對系統(tǒng)進(jìn)行訓(xùn)練和測試[7],得到相對合適的閾值約束條件,再通過訓(xùn)練集對系統(tǒng)進(jìn)行檢驗(yàn),根據(jù)分類結(jié)果分析。隨著數(shù)據(jù)集的訓(xùn)練,準(zhǔn)確率和適用范圍都會隨之改變。
根據(jù)系統(tǒng)實(shí)現(xiàn)結(jié)果可知,對于正確和錯誤的坐姿區(qū)分度較高,而錯誤坐姿之間的區(qū)分度不高。
區(qū)分度存在差異的原因在于部分錯誤坐姿的三軸坐標(biāo)和加速度數(shù)據(jù)接近,對于某種坐姿的判斷標(biāo)準(zhǔn)比較主觀化,影響結(jié)果呈現(xiàn)??倲?shù)據(jù)集僅有兩千左右,測試人數(shù)和數(shù)據(jù)總量較少,系統(tǒng)的訓(xùn)練不到位。此外個人的脊柱情況存在差異,筆者的數(shù)據(jù)和測試范圍只涉及20歲左右的大學(xué)生群體,檢測結(jié)果比較接近,適用范圍比較局限,普適性不高。但是我們的系統(tǒng)是可進(jìn)化型,在大量數(shù)據(jù)的測試下,可以達(dá)到更準(zhǔn)確的測試結(jié)果,在后續(xù)產(chǎn)品系統(tǒng)的開發(fā)過程中可以對不同年齡段進(jìn)行分類,開發(fā)出適用于不同年齡階段的監(jiān)測產(chǎn)品。
4 結(jié)束語
在該應(yīng)用環(huán)境下,應(yīng)用支持向量機(jī)算法的優(yōu)點(diǎn)為最終決策函數(shù)只由少數(shù)的支持向量所確定,計(jì)算的復(fù)雜性取決于支持向量的數(shù)目,而不是樣本空間的維數(shù),使得少數(shù)支持向量決定了最終結(jié)果,這不但可以剔除大量冗余樣本、抓住關(guān)鍵樣本,該方法不但算法簡單,而且具有著較好的穩(wěn)定性[8]。對于用戶使用坐姿監(jiān)測器時所產(chǎn)生的數(shù)據(jù),都可以進(jìn)行很好的記錄和分析,而非支持向量樣本的增加或減少對系統(tǒng)并不會產(chǎn)生影響,因此對用戶錯誤坐姿進(jìn)行提醒,可以減少坐姿監(jiān)測器的錯誤率;缺點(diǎn)為對于非線性問題缺乏通解,求得對應(yīng)應(yīng)用條件下的核函數(shù)過程復(fù)雜。
就如今的坐姿監(jiān)測產(chǎn)品趨勢而言,監(jiān)測器的準(zhǔn)確性和及時性是判斷產(chǎn)品可行性的重要依據(jù)。針對市面上坐姿監(jiān)測器的弊端,探討研究了這款基于三軸傳感器ADXL345的坐姿監(jiān)測系統(tǒng)。根據(jù)系統(tǒng)實(shí)現(xiàn)結(jié)果可知,對于該系統(tǒng)來說,區(qū)分坐姿的正確率較高,但對于錯誤坐姿的細(xì)分正確率仍有待提高。后續(xù)將對分類方式及算法進(jìn)行進(jìn)一步優(yōu)化,以達(dá)到更加準(zhǔn)確的分類效果。