孫 偉,王豐得,王 野,楊一涵
(遼寧工程技術(shù)大學(xué) 測(cè)繪與地理科學(xué)學(xué)院,遼寧 阜新 123000)
隨著移動(dòng)通信技術(shù)的快速發(fā)展,基于位置的服務(wù)在日常生活中應(yīng)用越來(lái)越廣泛[1]。在室外環(huán)境中全球定位系統(tǒng)(global positioning system,GPS)能夠提供全天候、高精度、實(shí)時(shí)的定位服務(wù),但是在室內(nèi)環(huán)境中由于墻體、門窗遮擋GPS無(wú)法提供精準(zhǔn)的定位服務(wù)。然而研究表明,人類超過(guò)70 %的時(shí)間是在室內(nèi)活動(dòng),隨著時(shí)代發(fā)展,室內(nèi)服務(wù)設(shè)施大型化、復(fù)雜化,人們對(duì)于室內(nèi)導(dǎo)航的需求不斷增加。因此,室內(nèi)導(dǎo)航定位技術(shù)已成為許多高新技術(shù)企業(yè)和重點(diǎn)實(shí)驗(yàn)室的研究重點(diǎn)。
文獻(xiàn)[2]在1977年就提出了行人航跡推算(pedestrians dead reckoning,PDR)原理;但由于當(dāng)時(shí)科學(xué)技術(shù)有限,使得慣性測(cè)量單元的成本昂貴,而且體積大、不便于攜帶,因此限制了這項(xiàng)技術(shù)的發(fā)展。近十年來(lái),隨著微機(jī)械電子技術(shù)的快速發(fā)展,慣性測(cè)量單元功能增強(qiáng)、體積減小、成本降低,并且可以集成在一個(gè)微小的芯片中。這使得基于慣性傳感器的行人航跡推算技術(shù)普及成為可能[3]。目前智能手機(jī)大多都內(nèi)置了慣性器件,如加速度傳感器、方向傳感器、地磁傳感器、陀螺儀等[4]。
本文基于Android智能終端,利用智能終端里多種慣性傳感器,以行人航跡推算技術(shù)為定位方法,設(shè)計(jì)室內(nèi)定位方案,并用JAVA語(yǔ)言在智能終端實(shí)現(xiàn)。
航跡推算原理如圖1所示:上一點(diǎn)坐標(biāo)已知,根據(jù)行人行進(jìn)的距離和方向可以推算出下一個(gè)點(diǎn)的坐標(biāo),這個(gè)過(guò)程為航跡推算。
圖中:P0、P1、P2為行人連續(xù)行走的航跡點(diǎn);Nk、Ek(k=0,1,2)為各點(diǎn)的東向坐標(biāo)和北向坐標(biāo);P0-P1、P1-P2對(duì)應(yīng)行走步長(zhǎng);α0(t0)、α1(t1) 分別為相鄰2步行走與北向的夾角(航向角)。
基于PDR的行人位置公式為
(1)
式中:Ek和Nk分別為行人在第k步東北天坐標(biāo)系下的東向和北向坐標(biāo);Sk為該步的步長(zhǎng);αk為航向。式(1)有個(gè)前提為:假設(shè)行人在一步(單步或復(fù)步)內(nèi)的航向是不變的,即該步內(nèi)走直線。
根據(jù)式(1)可知:定位結(jié)果的誤差來(lái)源于初始位置誤差、方向和距離誤差;方向和距離則通過(guò)對(duì)移動(dòng)智能終端的傳感器輸出信號(hào)分析和處理得到;另外在傳感器輸出數(shù)據(jù)中帶有噪聲。因此對(duì)傳感器信號(hào)采集、減少噪聲干擾,提高步數(shù)和步頻檢測(cè)準(zhǔn)確度等方面成為精確定位的關(guān)鍵。
2.1.1 行人行走姿態(tài)分析
據(jù)研究表明,人在行走過(guò)程中具有周期性和規(guī)律性[5]。在行走過(guò)程中,行人的步頻和步長(zhǎng)基本保持不變,具有連續(xù)性和持續(xù)性的特點(diǎn)[6]。通過(guò)分析行人的行走姿態(tài),在行走過(guò)程中,根據(jù)豎直方向重力加速度變化可將一個(gè)單步分解為2個(gè)階段:第一個(gè)階段腳離地開(kāi)始擺動(dòng),人體重心上移,豎直方向重力加速度不斷增大;第二個(gè)階段,腳開(kāi)始落地,人體重心從最高處下移,豎直方向重力加速度隨之減小。對(duì)于同一個(gè)人,在一個(gè)復(fù)步中,左腳和右腳的規(guī)律基本一致,所以在分析中只對(duì)右腳進(jìn)行詳細(xì)分析。基于行人行走步態(tài)的周期性,對(duì)加速度計(jì)輸出信號(hào)的變化進(jìn)行研究分析,找出信號(hào)中與步態(tài)一致的周期即可探測(cè)出行人的步頻。本文步態(tài)檢測(cè)方式使用峰值檢測(cè)法,即通過(guò)分析加速度計(jì)輸出信號(hào),找出其中符合行人行走周期規(guī)律的波峰、波谷,便可確定為行走一步[7-10]。
2.1.2 信號(hào)處理
人體坐標(biāo)系和加速度傳感器的坐標(biāo)系不一致,為提高波形檢測(cè)的可靠度,對(duì)行人行走總加速度進(jìn)行分析??偟募铀俣葹?/p>
(2)
式中:a為三軸總加速度;ax為X軸方向加速度;ay為Y軸方向加速度;az為Z軸方向加速度。
為了提高步態(tài)檢測(cè)精度,需要對(duì)采集到的加速度數(shù)據(jù)進(jìn)行處理,首先通過(guò)高通濾波器剔除重力加速度,然后對(duì)數(shù)據(jù)進(jìn)行平滑處理。從處理后的波形(如圖2所示)可以清晰地看出波峰和波谷。
2.1.3 步態(tài)檢測(cè)
采用峰值過(guò)濾器加時(shí)間窗口過(guò)濾器實(shí)現(xiàn)步態(tài)檢測(cè)(如圖3所示)。
第一個(gè)過(guò)濾器是峰值過(guò)濾器。理想狀態(tài)下,一個(gè)完整的步伐中有一個(gè)波峰和波谷。實(shí)際情況中,一個(gè)步伐中可能會(huì)出現(xiàn)多個(gè)假的波峰和波谷,會(huì)干擾步頻檢測(cè)。因此峰值過(guò)濾器設(shè)置2個(gè)閾值,分別是波峰峰值Δ1以及波谷峰值Δ2,來(lái)判斷是否為一步。根據(jù)大量實(shí)驗(yàn)數(shù)據(jù)設(shè)置Δ1和Δ2分別為1.0和0.5。當(dāng)在2個(gè)邁步起點(diǎn)之間檢測(cè)到大于2個(gè)閾值的波峰和波谷時(shí),即可初步認(rèn)定2個(gè)連續(xù)邁步起點(diǎn)之間為一個(gè)正常步伐。
第二個(gè)過(guò)濾器為時(shí)間窗口過(guò)濾器,正常行人行走頻率為0.5~5 Hz,即行走一步的時(shí)間為0.2~2 s,因此如果2個(gè)連續(xù)的邁步起點(diǎn)大于2 s或者小于0.2 s可認(rèn)定為不是真正的一步。峰值過(guò)濾器是初步檢測(cè)條件,可能會(huì)發(fā)生誤判,在它的基礎(chǔ)上使用時(shí)間窗口過(guò)濾器可以進(jìn)一步提高步頻檢測(cè)準(zhǔn)確率。如果檢測(cè)到2個(gè)連續(xù)邁步起點(diǎn)時(shí)間間隔小于給定最低閾值,就把這段波形認(rèn)定為干擾波形,并把它組合到下一個(gè)波形中。當(dāng)檢測(cè)到波形時(shí)間間隔大于給定最大閾值,即可視為這段時(shí)間行人處于原地,判定該波形不是真正的一步。
航跡推算算法中行進(jìn)距離是由步數(shù)乘以步長(zhǎng)計(jì)算得到,因此步長(zhǎng)檢測(cè)的精度將直接影響最終的定位精度。非線性步長(zhǎng)估算模型計(jì)算量小,且能夠適應(yīng)行人不同運(yùn)動(dòng)狀態(tài),常用Weinberg approach模型[11],即
(3)
式中:stepsize為步長(zhǎng);amax和amin分別為一個(gè)完整步伐中的最大加速度和最小加速度計(jì)值;k為步長(zhǎng)估算參數(shù)。
采用基于慣性傳感器的相對(duì)定位技術(shù),除了需要得到距離,還需要知道行人行走的方向[12-14]。行人行走方向的檢測(cè)精度將直接影響行人航跡推算的定位精度,因?yàn)榻嵌日`差會(huì)隨著行走距離的增加導(dǎo)致定位結(jié)果與實(shí)際位置偏差越來(lái)越大。
在Android系統(tǒng)中,可以調(diào)用具體的API函數(shù)獲取方向傳感器數(shù)據(jù),獲得的數(shù)據(jù)包括航向角(Azimuth)、傾斜角(Pitch)、旋轉(zhuǎn)角(Roll)。這3個(gè)角度是基于手機(jī)坐標(biāo)系實(shí)現(xiàn)的。行人航跡推算主要利用手機(jī)正前方的朝向,即僅利用了航向角數(shù)值。
在行走時(shí)盡量保持移動(dòng)終端Z軸正方向豎直朝上,使用方向傳感器能夠采集到Y(jié)軸方向與磁北方向的夾角。理論上,方向傳感器獲取的方向角度范圍為0°~360°,與地理坐標(biāo)系的關(guān)系如圖4所示。
在航跡推算中,是以一步作為位置更新周期。在一個(gè)周期之內(nèi)方向傳感器采集的數(shù)據(jù)有多個(gè)。理論上一個(gè)步伐中采集的航向角應(yīng)該一致,但是行人在行走過(guò)程中會(huì)不可避免地左右擺動(dòng),因此一個(gè)周期采集的航向角也會(huì)在一定范圍內(nèi)波動(dòng)。如圖5為一個(gè)步伐周期內(nèi)采集的方向角數(shù)據(jù),最大值為111.7°,最小值為108.3°,最大最小值差值為3.4°。
針對(duì)這種波動(dòng)的影響,計(jì)算一個(gè)周期內(nèi)的航行角均值作為行人行走的航向。圖6中,橫坐標(biāo)表示17個(gè)步伐周期獲取的513個(gè)航向角數(shù)據(jù),縱坐標(biāo)表示的是航向角值。實(shí)線是未處理的原始數(shù)據(jù),從圖中可以看出波形抖動(dòng)明顯,虛線表示處理后的數(shù)據(jù),處理過(guò)后波形抖動(dòng)明顯減小。
整個(gè)系統(tǒng)構(gòu)建分為3層(如圖7所示):最底端是數(shù)據(jù)庫(kù)層,用來(lái)存儲(chǔ)程序需要處理的各種數(shù)據(jù)[15-16];業(yè)務(wù)處理層負(fù)責(zé)具體的邏輯處理,峰值檢測(cè)、動(dòng)態(tài)閾值處理、步頻檢測(cè)、步長(zhǎng)檢測(cè)、方向檢測(cè)等算法在這一層實(shí)現(xiàn);視圖層即界面層,直接面向用戶,主要向用戶直觀展現(xiàn)步長(zhǎng)、步數(shù)、行走距離以及行走軌跡信息。這3層結(jié)構(gòu)符合常規(guī)設(shè)計(jì)中的模型-視圖-控制器(model-view-controller,MVC)開(kāi)發(fā)模式,將功能分離能夠有效提升程序的可讀性和可維護(hù)性。
控制層是MVC 3層中的C層,也叫業(yè)務(wù)邏輯層。該層主要負(fù)責(zé)各種算法實(shí)現(xiàn)以及處理視圖層請(qǐng)求的業(yè)務(wù)邏輯。行人航跡推算系統(tǒng)中業(yè)務(wù)邏輯層需要完成慣性數(shù)據(jù)采集與預(yù)處理、步態(tài)檢測(cè)、步長(zhǎng)檢測(cè)、航向檢測(cè)等算法實(shí)現(xiàn)。
設(shè)計(jì)StepDetector.java類完成波峰波谷檢測(cè)、動(dòng)態(tài)調(diào)整閾值,并通過(guò)時(shí)間窗口檢測(cè)法和閾值檢測(cè)法檢測(cè)步數(shù)。
StepService.java類因?yàn)槔^承了Service類,因此成為Android 4大組件之一的服務(wù)。在Android中,服務(wù)可以在后臺(tái)運(yùn)行,不需要前臺(tái)界面;因此當(dāng)屏幕鎖定或者退出該應(yīng)用程序時(shí),該類仍然會(huì)通過(guò)調(diào)用SetpDetector.java完成計(jì)步。
設(shè)計(jì)Steplength.java類計(jì)算步長(zhǎng)。
設(shè)計(jì)StepDate.java類將步數(shù)、步長(zhǎng)封裝為一個(gè)對(duì)象,便于管理和應(yīng)用。
設(shè)計(jì)DbUtils.java類完成對(duì)數(shù)據(jù)庫(kù)的增刪查改操作。
數(shù)據(jù)庫(kù)模塊為MVC模型中的模型層,主要負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)與讀取。系統(tǒng)中需要對(duì)采集到的慣性傳感器數(shù)據(jù)計(jì)算得到的位置信息進(jìn)行存儲(chǔ)。使用數(shù)據(jù)庫(kù)可以實(shí)現(xiàn)快速存儲(chǔ)和讀取數(shù)據(jù)。Android平臺(tái)提供了一種輕量級(jí)的數(shù)據(jù)庫(kù)SQLite,它支持SQL語(yǔ)句查詢,而且占用內(nèi)存小。使用SQLite需要首先創(chuàng)建數(shù)據(jù)庫(kù),然后再進(jìn)一步創(chuàng)建表、索引等,最后寫入。
為了存儲(chǔ)加速度傳感器、方向傳感器數(shù)據(jù)、位置信息,系統(tǒng)中需要建立3張表,分別是TB_acc、TB_dir、TB_point。Tb_acc表存放的是加速度傳感器采集的數(shù)據(jù),包括三軸方向的加速度以及總加速度。TB_dir表存放方向傳感器數(shù)據(jù)。TB_point存放位置信息,如表1~表3所示。
表1 TB_acc表
表2 TB_dir表
表3 TB_point表
視圖層為MVC層中的V層,該層通過(guò)用戶界面直觀地向用戶展示步長(zhǎng)、軌跡等信息。在界面設(shè)計(jì)時(shí),首先設(shè)計(jì)布局文件,通過(guò)添加TextView、Buttton等組件然后調(diào)整布局達(dá)到設(shè)計(jì)的效果。圖8為系統(tǒng)設(shè)計(jì)界面,分別為慣性數(shù)據(jù)獲取界面、行人信息界面及行人軌跡顯示界面。
為了驗(yàn)證系統(tǒng)的定位性能,本文進(jìn)行了室內(nèi)定位實(shí)驗(yàn)。實(shí)驗(yàn)地點(diǎn)選在遼寧工程技術(shù)大學(xué)餐廳一樓。本文中實(shí)驗(yàn)測(cè)試采用小米廠商生產(chǎn)的紅米Note3,內(nèi)置的傳感器為InvenSense生產(chǎn)的MPU-6050,表4為精度指標(biāo)。圖9為行走路線示意圖,測(cè)試路徑為長(zhǎng)74 m、寬51 m的矩形。實(shí)驗(yàn)過(guò)程中,測(cè)試者按照?qǐng)D9中的路線,沿著A—B—C—D—A的順序,按逆時(shí)針?lè)较蛲瓿砷]合路線測(cè)試。圖10展示了預(yù)定行走路線及實(shí)際運(yùn)動(dòng)軌跡對(duì)比曲線,其中黑色虛線為預(yù)定路線,實(shí)線為實(shí)際軌跡。從圖中可以看出系統(tǒng)計(jì)算位置與預(yù)定行走路線具有較高的重合度。測(cè)試結(jié)果,實(shí)際路線長(zhǎng)250 m,系統(tǒng)測(cè)試長(zhǎng)度為246.1 m,誤差占實(shí)際長(zhǎng)度的1.5 %,閉合差為3.78 m。
表4 傳感器精度指標(biāo)
圖11為航向角曲線圖,從圖中可以看出,系統(tǒng)記錄的航向角與實(shí)際行走方向相符。在直線行走時(shí)檢測(cè)的航向角數(shù)據(jù)在±5°范圍內(nèi)波動(dòng)。
圖12為偏移量曲線圖,從圖中可以看出,偏移量隨行走距離總體呈遞增趨勢(shì)。根據(jù)統(tǒng)計(jì)行走250 m,最大的偏移量為6.2 m,平均偏移量為3.3 m。
基于行人航跡推算原理,通過(guò)對(duì)智能終端輸出的加速計(jì)、陀螺儀、電子羅盤數(shù)據(jù)分析,得到行人的步頻、步長(zhǎng)航向、位置信息,并采用JAVA語(yǔ)言在Android終端實(shí)現(xiàn)室內(nèi)定位系統(tǒng)。該系統(tǒng)在室內(nèi)環(huán)境內(nèi)能夠提供較準(zhǔn)確的定位,平均定位誤差約占行走總距離的1.3 %;但是由于慣性傳感器的誤差累計(jì),定位精度會(huì)隨著距離而降低。下一步在此基礎(chǔ)上結(jié)合其他定位方法,在定位過(guò)程中對(duì)行人航跡定位結(jié)果進(jìn)行修正,以減少誤差累計(jì)。
[1] 劉祺,朱秋月,馮莎.室內(nèi)定位技術(shù)的研究綜述[J].計(jì)算機(jī)時(shí)代,2016,11(8):13-15.
[2] 蔡敏敏.基于行人航位推算的室內(nèi)定位技術(shù)綜述[J].微型機(jī)與應(yīng)用,2015,27(13):9-11.
[3] 陳春陽(yáng),郭英,畢京學(xué).手機(jī)陀螺儀與加速度計(jì)聯(lián)合定位初步分析[J].導(dǎo)航定位學(xué)報(bào),2014,2(4):74-77.
[4] 張世哲.基于慣性傳感器和WiFi的室內(nèi)定位系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2012.
[5] 楊鵬,周立紅,陳玲玲,等.基于峰-谷分段積分算法的行走步態(tài)周期識(shí)別[J].計(jì)算機(jī)工程,2011,37(23):168-170.
[6] 周圓.基于慣性傳感器和Wi-Fi信號(hào)的室內(nèi)定位算法研究[D].大連:大連理工大學(xué),2015.
[7] 王克己.室內(nèi)定位系統(tǒng)中的行人航跡推算研究[D].北京:北京郵電大學(xué),2012.
[8] NIU X,WANG Q,LI Y,et al.Using inertial sensors in Smartphones for curriculum experiments of inertial navigation technology[J].Education Sciences,2015,5(1):26-46.
[9] 徐偉.基于Android手機(jī)的室內(nèi)定位系統(tǒng)研究與實(shí)現(xiàn)[D].武漢:華中師范大學(xué),2014.
[10] 羅利.基于Android的WIFI室內(nèi)定位技術(shù)研究[D].成都:西南交通大學(xué),2014.
[11] 陳偉.基于GPS和自包含傳感器的行人室內(nèi)外無(wú)縫定位算法研究[D].合肥:中國(guó)科學(xué)技術(shù)大學(xué),2010.
[12] 顧聰.基于Android平臺(tái)的室內(nèi)LBS系統(tǒng)的研究與實(shí)現(xiàn)[D].湘潭:湘潭大學(xué),2011.
[13] 陳國(guó)良,張言哲,汪云甲,等.WiFi-PDR室內(nèi)組合定位的無(wú)跡卡爾曼濾波算法[J].測(cè)繪學(xué)報(bào),2015,44(12),:1314-1321.
[14] 孫偉,李婉秋.基于誤差修正技術(shù)的井下人員MEMS定位方法[J].傳感器技術(shù)學(xué)報(bào),2014,27(7),:898-904.
[15] 張立斌,余彥培.手機(jī)室內(nèi)定位的應(yīng)用與服務(wù)[J].導(dǎo)航定位學(xué)報(bào),2014,11(4):27-30.
[16] 王立劍.基于Android平臺(tái)的手機(jī)室內(nèi)定位及導(dǎo)航的設(shè)計(jì)與實(shí)現(xiàn)[D].青島:中國(guó)海洋大學(xué),2013.