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