秦 嶺,張 振,朱加成,東單鋒
(南京工業大學 計算機科學與技術學院,江蘇 南京 211816)
隨著GPS全球定位系統的發展以及智能便攜終端(智能手機、平板電腦、智能硬件等)的普及,與室內相關的位置服務[1](LBS)越來越受到人們的關注。然而,在室內環境中,由于樓宇等建筑物的遮擋,導致GPS信號非常微弱,定位精度無法達到人們的要求。這激發了研究人員對室內定位技術精度的追求,提出了各種創新方法[2]。
現有的室內定位技術主要分為以下3種:基于短距離的無線通信定位[3]、基于Wi-Fi信號的無線定位方法[4]和基于慣性傳感器的定位算法[5]。在室內定位這方面的研究上,金仁等[6]提出的聚類算法對數據進行分類,提高了室內定位精度;楊國賽等[7]提出的一種基于超寬帶的室內定位算法,在非視線干擾時減少定位誤差,提高精度;Ahmet Yazc等通過將Wi-Fi信號值和磁場傳感器值阻隔起來,構建混合指紋圖,然后利用不同的傳感器測量值和分類算法,在不同的室內環境下,增強了室內定位系統性能[8];Belal Al-Qudsi等[9]提出一種多頻段可擴展定位系統,通過擴展了參考節點和移動節點,來減少定位誤差。
綜上,目前室內定位技術普遍存在的缺點是成本較高或者精度較低[10]。針對上述存在問題,本文采用了一種基于九軸傳感器的定位方式,利用基于MEMS技術的九軸傳感器和運動學相關的理論[11],不依賴外部信息,實現自主、連續、簡單、低功耗的導航室內定位。其中,使用了行人航跡推算(PDR)算法,依據行人行走步數、行走航向及步長來實現定位,短時間內獲得較高精度的相對位置信息。
九軸藍牙傳感器是一款創新性的高性能微型無線傳輸姿態傳感器。它是3種傳感器的組合,包括三軸陀螺儀(檢測角速度)、三軸加速度計(檢測地球重力場的方向)、三軸磁力計(測量地球磁場方向)。它利用藍牙2.0和BLE技術,可以輕松地與PC、智能手機等設備通信,被應用于機器人和人類動作測量。
九軸藍牙傳感器運用藍牙技術與小米5進行無線傳輸。該傳感器中有兩種不同的通信模式,一種是命令模式(接通電源默認模式),在命令模式下,可以逐個命令訪問傳感器的功能,測量數據通過一個特殊的指令從傳感器傳送給用戶。該模式適用于調整傳感器的參數設置和同步數據傳輸,該模式下藍色LED閃爍頻率為10 Hz。另外一種是流模式,在流式模式中,數據不斷地從傳感器發送到主機。該模式適用于簡單、高速的數據采集,無法在此模式下設置傳感器參數。藍色/紅色LED在此模式下淡入淡出。最終通過這兩種不同的通信模式,利用手機App采集傳感器數據并進行分析,最終呈現行人的軌跡。
利用傳感器中加速度計輸出的三軸加速度、陀螺儀輸出的三軸角速度、磁力計輸出的三軸磁感應強度作為數據源,采樣頻率為50 Hz。
打開九軸藍牙傳感器并將其固定在腳踝上,同時打開手機藍牙與傳感器進行配對。配對成功之后,在室內正常行走。利用App采集傳感器內置的加速度計、陀螺儀和磁傳感器的X軸、Y軸、Z軸3個方向上的數據并進行保存。
根據傳感器固定在腳踝上的方向,本方法所定義的載體坐標系為b系,參考坐標系為n系。b系的方位指向如圖1所示,n系為地理坐標系。在b系中,X軸為左右方向,Y軸為上下方向,Z軸為前后方向(由于傳感器固定在腳踝上,行走方向為Y軸在水平面上的投影)。

圖1 傳感器固定位置及坐標系
整體加速度計算。通過計算加速度計的三軸加速度,避免載體坐標dx、dy、dz不同,而導致人體的加速度在垂直方向上產生誤差,從而降低了設備姿態的影響。整體加速度的計算公式如式(1)所示
(1)
式中:dx、dy、dz為加速度計3個方向x、y、z的實時采集值。
對計算得到的整體加速度進行均值濾波。設置一個滑動窗口,將每個滑動窗口的數據分為一組進行求和取平均值,將處理后的值保存作為新的整體加速度的值,使數據更加平滑,更易于波峰檢測及濾去噪聲。
利用滑動窗口的取值進行波峰檢測。本方法以傳統的波峰檢測法為基礎,在傳統的波峰檢測法上進行了一些改進。改進的波峰檢測法需要滿足以下幾個條件:
(1)設置潛在波峰的值保持在一個范圍內變化,從而避免身體抖動和傳感器自身的誤差造成數據有一定的波動;
(2)當前的點為下降趨勢,之前的點為上升趨勢;
(3)設置時間閾值,比較前一波峰的時間與潛在峰值的時間之差是否符合時間閾值,從而排除一些突然坐下及轉動身體等帶來的加速度值激增;
(4)設置一個幾秒鐘的滑動窗口,根據每個人行走的特點自適應地設定閾值,判斷陀螺儀Z軸的角速度gyroZ在這個滑動窗口里的方差是否小于設定的閾值,從而排除手勢晃動的情況;
(5)設置一個滑動窗口,該窗口以潛在峰值為中心,比較潛在峰值的前后采樣點,若潛在峰值為最大值,就將偽波峰去除。
步態檢測流程如圖2所示。
根據傳感器姿態的變化情況,原地踏步和正常行走時傳感器的姿態不同,通過設定一個閾值來識別原地踏步,最終將原地踏步時的步長設為0,不計入定位的總距離,從而減少室內定位在定位距離方面的誤差。
檢測原地踏步需要滿足以下幾個條件:
(1)利用陀螺儀輸出的數據,對陀螺儀X軸輸出的角速度gyroX進行低通濾波,從而去除了一些噪聲數據。
(2)在滿足上述計步條件的基礎上,取出每一步中X軸角速度的最大值maxGyroX和最小值minGyroX。
(3)設定一個閾值,若maxGyroX與minGyroX的差值小于所設定的閾值,則此次步態為原地踏步,將這次行走的步長設為0,否則為正常計步的情況。
原地踏步檢測流程如圖3所示。

圖2 步態檢測流程

圖3 原地踏步檢測流程

每一次行走的方向由姿態角決定,姿態角包括航向角ψ,俯仰角θ,橫滾角γ,可以通過如下方程組得出

(2)

(3)
(4)

(5)

姿態轉換矩陣得到后,利用如式(6)可以求出航向角ψ
(6)
在啟發式隨機漂移消除算法(HDE)的基礎上,利用一種基于主方向的航向修正算法,設定8個主方向,采用3個相鄰步間的航向變化來檢測直線行走和轉彎,利用如式(7)來檢測
(7)
其中,m表示行走路線的狀態,1代表直線,0代表轉彎;ψi表示當前步的航向角,ψi-1和ψi-2分別表示前一步和前兩步的航向角,ψth表示設定的一個偏差閾值。通常情況下,偏差閾值設為10°左右。
當判斷行人走直線,即m=1時,經HDE反饋系統修正航向角誤差。在HDE反饋系統中,前一時刻航向角相對于當前行人主方向的偏移角度經MOD函數求取。MOD函數定義如式(8)所示
(8)
其中,ΔINT(k)為向上取整函數,將ψi-1、Δ代入MOD函數內,如式(9)所示
(9)

(10)
根據Ii修正航向角方向,使其回歸主方向,即
ψi-HDE=ψraw,i+Ii
(11)
當判斷行人走曲線,即m=0時,HDE停止了陀螺儀的偏移補償,因此可以通過擴展卡爾曼濾波(EKF)進行偏移補償。
本文利用一種新的非線性步長估計模型,并結合了步頻的信息,利用如式(12),對步長進行估計
(12)
其中,amax、amin分別代表行走一步時的最大加速度值和最小加速度值;k代表使估計步長與真實步長之間誤差的最優值,它依賴于用戶自身的真實步長估計得到,針對不同的用戶取不同的值,衡量了加速度值對步長估計的影響,使結果更加準;ω為權重參數,它控制amax與amin之和在整個算法中的影響程度;β代表步頻控制系數,由訓練數據經最小二乘法擬合得到;F為步頻,由如式(13)計算得到
(13)
其中,Tpeak和Tvalley分別為上述步態檢測算法中每一步的波峰與波谷的時間。
在實時定位階段,利用如式(14),設定一個初始坐標,根據推算出來的步數、航向角、步長,可以推測到下一個點的坐標,從而推算出該行人的行走軌跡
(14)
其中,Xk和Yk分別表示行人第k步在X軸方向(東)和Y軸方向(北)上的位移,Sk表示行人在第k步上的步長,θk表示行人在第k步上的航向角。
本次測試共6位參與者,每位參與者按要求分別在室內進行計步的測試。對每個參數者實驗結果取平均值,并與傳統的波峰檢測法進行對比,由表1可知,改進的波峰檢測法在計步的結果上要優于傳統的波峰檢測法。
同樣,6個人按要求在室內行走50 m,共產生6組數據來驗證步長估計算法的性能。由表2可知,該步長估計算法的精度可以達到1 m。

表1 平均計步結果比較

表2 步長估計結果
如圖4所示,行人真實軌跡為橫坐標為5的一條直線,圖中黑色實線為未使用航向修正算法的行人軌跡,基本符合人的運動軌跡,但是定位過程中軌跡陡變,說明其連續性較差。使用航向修正算法能夠緩解陡變的點,圖中黑色虛線為使用航向修正算法后的行人軌跡,定位結果表明修正后的軌跡更加接近行人真實軌跡。因此,該航向修正算法能有效修正航向角的偏差。

圖4 某辦公室航向修正效果
本文提出了一種基于九軸傳感器的室內定位方法,通過將傳感器固定在腳踝上,在步態檢測方面,設置了多個條件,識別出一些姿態,有效提高了步數的準確性;在航向角修正方面,采用了一種基于主方向的航向修正方法,在走直線時通過HDE反饋系統進行修正,在走曲線時,通過EKF算法進行偏移補償,有效地糾正了航向角的偏差;在步長檢測方面,使用了一種新的非線性步長估計模型進行估計,加入了權重參數,同時結合了步頻的信息,進一步提高了步長的準確性。本文從多個方面考慮,切實有效地提高了室內定位的精度,有很大的實用價值。但本方法不適合在三維立體空間、磁場干擾強等室內環境中使用,在以后的工作中,考慮結合WLAN輔助、地圖匹配等技術,實現更高精度的定位需求,同時,針對不同的場景,如何適配多樣化場景,也是需要進一步研究的內容。