袁通,周風余,王小龍,劉汝華,陸娜
(山東大學控制科學與工程學院,濟南250061)
本系統提出的算法主要是在加速度計、陀螺儀、磁力計采集人體運動姿態信息的基礎上,運用擴展卡爾曼濾波算法將數據進行融合,得到人體腰部和腿部的角度信息,然后通過大量實驗建立與姿態的對應關系,采用這種方式可以利用加速度計與磁力計克服單獨采用陀螺儀引起的姿態角發散問題,另外利用陀螺儀可以避免振動對于加速度計的影響和軟硬鐵磁對于磁力計的影響[2]。
系統分為上位機系統和下位機系統,下位機系統由電源模塊、兩個iNEMO模塊、GPRS模塊和主控板組成,其中電源模塊給整個系統提供3.3V和5V的工作電壓,兩個iNEMO模塊分別固定在人體的腰部和腿部,完成對加速度計、磁力計、陀螺儀的信息采集,然后通過串口發送到主控板,主控板進行卡爾曼濾波,融合出腰部和腿部的角度,然后根據腰部和腿部的角度值完成姿態的檢測,最后GPRS模塊通過Socket協議將姿態信息打包傳送到上位機,上位機實現遠程監控。系統整體設計方案如圖1所示。

圖1 系統整體設計方案
在慣性導航領域,求取姿態角的數學表達式叫做方向余弦矩陣。方向余弦矩陣有兩種表示方式:歐拉角與四元數[3]。歐拉角的優點是比較直觀,缺點是在俯仰角為正負90°時系統存在不穩定奇點。四元數的優點是當俯仰角為正負90°時系統不受影響,缺點是不直觀。下面是它們之間的相互轉換公式。
歐拉角轉換成四元數:

四元數轉換成歐拉角:

在程序中使用的是四元數,由于四元數不能直觀地表示輸出的角度,所以首先根據陀螺儀求取四元數,再將四元數轉換成姿態角。根據運動體安裝的三軸陀螺儀,可以得到在運動體坐標系下的三軸角速度(wx,wy,wz),用三軸角速度更新四元數:

然后利用加速度計的信息,采用卡爾曼濾波的方法來對四元數進行修正,設系統的狀態空間方程為:

其中,X(k)是k時刻的系統狀態,U(k)是k時刻對系統的控制量。A和B是系統參數。Z(k)是k時刻的測量值,H是測量系統的參數。W(k)和V(k)分別表示過程和測量的噪聲。
為了提高慣性導航儀的啟動速度,需要利用歐拉角求取初始的四元數,首先根據運動體上三軸加速度計輸出的三軸加速度(fx,fy,fz),求取俯仰角θ與橫滾角φ,公式如下:

隨后讀取磁力計輸出的三軸磁場強度Mb=,然后用加速度計對磁力計進行傾斜補償:

根據傾斜補償后的磁力計輸出,可以求得偏航角為:

利用式(5)和(7)可以完成對四元數的初始化工作。
iNEMO慣性導航模塊的基本原理如圖2所示,利用MEMS傳感器和主控芯片STM32F103RET6提供動靜態方向和慣性測量功能。集成3個(4種)意法半導體傳感器:三軸陀螺儀(L3GD20)、三軸加速度計+三軸磁力計(LSM303DLHC)以及氣壓傳感器(LPS331AP)。iNEMO傳感器平臺主控制器通過I2C總線與各傳感器通信。iNEMO傳感器平臺可以通過串口向外界提供各傳感器原始數據,還可以提供各傳感器經AHRS算法融合后的橫滾、偏航及俯仰角度。

圖2 iNEMO慣性導航模塊框圖
圖3為系統主控板電路圖,其中處理器采用了STM32F103VCT6,STM32系列單片機以Cortex-M3為內核,時鐘頻率可達到72MHz,具有豐富的片內外設,高性能、低成本、低功耗的特點使其成為32位產品用戶的最佳選擇。主控板拓展了多個串行接口,和iNEMO腿部模塊、iNEMO腰部模塊和GPRS模塊進行串口通信。穩壓芯片選用了LM2576D2T-5,其最大輸入電壓為45V,可穩定輸出5V電壓,再經過REG1117-3.3的穩壓電路,產生3.3V工作電壓,當電流異常導致溫度過高時,保險絲F1、F2可以自身熔斷切斷電流,起到保護電路的作用。另外,主控電路還包括復位電路、晶振電路、電容濾波電路以及JTAG下載接口等。

圖3 主控板電路圖

圖4 GPRS電路圖
圖4為GPRS電路圖,主要包括MCU、SIM300模塊、SIM卡卡槽、穩壓電路四部分[4]。MCU同樣采用了STM32F103VCT6,圍繞它設計了單片機最小系統,包括晶振電路、復位電路、電容濾波電路等,MCU通過串口向SIM300發送控制指令以及接收SIM300返回的數據;SIM300模塊與PCB板的連接方式為60引腳的板板連接器,全部引腳從該連接器引出,SIM300的網絡狀態指示燈引腳可根據模塊的網絡狀態輸出不同頻率的電壓脈沖,方便觀測模塊是否正常工作,對于不需要用的音頻接口、LCD接口等,對應的引腳懸空即可。穩壓芯片選擇方面,可以使用開關型穩壓芯片或者LDO線性穩壓芯片,開關型穩壓芯片轉換效率高,但是需要的外圍器件較多,且多為功率器件,占用空間比較大,為了節省PCB空間,設計中采用MIC5219-3.3BM5穩壓芯片作為SIM300的電源調理芯片。
圖5所示為系統軟件整體流程圖,首先對STM32F103VCT6(以下簡稱STM32)進行初始化配置,包括時鐘電路RCC高速時鐘和低速時鐘的起振、通用引腳GPIO輸入/輸出模式的配置、串口USART波特率的設置,然后將SIM300設置為透傳模式,進行網絡連接(具體過程可參考3.3節)。成功連接網絡之后,配置iNEMO模塊各傳感器的分辨率、字節對齊方式、讀取頻率等,分別讀取腰部和腿部iNEMO模塊的加速度、陀螺儀、磁力計原始數據。獲得原始數據之后根據分辨率的設置計算磁力計、陀螺儀、加速度的大小,最后通過擴展卡爾曼濾波融合得到腰部的俯仰角PITCH、腿部的偏航角YAW,結合兩個角度信息通過查表法進行姿態判斷,設置相應的標志位,通過GPRS將姿態標志位打包后發送到遠程監控端。
如圖6所示,iNEMO模塊中L3GD20、LSM303DLHC以及LPS331AP通過I2C串行總線與單片機進行通信,I2C總線兩根雙向信號線一根是數據線SDA,另一根是時鐘線SCL,通過上拉電阻接到正電源VDD,每個接到I2C總線上的器件都有唯一的地址,主機發送地址時,總線上的每個從機都將7位地址碼與自己的地址進行比較,如果相同,則認為自己正被主機尋址。

圖5 系統軟件整體流程圖

圖6 I 2 C串行總線示意圖
iNEMO各個傳感器的地址碼宏定義如下:

采集到傳感器的數據之后,首先利用三軸陀螺儀信號,采用四元數的姿態表達式、積分求得姿態角,然后采用三軸加速度計和三軸磁力計,利用大地磁場和重力磁場在地理坐標系和運動坐標系之間的方向余弦進行絕對角度的解算,然后采用卡爾曼濾波進行前三者數據的融合,得到腰部的俯仰角PITCH、腿部偏航角YAW。通過大量實驗建立姿態角與人體姿態的對應表如表1所列。

表1 姿態與YAW、PITCH的對應表
SIM300透傳模式的配置大致分為以下4步:
①匹配波特率,發送“AT”指令后,延時一段時間發送“ATE0”。
②注冊網絡,發送“AT+CREG?”,若返回“OK”,則網絡注冊成功。
③設置透傳模式,發送“AT+CIPMODE=1”,若返回“OK”,則設置成功。
④連接網絡,發送“AT+CIPSTART="TCP","219.236.xxx.xxx","7000"”,其219.236.xxx.xxx為PC的IP地址,7000為端口號。連接成功返回"CONNECT OK"。
為了驗證系統姿態檢測功能的可靠性,選取了不同的人分別佩戴該系統做了大量的實驗,完成了對站立、坐下、行走、彎腰、躺下、趴倒的識別率的測試。從表2中可以看出,大部分動作均可以準確無誤地識別出來,行走、彎腰兩個動作出現了誤識別,這是由于不同的人佩戴該系統時,各個姿態對應的角度閾值會有少許的差別,但是95%以上的識別率足夠滿足用戶的要求。

表2 識別次數
人體姿態檢測裝置實現了對人體姿態的檢測,可以很好地應用在對老人的監護、體感游戲等領域。數字式傳感器的應用簡化了硬件電路,GPRS模塊的網絡傳輸突破了射頻傳輸距離短的缺陷,擴大了傳輸距離,整個系統體積小巧方便、應用性強。
編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。
[1] 曹玉珍,蔡偉超,程旸.基于MEMS加速度傳感器的人體姿態檢測技術[J] .納米技術與精密工程,2010(8):39.
[2] 邵婷婷,馬建倉,胡士峰,等.電子羅盤的傾斜及羅差補償算法研究[J] .傳感技術學報,2007(6):1335-1337.
[3] 楊常松,徐曉蘇.捷聯慣性導航系統加速度計標度因數和安裝誤差的試驗標定[J] .測控技術,2005,12(24):57-59.
[4] 吳麗華,李礫,趙舒,等.基于SIM300的遠程心電監護系統的設計與開發[J] .哈爾濱理工大學學報,2010,15(1):112-115.
[5] 王昆,陳晰志.基于GPRS的地下水動態水位監測系統研究[J] .計算機測量與控制,2011,19(2):263-264.