薛中浩,崔麗珍
(內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭 014010)
隨著物聯(lián)網(wǎng)技術(shù)發(fā)展的不斷深入,人們對精確的定位服務(wù)的要求也逐漸提高[1-3].行人航位推算(Pedestrian Dead Reckoning,PDR)是對步行者行走的步數(shù)、步長、方向進(jìn)行測量和統(tǒng)計,推算出行人行走軌跡和位置等信息,是一種廣泛應(yīng)用的定位算法.通過使用MEMS慣性器件設(shè)計實(shí)現(xiàn)的行人導(dǎo)航系統(tǒng)具有成本低、功耗低和便于人體安裝與攜帶的特點(diǎn)[4-6].PDR定位系統(tǒng)適用于室內(nèi)外衛(wèi)星信號微弱、有障礙物遮擋的環(huán)境,在消防救援、礦井勘探、單兵作戰(zhàn)等領(lǐng)域,能夠確認(rèn)人員的位置信息,對于保證人員安全,提高救援速度,增強(qiáng)作戰(zhàn)能力等具有重要意義.
本文將STM32單片機(jī)、Wi-Fi,MQTT協(xié)議、SSM框架和PDR算法相結(jié)合,設(shè)計了基于鞋載慣導(dǎo)的PDR定位系統(tǒng),能夠?qū)崟r遠(yuǎn)程監(jiān)測行人位置.系統(tǒng)主要由鞋載慣導(dǎo)模塊、MQTT服務(wù)器、上位機(jī)及定位算法等部分組成,是一個具有感知層、網(wǎng)絡(luò)層和應(yīng)用層的物聯(lián)網(wǎng)框架系統(tǒng)[7,8].慣性測量單元采集到的數(shù)據(jù)通過Wi-Fi上傳至公用網(wǎng)絡(luò)[9];定位系統(tǒng)從公用網(wǎng)絡(luò)獲取數(shù)據(jù);行人導(dǎo)航算法同定位系統(tǒng)數(shù)據(jù)交互,解算數(shù)據(jù)并返回位置信息[10].PDR定位系統(tǒng)結(jié)構(gòu)設(shè)計如圖1所示.
圖1 PDR定位系統(tǒng)結(jié)構(gòu)設(shè)計
鞋載慣導(dǎo)模塊主要由核心板、慣性測量單元(Inertial Measurement Unit,IMU)、Wi-Fi模塊和電源模塊組成.其核心芯片選型為STM32F103,分別通過串口USART1和USART2與IMU和Wi-Fi模塊連接.STM32F103原理圖如圖2所示.圖中,CX2為STM32的電源模塊,JTAG為代碼燒寫口.
圖2 STM32原理圖
IMU選型為BWT901CL,該模塊集成了3軸加速度計、3軸陀螺儀、3軸磁力計和壓力計,使用串口通信,最高采樣頻率為200 Hz.圖3為BWT901CL原理圖,CX1為BWT901CL的電源模塊,RX和TX分別接STM32的PA2和PA3口.
圖3 BWT901CL原理圖
Wi-Fi模塊選型為USR-WiFi-232,通過該模組,串口設(shè)備或MCU控制的設(shè)備可以很方便的接入Wi-Fi無線網(wǎng)絡(luò),模塊內(nèi)部完成協(xié)議轉(zhuǎn)換,可實(shí)現(xiàn)串口與Wi-Fi之間數(shù)據(jù)的雙向透傳.圖4為Wi-Fi模塊原理圖,CX3為Wi-Fi模塊的電源模塊,RX和TX分別接STM32的PA9和PA10口,當(dāng)Wi-Fi未連接時LED燈常亮.
圖4 Wi-Fi模塊原理圖
鞋載慣導(dǎo)模塊采用交流電源和電池2種供電方式,電源電路原理圖如圖5所示.當(dāng)接通電源時,LED燈常亮.
圖5 電源電路原理圖
采樣頻率和上傳頻率設(shè)置為每隔0.1 s上傳1幀數(shù)據(jù),每一幀數(shù)據(jù)有10條數(shù)據(jù),即為100 Hz,每條數(shù)據(jù)之間以下劃線分割;每一條數(shù)據(jù)為IMU測量的6項(xiàng)數(shù)據(jù),每項(xiàng)數(shù)據(jù)之間以豎線分割,滿足后續(xù)實(shí)驗(yàn)的數(shù)據(jù)需求.
上位機(jī)按照模塊化設(shè)計,主要由數(shù)據(jù)庫、后臺和前端三個部分組成.上位機(jī)工作流程如圖6所示.
圖6 上位機(jī)工作流程圖
后臺使用SSM(Spring+SpringMVC+MyBatis)框架構(gòu)建,具體設(shè)計流程如下:
(1)搭建MQTT客戶端,向MQTT服務(wù)器訂閱主題并接收數(shù)據(jù);(2)對接收到的數(shù)據(jù)進(jìn)行處理,分割數(shù)據(jù)幀并寫入數(shù)據(jù)庫;(3)接收前端發(fā)送的請求,調(diào)用算法;(4)將經(jīng)過算法處理得出的數(shù)據(jù)以JSON字符串的形式響應(yīng)至Web服務(wù)器.
前端部分使用JavaScript和HTML5開發(fā),顯示最終定位結(jié)果.使用AngularJS框架中的$http服務(wù)連接至Web服務(wù)器讀取數(shù)據(jù);使用$timeout指令,每隔5 s發(fā)送一次$http服務(wù),更新導(dǎo)航定位數(shù)據(jù).使用一個利用JS實(shí)現(xiàn)的開源可視化庫ECharts繪制折線圖,顯示經(jīng)過PDR算法實(shí)現(xiàn)的行人軌跡.
數(shù)據(jù)庫使用MySQL數(shù)據(jù)庫,包含一張Test表,如表1所示.
表1 Test表設(shè)計
PDR定位算法由零速檢測算法和零速修正算法2部分組成,利用IMU測量的加速度和角速度判斷零速區(qū)間;以零速區(qū)間為標(biāo)記區(qū)間,修正非零速區(qū)間的誤差.行人導(dǎo)航算法結(jié)構(gòu)如圖7所示.
圖7 行人導(dǎo)航算法結(jié)構(gòu)
行人步行期間,每一步共包含5個階段:腳跟觸地、站立、腳跟離地、腳尖離地、邁步.這5個階段周而復(fù)始,構(gòu)成行人的行走過程.行人腳跟觸地時刻到腳尖離地時刻區(qū)間,行人處于站立狀態(tài),IMU的輸出值相對穩(wěn)定,即處于零速狀態(tài).使用IMU測量出行人步行時的加速度和角速度數(shù)據(jù)檢測零速狀態(tài),其檢測的準(zhǔn)確性對零速修正算法極為重要,同時也可以計算出步數(shù).文中共采用3種判定方法聯(lián)合判斷是否處于零速狀態(tài).
(1)加速度模值是否處于設(shè)定閾值
式(1)中:thamin為設(shè)定閾值下限;thamax為設(shè)定閾值上限.
(2)滑動窗口內(nèi)的加速度模值的標(biāo)準(zhǔn)差是否小于設(shè)定的閾值:
(3)角速度模值是否小于設(shè)定閾值
式(3)中:thgmax為設(shè)定的閾值上限.
當(dāng)同時滿足上述3個條件時,即C=C1=C2=C3=1,行人處于零速狀態(tài);否則C=0,處于非零速狀態(tài).
由于慣性傳感器測量值包含隨機(jī)誤差、零點(diǎn)漂移和溫度漂移等誤差,且考慮到實(shí)際情況,當(dāng)綁定鞋載慣導(dǎo)模塊的腳處于停步時,其實(shí)際速度應(yīng)為0,因此需要對速度進(jìn)行修正處理,以消除誤差對最終導(dǎo)航定位結(jié)果的影響.
假設(shè)零速區(qū)間為(t0,ti),通過行人導(dǎo)航算法得出該區(qū)間的速度為(Vt0,Vt1,……,Vti-1,Vti),得出該區(qū)間的平均速度Vave,為零速區(qū)間累計誤差的平均值.
假設(shè)下一個非零速區(qū)間為(ti+1,tj),零速修正前該區(qū)間速度為(Vti+1,Vti+2,……,Vtj-1,Vtj),由于速度的實(shí)際值為0,故需要將零速區(qū)間(t0,ti)的速度全部修正為0;經(jīng)過零速修正后的非零速區(qū)間速度為(Vti+1-Vave,Vti+2-Vave,……,Vtj-1-Vave,Vtj-Vave),消除累計誤差.
為了驗(yàn)證3.2節(jié)提出的零速檢測算法的有效性完成了相關(guān)試驗(yàn).使用Python對算法仿真.將鞋載慣導(dǎo)模塊固定于實(shí)驗(yàn)人員鞋子前端,靜止時IMU的X軸水平向前,Y軸水平向右,Z軸垂直向下.實(shí)驗(yàn)人員首先站立一定的時間,穩(wěn)定IMU;邁步時先邁出未綁定鞋載慣導(dǎo)模塊的一只腳;步行一段時間后向右轉(zhuǎn)彎90°,繼續(xù)步行;在后續(xù)定位過程中設(shè)定初始位置為(0,0).3條件檢測和最終零速檢測效果如圖8所示.
當(dāng)邏輯值為1時,判定為邁步,否則為靜止.由圖8(a),(b),(c)可以看出,3種條件單一的檢測均存在不同程度的誤差,需要對其進(jìn)行修正,提高檢測精度,減小對后續(xù)實(shí)驗(yàn)的影響.分析圖8(d)可以得到,三條件聯(lián)合的檢測可以正確有效的檢測出步行或靜止區(qū)間,區(qū)間長度合理,且檢測步數(shù)與實(shí)際步數(shù)相符,滿足了后續(xù)零速修正算法的基本條件,驗(yàn)證了零速檢測算法的準(zhǔn)確有效性.
圖8 零速檢測效果圖(a)3軸加速度模值檢測;(b)3軸加速度模值標(biāo)準(zhǔn)差檢測;(c)3軸陀螺儀模值檢測;(d)零速檢測效果圖
為了驗(yàn)證文中使用的零速修正算法對速度累積誤差修正的有效性完成了有關(guān)實(shí)驗(yàn).有零速修正速度和無零速修正速度對比如圖9所示.
分析圖9并結(jié)合3.3節(jié)實(shí)際情況得出,無零速修正算法修正的速度隨著時間的推移不斷累積誤差,致使速度計算值與實(shí)際速度不符,影響到最終導(dǎo)航結(jié)果的準(zhǔn)確性,而經(jīng)過上述零速修正后的速度值基本與實(shí)際速度符合.該實(shí)驗(yàn)證明了設(shè)計的零速修正算法對減小長時間步行的累積誤差效果顯著.
圖9 有無零速修正對比圖
登錄界面如圖10所示,正確登入后,連接MQTT服務(wù)器,接收數(shù)據(jù).
圖10 登陸界面
點(diǎn)擊開始按鈕,向后臺發(fā)送請求,數(shù)據(jù)通過行人導(dǎo)航算法,返回至前端,如圖11所示.
圖11 定位界面
基于物聯(lián)網(wǎng)架構(gòu)的鞋載慣導(dǎo)PDR定位系統(tǒng),通過下位機(jī)采集行人步行時IMU數(shù)據(jù)并上傳,上位機(jī)接收數(shù)據(jù)并顯示定位結(jié)果;研究了多條件零速檢測算法和零速修正算法,實(shí)現(xiàn)對行人步態(tài)步數(shù)的檢測和行人導(dǎo)航定位結(jié)果的推算,完成了同上位機(jī)的數(shù)據(jù)交互.經(jīng)過實(shí)驗(yàn)方案測試后,能夠準(zhǔn)確檢測步伐和步數(shù)并得出行人軌跡,實(shí)現(xiàn)相對定位;系統(tǒng)運(yùn)行穩(wěn)定.本系統(tǒng)具有層次分明、結(jié)構(gòu)完整等特點(diǎn),在實(shí)際應(yīng)用中具有較高的價值.