,,,
(浙江大學城市學院 計算機與計算科學學院,杭州 221116)
一個人的位置信息對于如今的物聯網時代無疑是舉足輕重的。在室外,人們可以依靠全球定位系統(GPS)來獲得自己的實際位置信息以及行走的路徑,但是,一旦走入室內,全球定位系統的能力便發揮不出來,人們在室內的位置信息,行走路徑變成了不可捉摸的事。
室內定位就是在一定程度上解決上述的難題?,F如今,有很多室內定位的方法。大多數的尋跡、定位方案都需要與外部設備連接才能達到預期效果,如基于紅外、超聲波、超寬帶、射頻識別、Wi-Fi信號。也有基于手機內置傳感器的行人尋跡方案,這也是我們將要提出并加以改進的方向。
具體來說,典型的紅外線室內定位系統如Active badges使待測物體附上一個電子標識,該標識通過紅外發射機向室內固定放置的紅外接收機周期發送該待測物唯一ID,接收機再通過有線網絡將數據傳輸給數據庫。這個定位技術功耗較大且常常會受到室內墻體或物體的阻隔,實際效果并不能令人滿意實用性較低[1]。
超聲波定位目前大多數采用反射式測距法。系統由一個主測距器和若干個電子標簽組成,主測距器可放置于移動機器人本體上,各個電子標簽放置于室內空間的固定位置。超聲波定位能做到較高的精度,但是在傳輸過程中衰減明顯最終影響其實際效用[1]。
超寬帶室內定位技術常采用TDOA演示測距定位算法,通過信號到達的時間差,通過雙曲線交叉來定位的超寬帶系統包括產生、發射、接收、處理極窄脈沖信號的無線電系統。而超寬帶室內定位系統則包括接收器、參考標簽和主動標簽。定位過程中由接收器接收標簽發射的信號,通過過濾電磁波傳輸過程中夾雜的各種噪聲干擾,得到含有效信息的信號,再通過中央處理單元進行測距。這類的定位精度很高可以達到厘米級,但是成本極高,并不能普遍使用;定位計算分析這些方法在定位的精度上其實是可行的,但是上述的定位技術都要依靠相應的基礎設施,而這無疑是增大了成本,同時耗費更多的人力、物力[2-3]。
射頻識別利用了電感和電磁耦合或雷達反射的傳輸特性,實現對被識別物體的自動識別。如ZigBee技術,它應用于較短的距離無線通信、面向無線個人局域網。此類方案定位精度大概在2米左右,雖然能適應室內定位的基本要求,但是網絡穩定性成為制約其發展的瓶頸容易受到環境的干擾[4]。
最后,基于Wi-Fi信號的室內定位價格合理、精度高是現今采用最多的計算行人航位、估計室內位置的方法,但是Wi-Fi定位不僅需要每個室內環境的地圖、還需要預先對信號進行訓練,而這一過程往往不是那么輕而易舉的達成,需要有一定的相應工作經驗的人才能勝任,并且需要耗費大量的時間并在后期管理上有一定的挑戰性[5]。
根據上述所說,我們應當找尋一種相對來說更優的方法,它能夠在保持精度的情況下,減少對基礎設備的依賴,減少人力、物力的成本。我們提出了基于測量單元設備(IMU)的行人軌跡推算的方法。此方法基于大多數智能手機自帶的加速度計、陀螺儀、磁力計,結合傳感器數據與相應的算法,能夠較準確的計算得到行人在室內行走的軌跡線路。
在文章接下來的部分,我們會在第二節講述自己的算法架構及流程,在第三節講述自己的實驗結果,在第四節對自己的工作進行總結以及提出一些未來能夠改進的想法。
如圖1所示,我們將整個計算流程分為三部分,簡要來說,分別從每個傳感器出發進行相應的計算工作。通過獲取陀螺儀3個方向上的實時數據,采用姿態矩陣解算的方法獲得當前時刻人持手機時的姿勢以及方向姿態信息,再將其結合加速度計得到的相應的位置與航向信息,結合數據的預處理,可以估計出行人的步長,通過陀螺儀與磁力計進行方向融合,更精準的推算出行人的航向角度,結合方向與行走的步長,理論上我們便可以獲得一個行人的軌跡信息。
圖1 算法流程圖
由于我們手持設備的時候其實是基于本地坐標系統的,但是在后續的計算中,我們都是需要在全球坐標系統上進行驗算,因此,我們需要引入相應的方法進行坐標系統的轉換[6]。
我們采用四元素法進行坐標系統的轉換,這其實本質上是一個姿態解算的過程,針對的場景是行人在以不同方式手持設備。因為四元數法只需要對線性微分方程組中的4個未知量進行解算,比方向余弦法等其他計算方法的計算量小,而且計算方法簡單,易于操作,是比較實用的工程算法。
四元數Q表示如下:
(1)
(2)
(3)
由上式可算出每個時刻的四元數,進而可獲得相應姿態矩陣如下:
(4)
通過該姿態矩陣,可實現從全球坐標系到導航坐標系的變換[7]。后續的內容中,若無特殊申明,所有數值都是相對于全球坐標系,即以經過姿態解算的步驟。
行人在室內移動的距離可以通過檢測行人的步數并估計行人的步長得到,因此,如何監測到行人每次的邁步動作獲得行人的步數以及如何估算每步的長度是決定最終尋跡效果好壞的關鍵一環。
1.2.1 步數檢測
檢測步數這個環節中,我們通過觀測加速度計3個方向上的數值信號的變化,結合慣性力、周期性這些思想,對每個軸的方向上進行相應的濾波處理[8]。
1.2.1.1 步數模型
在z軸方向上,我們首先要減去地球重力噪音的干擾(在采取傳感器數據的時候就解決好這一問題)。為了減少其他的隨機噪音的影響,我們采用一個低通濾波器用滑動窗口的方法去處理數據。
(5)
我們可以從公式中看出在t時間點腳步加速度為at。w是一個滑動窗口,w的大小代表進行參與均值計算的點的數量。這樣通過相應計算的處理后,就能搞保留大部分需要的低頻屬性。通過計數一個周期性步態的頂點,我們選取一系列潛在的步態點作為我們的候選點集,滿足下面3個方法的點,我們就當做這確實是一個有意義的點,將其歸為有效步數。
(6)
N是采集到的所有樣本點數,tpeak是滿足α閾值條件下一個有效的步態點的時間點,tpp是一個時間段上,相鄰兩個波峰之間的時間差,tslope是一個指代了前半部分上升后半部分下降的一個時間點。在我們提出的方法中,我們測試了20組不同身高、體重的人,對不同物理特征的人設定了不同的α閾值以滿足多樣化的需求。
通過上述可知,我們只需要將3個條件都滿足的t點做交集,得到的集合就是有效步態的集合,即:
tstep=tpeak∩tpp∩tslope
(7)
1.2.1.2 實驗仿真
我們根據上述模型,測試了相關數據進行了實驗仿真,結果圖2所示。
圖2 步數檢測
觀察圖2的結果可知,通過使用此方法,我們標記出了作為有效腳步的可能性最大的點集。從左上到右下分別是tp、tpp、tpeak以及tslope他們的每個標記點。這一方法可以有效的捕獲行人的每次邁步,減少隨機噪音的干擾,于實際中也取得了不錯的效果。
1.2.1.3 實驗改進
除此之外,我們在實驗中發現由于閾值設置狹隘,導致檢測出的步數較實際步數會有遺漏的情況。對于這種情況,經試驗的測試結果與實際數據的比對,我們采取步數補充的方式,每10步補充一步,使最終的步數檢測接近實際步數。
1.2.2 步長估計
步長估計在PDR中是比較重要的研究內容。一般有靜態和動態兩種方式,靜態步長估計是將步長確定為一個常數,這種做法比較方便但缺乏精度。動態步長估計一般根據z軸上加速度的落差擬合實際步長獲得步長模型。這樣的模型雖然比靜態模型較為準確,但還是有較大誤差。
本文除了z軸上加速度的落差還考慮了身高的影響,將這兩者作為神經網絡的輸入,以步長作為神經網絡的輸出,訓練BP神經網絡步長模型,獲得了比較精確的步長[9]。
1.3.1 靜態步長
靜態步長模型把步長設為常數,本文中靜態步長lk為65 cm。
1.3.2 動態步長
動態步長模型是步長與z軸上加速度的落差相關,利用線性回歸求解系數,有:
1.3.2 神經網絡
我們測了5個不同身高人的加速度數據,每人測了6組。
圖3 BP神經網絡模型
1.3.3 神經網絡步長估算
我們測了5個不同身高人的加速度數據,每人測了6組,分別取步長為30~80 cm,用加速度和身高步長數據訓練BP神經網絡,訓練出的模型測試結果如圖4所示。
圖4 步長估計
圖4中,橫坐標代表的是每次實驗的樣本編號,y軸表示步長長度。我們可以看到,預測值與真實值從微觀單步數來看,存在一定的誤差,但是從宏觀上看一段距離的行走,預測值與真實值相差無幾。經驗算,經訓練后的神經網絡其預測值與真實值相的平均誤差為1.64 cm/步,在可以接受的誤差范圍內。
1.4.1 方向模型
通過上述的方法,我們已經能夠較為準確的推算出行人的步數以及步長,而還剩下一個重要的部分是推算出行人的前行方向,如何準確地推算行人下一步的前行方向在室內尋跡中起到了至關重要的作用。
目前智能手機一般通過陀螺儀和磁力計計算方向。其中磁力計計算方向公式如下所示:
其中:mx,t和my,t為磁力計在x軸和y軸上的取值hdecline為地磁北極和實際正北的地磁偏角。
而陀螺儀直接根據z軸上角速度積分獲得當前方向,如下所示:
就陀螺儀來說,設備采集的3個信息分別是俯仰角θ、滾轉角φ,偏航角ψ,它們分別來自傳感器的x軸、y軸以及z軸。以往陀螺儀最大的缺點在于每個軸上采集的數據會存在一定程度的誤差,隨著時間的推移,計算得出的航向角度必然會造成較為明顯的偏差,因此實時的做一些矯正措施是必要的。然而,在實際實驗過程中,我們發現目前市面上的陀螺儀精度相當不錯,在我們自己提出的方法上進行運算,得到的航向角的效果卓越,并未有明顯的累計誤差。
1.3.2 實驗仿真
我們走了一個回路并收集數據來測試方向模型的正確性,實驗結果如圖5所示。
圖5 回路轉角
觀察圖5,由于進行的是回路轉角的實驗,每次行走一段時間后行人轉過一個直角,陀螺儀與磁力計檢測出來都大致偏轉了90°,且經過三次轉彎之后角度相對于初始位置大致為-270°,符合后續的實驗的精度要求,但更為明顯的是在轉動過程中,磁力計的波動相對于陀螺儀較大,一定程度上可以說陀螺儀相對更可靠。綜上所述,磁力計和陀螺儀在大致趨勢上都符合回路的方向變化特點,但相對而言陀螺儀較為平穩,磁力計波動更大,因此我們偏重于使用陀螺儀的數據進行計算,用磁力計的數據進行兩者的方向融合。
針對在步長估計一節中提到的3個模型,我們進行了相應的實驗用于測試3種步長模型在實際中的效果優劣。使用測試的數據畫出3個軌跡圖,如圖6。
圖6 各個步長模型預測結果
從圖中可以很明顯中看出靜態步長模型的步長預測與實際相差較大,動態步長模型預測的步長偏小故而在總路線上也存在一定的差距,而神經網絡模型擬合的步長與線路誤差最小,最接近真實軌跡。因此,將神經網絡的步長估算代入后續的整個尋跡模型中,效果應當有著不錯的提升。
實驗環境:安卓小米手機(帶有磁力計、陀螺儀、加速度計),Android 7.1.2,自制app。
開發工具:Matlab2017a,AndroidStudio。實驗結果如圖7所示。
圖7 尋跡實驗結果
圖7展示了我們在學校的教學樓進行室內測試的結果。左右兩個實驗的起始點都為417房間,起始方向180是相對于x軸正方形為0°角而言,分別進行了回路以及長距離行走測試,回路測試中繞著環形走廊走了一圈,總距離在100 m以上,經測試與比軌跡對行走距離誤差大概在2~5 m的范圍內??梢悦黠@地看出,航向角偏差不明顯,轉角的方向已經能很好的計算出來,具體角度在行走過程中的變化見圖8。在步態檢測、步長估計上可能存在較為明顯的不足,但是對室內來說這種程度的誤差可以接受。
圖8 兩個尋跡實驗的角度偏轉
長距離行走測試中角度的計算結果與實際有所出入,但是總體角的偏差幅度不大,如圖8所示,陀螺儀的數值其實較為穩定,這在之前的實驗中也已經提及,磁力計的波動較為明顯,在方向融合過程中,磁力計偶爾會產生一些干擾,但是總體來說,方向角度的計算還是準確的,角度的偏差在可接受的范圍內。綜上所述,基于自己的設備以及行走軌跡來說,轉角的誤差在5%之內,行走的路線距離偏差每百米在5 m左右。
本文提出了一種基于IMU設備的室內行人尋跡的計算框架,通過一些基本的傳感器采集到的信息數據,進行以下五步處理,載體的姿態解算、根據滑動窗口以及限定閾值的方法下對行人的步數估算、運用BP神經網絡對行人步長進行估計、結合磁力計與陀螺儀進行方向融合推算行人的航向。通過大量的實驗,可以得到在具有陀螺儀、加速度計、磁力計的手機設備中,行人每百米行人的距離誤差在5米左右,角度的偏差在5%左右,在實際環境中屬于可以接受的范圍。
室內行人尋跡中,角度檢測的問題在如今高精度的硬件設備下已經越來越容易得以處理,本文中單單考慮陀螺儀采集到的方向信息就能取得不錯的效果。但是,在估算行人的步數、步長問題上,處理的方案還不是很完善,依舊會有對行人步數估算遺漏、步長不準確的問題,在今后的實驗中,可以考慮從一些機器學習的方法中入手,根據行人的當前運動狀態去學習行人之后一段時間內步數、步長的變化,這其實可以在設計神經網絡的時候加以改進。