王靜宜, 曾祥燁, 蘇彥莽, 倪立強, 高東奇, 白夢帥
(河北工業大學 電子信息工程學院 天津市電子材料與器件重點實驗室,天津 300401)
在城市化進程中,大型建筑物已成為人們棲身立業的主要場所。實現室內三維定位,可以更好地進行人群行動規劃,出現火災等意外時也可以更好保障人員財產安全,所以室內定位問題具有重要研究價值。
本文設計了以慣性元件為基礎的室內三維定位系統,系統使用STM32F103單片機,從低成本的微機電系統(micro-electro-mechanical system,MEMS)慣性傳感器LPMS-ME1獲取行人行走時的慣性參量,從帶溫度補償的氣壓傳感器模塊BMP180獲取高度信息,經預處理后,通過無線數傳模塊CC1101將預處理結果傳輸至服務器,經服務器再處理實現行人的室內三維定位。
本文利用慣性傳感器陀螺儀來測量運載體本身的慣性參量,然后利用積分等數學運算得到運載體的運動速度、相對距離等信息,從而實現對運動目標的定位[1,2]。
導航坐標系記作OnXnYnZn。選取北東地地理坐標系,即導航坐標系的原點On位于運載體的重心,Xn,Yn,Zn分別指向北方、東方、大地方向,符合右手定律。載體坐標系記作ObXbYbZb。原點Ob位于運載體的重心,Xb,Yb,Zb分別指向運載體的前方、右方、下方,符合右手定律。載體坐標系(Xb軸為前進正方向)繞Xb,Yb,Zb軸旋轉的角度分別記為γ,θ,ψ。
通過導航坐標系(n系)到載體坐標系(b系)的旋轉矩陣可求出載體的翻滾角、俯仰角以及航向角。
基于慣性傳感器的行人航位推算一般用于行人的二維定位,利用基于過零點檢測法來計算行人步數。一般行人正常的行走的步幅范圍為45~85 cm,并且同一個人在正常行走時的步幅變化不大[4]。擬合一種線性步長估計模型[5]。其第k步的步長估計模型為
SLk=a×Fk+b×As+c
(1)
式中SLk為第k步的步長,m;a,b,c分別為利用線性回歸計算得到的估計參數;Fk和As分別為第k步的頻率和合加速度。
行人的航向角可以由慣性傳感器輸出的歐拉角來獲得。由于本系統的慣性傳感器件將佩戴于行人腰間,且Zb軸平行于水平面指向行人的前方,所以,慣性傳感器的翻滾角即為行人的航向角。
本文擬采用高度測量按鍵初始化的方法,人為地設定參考平面,即先采集初始位置的大氣壓值p'0作為參考大氣壓,再根據當前的大氣壓來計算相對高度。大氣壓與相對高度的對應關系式
(2)
式中p為氣壓傳感器的當前測量值。
本系統數據采集終端由STM32F103單片機、9軸慣性傳感器模塊LPMS—ME1、帶溫度補償的氣壓傳感器模塊BMP180以及工作頻段為433 MHz的無線數傳模塊CC1101組成;服務器端由STM8L101單片機最小系統板、工作頻段為433 MHz的無線數傳模塊CC1101以及PC機組成。硬件系統方框圖如圖1所示。

圖1 硬件系統方框圖
數據采集終端的主要任務是對行人運動時的部分數據進行采樣與初步處理,該部分的軟件設計基于STM32F103ZET6的最小系統板,通過I2C和SPI通信協議分別與慣性傳感器、大氣壓傳感器和無線數據傳輸的發送模塊進行數據交換。
無線通信的數據傳輸率為250 kBaud/s,每一包數據包含7個有效字節,分別是設備編號(1個字節)、數據類型代碼(1個字節)、數據(4個字節)、校驗和(1個字節)。
服務器端的主要任務是對數據采集終端采集的數據進行接收與再處理,并將行人的定位結果顯示出來。STM8L101單片機最小系統板通過SPI接口與無線數傳的接收模塊進行數據交換,將接收到的數據發送到PC機的串口,使用Python中的serial模塊讀取串口數據便可以實現對定位數據的接收與再處理。
為減小定位誤差,將采用硬件復位,軟件計算校正的方法。由于本系統中的慣性傳感器佩戴在行人的腰間,且Zb軸平行于水平面指向行人的前方,所以,讀取本慣性傳感器的翻滾角即為行人的航向角。
將數據采集終端固定在行人的腰部,行人行走一段距離,將傳感器采集到的加速度數據通過無線模塊傳輸到服務器端,并繪制接收數據的二維圖像,如圖2所示。

圖2 行人行走過程中身體縱向(X軸)加速度的變化
本文初步選用X軸方向的加速度值來計算步數,Y軸、Z軸方方向的加速度值可用來輔助計算步長。
當行人并沒有走動或正常走動的過程中身體有抖動時,加速度計可能會將Z軸的波動計算在內而進行計步。為了避免這種情況的發生,設置一個Δt,表示檢測到的兩步的時間間隔。當行人正常行走時,一般1 s內行走步數少于3步[7],因此本文Δt=0.25 s。
行人正常行走的過程中,采集行人的運動數據,使用Excel對采集到的運動數據進行回歸計算,求得步長模型
SLk=0.328 8×Fk+0.437 7×As-0.132 0
(3)
相關系數R2≈0.91,表明數學模型較好的符合原始數據。
將傳感器固定于行人腰部,進行計步測試,結果如表1。

表1 計步測試結果
將傳感器固定于行人腰部,對步長估計模型的準確度進行測試。當行人正常行走時,測試結果如表2所示。

表2 步長估計模型測試結果
將傳感器佩戴于測試人員腰部,進行變高測試。行人從一樓走上四樓,觀察服務器端行人高度信息的變化。由于該大氣壓傳感器的高度信息波動較大,所以,對原始的高度數據進行均值濾波,濾波之后的測試結果如圖3所示。

圖3 高度測試結果
為了驗證本系統可以正常的完成基于慣性測量元件的室內三維定位,將傳感器固定于行人腰部,行人在三樓初始化本系統之后,走到一樓,在服務器端對行人進行三維定位測試,測試結果如圖4所示(單位:m)。

圖4 室內定位結果
由上述測試的結果可知,在行人身體沒有太大抖動的前提下,計步算法的準確度達到了95 %以上,初步實現了對行人的步數計算功能,且誤差在可以接受的范圍之內;在行人正常行走的過程中,步長估計模型的步長估計準確度達到了90 %以上,實現了對行人的步長估計;由于氣壓容易受到外界的干擾,所以高度數據有較大波動,上下波動的范圍在可接受的1 m以內。
本文研究的內容主要是基于慣性測量元件的三維定位,分別從硬件和軟件兩個方面闡述了利用慣性測量元件進行三維定位的系統設計方案,介紹了各個模塊的基本原理及無線通信防碰撞的實現方法,定義了無線通信協議,實現了基于慣性傳感器的行人航位推算以及空間高度信息獲取。經過軟硬件調試和實際測試結果得知:行人正常行走100 m,定位誤差在1.5 m以內,完成了利用慣性測量元件進行三維定位系統的設計。