袁通,周風(fēng)余,王小龍,劉汝華,陸娜
(山東大學(xué)控制科學(xué)與工程學(xué)院,濟(jì)南250061)
本系統(tǒng)提出的算法主要是在加速度計、陀螺儀、磁力計采集人體運(yùn)動姿態(tài)信息的基礎(chǔ)上,運(yùn)用擴(kuò)展卡爾曼濾波算法將數(shù)據(jù)進(jìn)行融合,得到人體腰部和腿部的角度信息,然后通過大量實驗建立與姿態(tài)的對應(yīng)關(guān)系,采用這種方式可以利用加速度計與磁力計克服單獨(dú)采用陀螺儀引起的姿態(tài)角發(fā)散問題,另外利用陀螺儀可以避免振動對于加速度計的影響和軟硬鐵磁對于磁力計的影響[2]。
系統(tǒng)分為上位機(jī)系統(tǒng)和下位機(jī)系統(tǒng),下位機(jī)系統(tǒng)由電源模塊、兩個iNEMO模塊、GPRS模塊和主控板組成,其中電源模塊給整個系統(tǒng)提供3.3V和5V的工作電壓,兩個iNEMO模塊分別固定在人體的腰部和腿部,完成對加速度計、磁力計、陀螺儀的信息采集,然后通過串口發(fā)送到主控板,主控板進(jìn)行卡爾曼濾波,融合出腰部和腿部的角度,然后根據(jù)腰部和腿部的角度值完成姿態(tài)的檢測,最后GPRS模塊通過Socket協(xié)議將姿態(tài)信息打包傳送到上位機(jī),上位機(jī)實現(xiàn)遠(yuǎn)程監(jiān)控。系統(tǒng)整體設(shè)計方案如圖1所示。
圖1 系統(tǒng)整體設(shè)計方案
在慣性導(dǎo)航領(lǐng)域,求取姿態(tài)角的數(shù)學(xué)表達(dá)式叫做方向余弦矩陣。方向余弦矩陣有兩種表示方式:歐拉角與四元數(shù)[3]。歐拉角的優(yōu)點是比較直觀,缺點是在俯仰角為正負(fù)90°時系統(tǒng)存在不穩(wěn)定奇點。四元數(shù)的優(yōu)點是當(dāng)俯仰角為正負(fù)90°時系統(tǒng)不受影響,缺點是不直觀。下面是它們之間的相互轉(zhuǎn)換公式。
歐拉角轉(zhuǎn)換成四元數(shù):
四元數(shù)轉(zhuǎn)換成歐拉角:
在程序中使用的是四元數(shù),由于四元數(shù)不能直觀地表示輸出的角度,所以首先根據(jù)陀螺儀求取四元數(shù),再將四元數(shù)轉(zhuǎn)換成姿態(tài)角。根據(jù)運(yùn)動體安裝的三軸陀螺儀,可以得到在運(yùn)動體坐標(biāo)系下的三軸角速度(wx,wy,wz),用三軸角速度更新四元數(shù):
然后利用加速度計的信息,采用卡爾曼濾波的方法來對四元數(shù)進(jìn)行修正,設(shè)系統(tǒng)的狀態(tài)空間方程為:
其中,X(k)是k時刻的系統(tǒng)狀態(tài),U(k)是k時刻對系統(tǒng)的控制量。A和B是系統(tǒng)參數(shù)。Z(k)是k時刻的測量值,H是測量系統(tǒng)的參數(shù)。W(k)和V(k)分別表示過程和測量的噪聲。
為了提高慣性導(dǎo)航儀的啟動速度,需要利用歐拉角求取初始的四元數(shù),首先根據(jù)運(yùn)動體上三軸加速度計輸出的三軸加速度(fx,fy,fz),求取俯仰角θ與橫滾角φ,公式如下:
隨后讀取磁力計輸出的三軸磁場強(qiáng)度Mb=,然后用加速度計對磁力計進(jìn)行傾斜補(bǔ)償:
根據(jù)傾斜補(bǔ)償后的磁力計輸出,可以求得偏航角為:
利用式(5)和(7)可以完成對四元數(shù)的初始化工作。
iNEMO慣性導(dǎo)航模塊的基本原理如圖2所示,利用MEMS傳感器和主控芯片STM32F103RET6提供動靜態(tài)方向和慣性測量功能。集成3個(4種)意法半導(dǎo)體傳感器:三軸陀螺儀(L3GD20)、三軸加速度計+三軸磁力計(LSM303DLHC)以及氣壓傳感器(LPS331AP)。iNEMO傳感器平臺主控制器通過I2C總線與各傳感器通信。iNEMO傳感器平臺可以通過串口向外界提供各傳感器原始數(shù)據(jù),還可以提供各傳感器經(jīng)AHRS算法融合后的橫滾、偏航及俯仰角度。
圖2 iNEMO慣性導(dǎo)航模塊框圖
圖3為系統(tǒng)主控板電路圖,其中處理器采用了STM32F103VCT6,STM32系列單片機(jī)以Cortex-M3為內(nèi)核,時鐘頻率可達(dá)到72MHz,具有豐富的片內(nèi)外設(shè),高性能、低成本、低功耗的特點使其成為32位產(chǎn)品用戶的最佳選擇。主控板拓展了多個串行接口,和iNEMO腿部模塊、iNEMO腰部模塊和GPRS模塊進(jìn)行串口通信。穩(wěn)壓芯片選用了LM2576D2T-5,其最大輸入電壓為45V,可穩(wěn)定輸出5V電壓,再經(jīng)過REG1117-3.3的穩(wěn)壓電路,產(chǎn)生3.3V工作電壓,當(dāng)電流異常導(dǎo)致溫度過高時,保險絲F1、F2可以自身熔斷切斷電流,起到保護(hù)電路的作用。另外,主控電路還包括復(fù)位電路、晶振電路、電容濾波電路以及JTAG下載接口等。
圖3 主控板電路圖
圖4 GPRS電路圖
圖4為GPRS電路圖,主要包括MCU、SIM300模塊、SIM卡卡槽、穩(wěn)壓電路四部分[4]。MCU同樣采用了STM32F103VCT6,圍繞它設(shè)計了單片機(jī)最小系統(tǒng),包括晶振電路、復(fù)位電路、電容濾波電路等,MCU通過串口向SIM300發(fā)送控制指令以及接收SIM300返回的數(shù)據(jù);SIM300模塊與PCB板的連接方式為60引腳的板板連接器,全部引腳從該連接器引出,SIM300的網(wǎng)絡(luò)狀態(tài)指示燈引腳可根據(jù)模塊的網(wǎng)絡(luò)狀態(tài)輸出不同頻率的電壓脈沖,方便觀測模塊是否正常工作,對于不需要用的音頻接口、LCD接口等,對應(yīng)的引腳懸空即可。穩(wěn)壓芯片選擇方面,可以使用開關(guān)型穩(wěn)壓芯片或者LDO線性穩(wěn)壓芯片,開關(guān)型穩(wěn)壓芯片轉(zhuǎn)換效率高,但是需要的外圍器件較多,且多為功率器件,占用空間比較大,為了節(jié)省PCB空間,設(shè)計中采用MIC5219-3.3BM5穩(wěn)壓芯片作為SIM300的電源調(diào)理芯片。
圖5所示為系統(tǒng)軟件整體流程圖,首先對STM32F103VCT6(以下簡稱STM32)進(jìn)行初始化配置,包括時鐘電路RCC高速時鐘和低速時鐘的起振、通用引腳GPIO輸入/輸出模式的配置、串口USART波特率的設(shè)置,然后將SIM300設(shè)置為透傳模式,進(jìn)行網(wǎng)絡(luò)連接(具體過程可參考3.3節(jié))。成功連接網(wǎng)絡(luò)之后,配置iNEMO模塊各傳感器的分辨率、字節(jié)對齊方式、讀取頻率等,分別讀取腰部和腿部iNEMO模塊的加速度、陀螺儀、磁力計原始數(shù)據(jù)。獲得原始數(shù)據(jù)之后根據(jù)分辨率的設(shè)置計算磁力計、陀螺儀、加速度的大小,最后通過擴(kuò)展卡爾曼濾波融合得到腰部的俯仰角PITCH、腿部的偏航角YAW,結(jié)合兩個角度信息通過查表法進(jìn)行姿態(tài)判斷,設(shè)置相應(yīng)的標(biāo)志位,通過GPRS將姿態(tài)標(biāo)志位打包后發(fā)送到遠(yuǎn)程監(jiān)控端。
如圖6所示,iNEMO模塊中L3GD20、LSM303DLHC以及LPS331AP通過I2C串行總線與單片機(jī)進(jìn)行通信,I2C總線兩根雙向信號線一根是數(shù)據(jù)線SDA,另一根是時鐘線SCL,通過上拉電阻接到正電源VDD,每個接到I2C總線上的器件都有唯一的地址,主機(jī)發(fā)送地址時,總線上的每個從機(jī)都將7位地址碼與自己的地址進(jìn)行比較,如果相同,則認(rèn)為自己正被主機(jī)尋址。
圖5 系統(tǒng)軟件整體流程圖
圖6 I 2 C串行總線示意圖
iNEMO各個傳感器的地址碼宏定義如下:
采集到傳感器的數(shù)據(jù)之后,首先利用三軸陀螺儀信號,采用四元數(shù)的姿態(tài)表達(dá)式、積分求得姿態(tài)角,然后采用三軸加速度計和三軸磁力計,利用大地磁場和重力磁場在地理坐標(biāo)系和運(yùn)動坐標(biāo)系之間的方向余弦進(jìn)行絕對角度的解算,然后采用卡爾曼濾波進(jìn)行前三者數(shù)據(jù)的融合,得到腰部的俯仰角PITCH、腿部偏航角YAW。通過大量實驗建立姿態(tài)角與人體姿態(tài)的對應(yīng)表如表1所列。
表1 姿態(tài)與YAW、PITCH的對應(yīng)表
SIM300透傳模式的配置大致分為以下4步:
①匹配波特率,發(fā)送“AT”指令后,延時一段時間發(fā)送“ATE0”。
②注冊網(wǎng)絡(luò),發(fā)送“AT+CREG?”,若返回“OK”,則網(wǎng)絡(luò)注冊成功。
③設(shè)置透傳模式,發(fā)送“AT+CIPMODE=1”,若返回“OK”,則設(shè)置成功。
④連接網(wǎng)絡(luò),發(fā)送“AT+CIPSTART="TCP","219.236.xxx.xxx","7000"”,其219.236.xxx.xxx為PC的IP地址,7000為端口號。連接成功返回"CONNECT OK"。
為了驗證系統(tǒng)姿態(tài)檢測功能的可靠性,選取了不同的人分別佩戴該系統(tǒng)做了大量的實驗,完成了對站立、坐下、行走、彎腰、躺下、趴倒的識別率的測試。從表2中可以看出,大部分動作均可以準(zhǔn)確無誤地識別出來,行走、彎腰兩個動作出現(xiàn)了誤識別,這是由于不同的人佩戴該系統(tǒng)時,各個姿態(tài)對應(yīng)的角度閾值會有少許的差別,但是95%以上的識別率足夠滿足用戶的要求。
表2 識別次數(shù)
人體姿態(tài)檢測裝置實現(xiàn)了對人體姿態(tài)的檢測,可以很好地應(yīng)用在對老人的監(jiān)護(hù)、體感游戲等領(lǐng)域。數(shù)字式傳感器的應(yīng)用簡化了硬件電路,GPRS模塊的網(wǎng)絡(luò)傳輸突破了射頻傳輸距離短的缺陷,擴(kuò)大了傳輸距離,整個系統(tǒng)體積小巧方便、應(yīng)用性強(qiáng)。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
[1] 曹玉珍,蔡偉超,程旸.基于MEMS加速度傳感器的人體姿態(tài)檢測技術(shù)[J] .納米技術(shù)與精密工程,2010(8):39.
[2] 邵婷婷,馬建倉,胡士峰,等.電子羅盤的傾斜及羅差補(bǔ)償算法研究[J] .傳感技術(shù)學(xué)報,2007(6):1335-1337.
[3] 楊常松,徐曉蘇.捷聯(lián)慣性導(dǎo)航系統(tǒng)加速度計標(biāo)度因數(shù)和安裝誤差的試驗標(biāo)定[J] .測控技術(shù),2005,12(24):57-59.
[4] 吳麗華,李礫,趙舒,等.基于SIM300的遠(yuǎn)程心電監(jiān)護(hù)系統(tǒng)的設(shè)計與開發(fā)[J] .哈爾濱理工大學(xué)學(xué)報,2010,15(1):112-115.
[5] 王昆,陳晰志.基于GPRS的地下水動態(tài)水位監(jiān)測系統(tǒng)研究[J] .計算機(jī)測量與控制,2011,19(2):263-264.