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