秦 嶺,張 振,朱加成,東單鋒
(南京工業(yè)大學 計算機科學與技術(shù)學院,江蘇 南京 211816)
隨著GPS全球定位系統(tǒng)的發(fā)展以及智能便攜終端(智能手機、平板電腦、智能硬件等)的普及,與室內(nèi)相關(guān)的位置服務[1](LBS)越來越受到人們的關(guān)注。然而,在室內(nèi)環(huán)境中,由于樓宇等建筑物的遮擋,導致GPS信號非常微弱,定位精度無法達到人們的要求。這激發(fā)了研究人員對室內(nèi)定位技術(shù)精度的追求,提出了各種創(chuàng)新方法[2]。
現(xiàn)有的室內(nèi)定位技術(shù)主要分為以下3種:基于短距離的無線通信定位[3]、基于Wi-Fi信號的無線定位方法[4]和基于慣性傳感器的定位算法[5]。在室內(nèi)定位這方面的研究上,金仁等[6]提出的聚類算法對數(shù)據(jù)進行分類,提高了室內(nèi)定位精度;楊國賽等[7]提出的一種基于超寬帶的室內(nèi)定位算法,在非視線干擾時減少定位誤差,提高精度;Ahmet Yazc等通過將Wi-Fi信號值和磁場傳感器值阻隔起來,構(gòu)建混合指紋圖,然后利用不同的傳感器測量值和分類算法,在不同的室內(nèi)環(huán)境下,增強了室內(nèi)定位系統(tǒng)性能[8];Belal Al-Qudsi等[9]提出一種多頻段可擴展定位系統(tǒng),通過擴展了參考節(jié)點和移動節(jié)點,來減少定位誤差。
綜上,目前室內(nèi)定位技術(shù)普遍存在的缺點是成本較高或者精度較低[10]。針對上述存在問題,本文采用了一種基于九軸傳感器的定位方式,利用基于MEMS技術(shù)的九軸傳感器和運動學相關(guān)的理論[11],不依賴外部信息,實現(xiàn)自主、連續(xù)、簡單、低功耗的導航室內(nèi)定位。其中,使用了行人航跡推算(PDR)算法,依據(jù)行人行走步數(shù)、行走航向及步長來實現(xiàn)定位,短時間內(nèi)獲得較高精度的相對位置信息。
九軸藍牙傳感器是一款創(chuàng)新性的高性能微型無線傳輸姿態(tài)傳感器。它是3種傳感器的組合,包括三軸陀螺儀(檢測角速度)、三軸加速度計(檢測地球重力場的方向)、三軸磁力計(測量地球磁場方向)。它利用藍牙2.0和BLE技術(shù),可以輕松地與PC、智能手機等設備通信,被應用于機器人和人類動作測量。
九軸藍牙傳感器運用藍牙技術(shù)與小米5進行無線傳輸。該傳感器中有兩種不同的通信模式,一種是命令模式(接通電源默認模式),在命令模式下,可以逐個命令訪問傳感器的功能,測量數(shù)據(jù)通過一個特殊的指令從傳感器傳送給用戶。該模式適用于調(diào)整傳感器的參數(shù)設置和同步數(shù)據(jù)傳輸,該模式下藍色LED閃爍頻率為10 Hz。另外一種是流模式,在流式模式中,數(shù)據(jù)不斷地從傳感器發(fā)送到主機。該模式適用于簡單、高速的數(shù)據(jù)采集,無法在此模式下設置傳感器參數(shù)。藍色/紅色LED在此模式下淡入淡出。最終通過這兩種不同的通信模式,利用手機App采集傳感器數(shù)據(jù)并進行分析,最終呈現(xiàn)行人的軌跡。
利用傳感器中加速度計輸出的三軸加速度、陀螺儀輸出的三軸角速度、磁力計輸出的三軸磁感應強度作為數(shù)據(jù)源,采樣頻率為50 Hz。
打開九軸藍牙傳感器并將其固定在腳踝上,同時打開手機藍牙與傳感器進行配對。配對成功之后,在室內(nèi)正常行走。利用App采集傳感器內(nèi)置的加速度計、陀螺儀和磁傳感器的X軸、Y軸、Z軸3個方向上的數(shù)據(jù)并進行保存。
根據(jù)傳感器固定在腳踝上的方向,本方法所定義的載體坐標系為b系,參考坐標系為n系。b系的方位指向如圖1所示,n系為地理坐標系。在b系中,X軸為左右方向,Y軸為上下方向,Z軸為前后方向(由于傳感器固定在腳踝上,行走方向為Y軸在水平面上的投影)。
圖1 傳感器固定位置及坐標系
整體加速度計算。通過計算加速度計的三軸加速度,避免載體坐標dx、dy、dz不同,而導致人體的加速度在垂直方向上產(chǎn)生誤差,從而降低了設備姿態(tài)的影響。整體加速度的計算公式如式(1)所示
(1)
式中:dx、dy、dz為加速度計3個方向x、y、z的實時采集值。
對計算得到的整體加速度進行均值濾波。設置一個滑動窗口,將每個滑動窗口的數(shù)據(jù)分為一組進行求和取平均值,將處理后的值保存作為新的整體加速度的值,使數(shù)據(jù)更加平滑,更易于波峰檢測及濾去噪聲。
利用滑動窗口的取值進行波峰檢測。本方法以傳統(tǒng)的波峰檢測法為基礎(chǔ),在傳統(tǒng)的波峰檢測法上進行了一些改進。改進的波峰檢測法需要滿足以下幾個條件:
(1)設置潛在波峰的值保持在一個范圍內(nèi)變化,從而避免身體抖動和傳感器自身的誤差造成數(shù)據(jù)有一定的波動;
(2)當前的點為下降趨勢,之前的點為上升趨勢;
(3)設置時間閾值,比較前一波峰的時間與潛在峰值的時間之差是否符合時間閾值,從而排除一些突然坐下及轉(zhuǎn)動身體等帶來的加速度值激增;
(4)設置一個幾秒鐘的滑動窗口,根據(jù)每個人行走的特點自適應地設定閾值,判斷陀螺儀Z軸的角速度gyroZ在這個滑動窗口里的方差是否小于設定的閾值,從而排除手勢晃動的情況;
(5)設置一個滑動窗口,該窗口以潛在峰值為中心,比較潛在峰值的前后采樣點,若潛在峰值為最大值,就將偽波峰去除。
步態(tài)檢測流程如圖2所示。
根據(jù)傳感器姿態(tài)的變化情況,原地踏步和正常行走時傳感器的姿態(tài)不同,通過設定一個閾值來識別原地踏步,最終將原地踏步時的步長設為0,不計入定位的總距離,從而減少室內(nèi)定位在定位距離方面的誤差。
檢測原地踏步需要滿足以下幾個條件:
(1)利用陀螺儀輸出的數(shù)據(jù),對陀螺儀X軸輸出的角速度gyroX進行低通濾波,從而去除了一些噪聲數(shù)據(jù)。
(2)在滿足上述計步條件的基礎(chǔ)上,取出每一步中X軸角速度的最大值maxGyroX和最小值minGyroX。
(3)設定一個閾值,若maxGyroX與minGyroX的差值小于所設定的閾值,則此次步態(tài)為原地踏步,將這次行走的步長設為0,否則為正常計步的情況。
原地踏步檢測流程如圖3所示。
圖2 步態(tài)檢測流程
圖3 原地踏步檢測流程
每一次行走的方向由姿態(tài)角決定,姿態(tài)角包括航向角ψ,俯仰角θ,橫滾角γ,可以通過如下方程組得出
(2)
(3)
(4)
(5)
姿態(tài)轉(zhuǎn)換矩陣得到后,利用如式(6)可以求出航向角ψ
(6)
在啟發(fā)式隨機漂移消除算法(HDE)的基礎(chǔ)上,利用一種基于主方向的航向修正算法,設定8個主方向,采用3個相鄰步間的航向變化來檢測直線行走和轉(zhuǎn)彎,利用如式(7)來檢測
(7)
其中,m表示行走路線的狀態(tài),1代表直線,0代表轉(zhuǎn)彎;ψi表示當前步的航向角,ψi-1和ψi-2分別表示前一步和前兩步的航向角,ψth表示設定的一個偏差閾值。通常情況下,偏差閾值設為10°左右。
當判斷行人走直線,即m=1時,經(jīng)HDE反饋系統(tǒng)修正航向角誤差。在HDE反饋系統(tǒng)中,前一時刻航向角相對于當前行人主方向的偏移角度經(jīng)MOD函數(shù)求取。MOD函數(shù)定義如式(8)所示
(8)
其中,ΔINT(k)為向上取整函數(shù),將ψi-1、Δ代入MOD函數(shù)內(nèi),如式(9)所示
(9)
(10)
根據(jù)Ii修正航向角方向,使其回歸主方向,即
ψi-HDE=ψraw,i+Ii
(11)
當判斷行人走曲線,即m=0時,HDE停止了陀螺儀的偏移補償,因此可以通過擴展卡爾曼濾波(EKF)進行偏移補償。
本文利用一種新的非線性步長估計模型,并結(jié)合了步頻的信息,利用如式(12),對步長進行估計
(12)
其中,amax、amin分別代表行走一步時的最大加速度值和最小加速度值;k代表使估計步長與真實步長之間誤差的最優(yōu)值,它依賴于用戶自身的真實步長估計得到,針對不同的用戶取不同的值,衡量了加速度值對步長估計的影響,使結(jié)果更加準;ω為權(quán)重參數(shù),它控制amax與amin之和在整個算法中的影響程度;β代表步頻控制系數(shù),由訓練數(shù)據(jù)經(jīng)最小二乘法擬合得到;F為步頻,由如式(13)計算得到
(13)
其中,Tpeak和Tvalley分別為上述步態(tài)檢測算法中每一步的波峰與波谷的時間。
在實時定位階段,利用如式(14),設定一個初始坐標,根據(jù)推算出來的步數(shù)、航向角、步長,可以推測到下一個點的坐標,從而推算出該行人的行走軌跡
(14)
其中,Xk和Yk分別表示行人第k步在X軸方向(東)和Y軸方向(北)上的位移,Sk表示行人在第k步上的步長,θk表示行人在第k步上的航向角。
本次測試共6位參與者,每位參與者按要求分別在室內(nèi)進行計步的測試。對每個參數(shù)者實驗結(jié)果取平均值,并與傳統(tǒng)的波峰檢測法進行對比,由表1可知,改進的波峰檢測法在計步的結(jié)果上要優(yōu)于傳統(tǒng)的波峰檢測法。
同樣,6個人按要求在室內(nèi)行走50 m,共產(chǎn)生6組數(shù)據(jù)來驗證步長估計算法的性能。由表2可知,該步長估計算法的精度可以達到1 m。
表1 平均計步結(jié)果比較
表2 步長估計結(jié)果
如圖4所示,行人真實軌跡為橫坐標為5的一條直線,圖中黑色實線為未使用航向修正算法的行人軌跡,基本符合人的運動軌跡,但是定位過程中軌跡陡變,說明其連續(xù)性較差。使用航向修正算法能夠緩解陡變的點,圖中黑色虛線為使用航向修正算法后的行人軌跡,定位結(jié)果表明修正后的軌跡更加接近行人真實軌跡。因此,該航向修正算法能有效修正航向角的偏差。
圖4 某辦公室航向修正效果
本文提出了一種基于九軸傳感器的室內(nèi)定位方法,通過將傳感器固定在腳踝上,在步態(tài)檢測方面,設置了多個條件,識別出一些姿態(tài),有效提高了步數(shù)的準確性;在航向角修正方面,采用了一種基于主方向的航向修正方法,在走直線時通過HDE反饋系統(tǒng)進行修正,在走曲線時,通過EKF算法進行偏移補償,有效地糾正了航向角的偏差;在步長檢測方面,使用了一種新的非線性步長估計模型進行估計,加入了權(quán)重參數(shù),同時結(jié)合了步頻的信息,進一步提高了步長的準確性。本文從多個方面考慮,切實有效地提高了室內(nèi)定位的精度,有很大的實用價值。但本方法不適合在三維立體空間、磁場干擾強等室內(nèi)環(huán)境中使用,在以后的工作中,考慮結(jié)合WLAN輔助、地圖匹配等技術(shù),實現(xiàn)更高精度的定位需求,同時,針對不同的場景,如何適配多樣化場景,也是需要進一步研究的內(nèi)容。