張 煜,張洪碩,丁 陽
(大連民族大學 計算機科學與工程學院,遼寧 大連 116650)
隨著智慧校園與智能移動設備的普及和發(fā)展,人們對于高校后勤工作的需求日益增加,例如班車實時管理。主要原因之一是在極端天氣下,會造成班車延誤,教師們等待時間過長,班車是否過站及是否正常運行不明確等。
通過對班車實時定位的深入研究,解決包括硬件設計、GPS信號處理、實時定位、班車軌跡精確匹配等關鍵技術,設計了一種由STM32F103單片機、SIM7600CE模塊集成的終端和新型的班車實時定位系統(tǒng)。結合坐標轉換、異常數(shù)據(jù)處理、軌跡壓縮算法、軌跡平滑算法等來實現(xiàn)班車歷史軌跡的繪制,并使用企業(yè)微信平臺來呈現(xiàn)班車實時定位系統(tǒng)的應用效果。本項目的研究一方面解決了教師日常等班車的難題,另一方面推動了智慧校園的建設,具有實際應用價值,已經(jīng)產(chǎn)生良好的社會效益。
如果能夠實時采集班車的運行位置,并通過手機顯示,那么教師們就可以方便的查看班車運行狀態(tài),獲取班車的位置信息,以便決定繼續(xù)等待還是選擇乘坐其他的交通工具。本文設計了一種主要由STM32F103 單片機、SIM7600CE模塊集成的終端和新型的班車實時定位系統(tǒng),通過企業(yè)微信平臺,來查看車輛的實時定位。
系統(tǒng)的架構主要分為三個部分:車載終端、服務器、手機端,系統(tǒng)架構如圖1。
圖1 系統(tǒng)架構
車載終端放置在班車上,上面帶有GPS模塊,用來接收衛(wèi)星信號,獲取車輛的經(jīng)緯度信息,并通過GPRS傳至服務器,如果信號強度不高,會向服務器發(fā)送LBS基站定位,保證車輛定位的準確性。手機端通過企業(yè)微信這一平臺選擇班車定位,定時向服務器發(fā)送請求,服務器返回當前的車輛經(jīng)緯度,并實時顯示班車的地理位置、實時速度等。
車載終端主要是由STM32F103 單片機、GSM模塊、GPS模塊、SIM7600CE模塊、電源模塊等組成。STM32F103 單片機是由ST廠商推出的STM32系列單片機,相比于51單片機,性能高、成本低,在功耗和集成度方面也有所提高,基本上接近于計算機的CPU,適用于本文設備使用。電源模塊采用5V的USB接口即可。其中GSM模塊是將GSM射頻芯片、基帶處理芯片、存儲器、功放器件等集成在一塊線路板上,具有獨立的操作系統(tǒng)、GSM射頻處理、基帶處理并提供標準接口的功能模塊,通過GSM模塊連接4G信號發(fā)送數(shù)據(jù)包。SIM7600CE模塊集成了大大小小的端口,常用的端口有COM17、COM5、COM14,它是一款新型無線模塊,并且功耗很低。SIM7600CE與單片機是通過COM17串口通信的,COM5串口主要用來與 PC 通信,實現(xiàn)AT指令控制芯片實現(xiàn)功能,GPS 模塊采集的數(shù)據(jù)也可以通過COM14串口直接發(fā)送到上位機。車載終端的工作原理是:GPS 模塊采集車輛的經(jīng)緯度信息,通過 COM14串口傳送給單片機,單片機通過COM17串口發(fā)送給SIM7600CE模塊,SIM7600CE模塊通過GSM模塊采用 GPRS 方式發(fā)送到遠端的服務器。
2.2.1 GPS定位+LBS基站定位
終端連接上網(wǎng)后,分兩種情況,通過心跳包來判斷,如果信號強的話采用GPS定位, GPS模塊每隔固定的周期就會返回以字符‘$’開頭的一定格式的數(shù)據(jù),即:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh。
(1)
式中: GPRMC 代表推薦的最小定位信息;<1>代表時間,東八區(qū)需要加8小時的時差;<2>代表定位狀態(tài),如果為 A,則表示定位有效,數(shù)據(jù)可以使用,如果為 V,表示定位無效,數(shù)據(jù)舍棄;<3>代表緯度;<4>代表緯度半球;<5>代表經(jīng)度;<6>代表經(jīng)度半球;<7>代表地面速率。其中,經(jīng)緯度為度度分分.分分分分(ddmm.mmmm);格式<8>代表地面航向;<9>代表日期; <10>代表磁偏角;<11>代表磁偏角方向; <12>代表校驗和。
當終端丟失信號時,采用LBS定位,基于基站位置的定位[1]。一種通過移動運營商的無線電通訊網(wǎng)絡獲取移動終端用戶最近的基站位置的定位技術,三點法定位原理是進行基站定位的最常用技術,即當信號丟失時,通過計算三個基站的信號差異,就可以判斷出終端所在的位置。三點代表三個基站,選擇基站時隨機選擇可涵蓋終端的定位基站,它們之間并無密切聯(lián)系,相對獨立。只要終端處于基站的有效范圍之內,即可以隨時進行位置定位,而不受天氣、高樓、位置等等的影響,符合業(yè)務需求,所以本文主要采用了三點法定位原理定位移動基站與監(jiān)測點的位置。步驟如下:
(1)檢測GPS信號,檢測心跳包發(fā)射間隔;
(2)GPS信號弱或者丟失,采用基站定位;
(3)SIM7600CE模塊采用三點法原理獲取終端定位信息。
(4)終端獲取定位信息,發(fā)送LBS數(shù)據(jù)包,返回LBS的相應格式的數(shù)據(jù),即:
$CLBS:
(2)
式中:
2.2.2 坐標轉換
當定位終端發(fā)送數(shù)據(jù)包后,系統(tǒng)端接收到GCJ-02數(shù)據(jù),在地圖顯示時需要WGS-84格式的坐標軸信息,不同的格式坐標系之間要再進一步的轉換,以滿足地圖實時顯示的需求,這里采用的是GCJ-02坐標系轉WGS-84坐標系[2]。longcj代表gcj02坐標系下經(jīng)度,利用坐標系轉化原理Longcj-105.0的經(jīng)度作為lon,經(jīng)度偏移量
。(3)
同理,利用坐標系轉化原理Latgcj-35.0的緯度作為lat,緯度偏移量
(4)
本文地球的長半軸(即赤道的半徑)a為6 378 245,短半軸(極半徑)b為6 356 775,利用上述公式(5)用來確定扁率e,e代表地球的扁平程度,進一步為轉換做準備。扁率公式
(5)
進一步通過公式(5),求得相對于WGS-84轉移后的坐標偏移
(6)
最后利用公式(3)、公式(4)和公式(6)得到WGS-84坐標下的經(jīng)度
(7)
同理,WGS-84坐標下緯度latwgs如下表示,
(8)
2.2.3 異常數(shù)據(jù)處理
在處理數(shù)據(jù)中,由于多路徑效應、復雜環(huán)境以及 GPS 芯片質量參差不齊的影響,接收到的 GPS 數(shù)據(jù)都會含有噪聲[3],只有處理過的 GPS 數(shù)據(jù)才能向用戶展示。這里采用了兩種算法進行比對優(yōu)化。第一種基于幾何距離的算法,多應用于LBS定位。如果兩點的坐標為(A1,B1)、(A2,B2),首先A0代表兩點間坐標的橫坐標的中點,即
(9)
同理,
(10)
根據(jù)公式(9)~(10),f為兩點間的弧長,其表達式
(11)
根據(jù)球面空間原理可以計算出目標兩點的最小球面距離
d=2Rsin-1f。
(12)
式中:R為地球半徑。假設數(shù)據(jù)接收間隔時間為t,物體移動速度為v,則時間間隔內目標移動的距離為D=vt。
最后直接將d和D進行比較:這兩個值應該是在相同趨勢下震蕩,當趨勢偏離較大時就可認為這是一個噪點數(shù)據(jù)。
第二種基于速度約束的漂移點判定[4],計算過程如下:
(2)對速度序列計算出整體的均值μ,以及方差σ;
(3)對每個點的速度進行判斷,若(vi-μ)2>3σ,并且vi>μ,則該點是一個噪點。
檢測到噪點之后反復實驗,應用過插值處理,發(fā)現(xiàn)效果并不理想,所以決定直接把噪點刪除。
服務端與車載終端利用GPRS通過websocket建立連接,實時接收經(jīng)緯度信息,并進行解析、坐標轉換、服務器存儲,并且服務端響應請求,返回班車經(jīng)緯度信息,最后進行完數(shù)據(jù)處理后,存儲車輛、班車路線等基本信息。
當數(shù)據(jù)取出來,進行完噪點的去除,下一步就是進行數(shù)據(jù)的壓縮。一般軌跡數(shù)據(jù)會包含很多的密集的集中區(qū)域,稱其為停留點。停留點包括兩種:因數(shù)據(jù)采集錯誤而導致的坐標完全一致的點;因數(shù)據(jù)源原地徘徊而產(chǎn)生的密集點。這里軌跡壓縮參考了道格拉斯-普克算法,具體就是將曲線近似表示為一系列點,并減少點的數(shù)量的一種算法[5]。該算法的原始類型分別由烏爾斯·拉默于 1972 年以及大衛(wèi)·道格拉斯和托馬斯·普克于 1973 年提出,并在之后的數(shù)十年中由其他學者予以完善。道格拉斯-普克算法的計算過程如圖2。
圖2 道格拉斯-普克算法計算過程
(1)其中曲線 0 是原始數(shù)據(jù),設置閾值距離為d,開始循環(huán);
(2)循環(huán)查找距離起始點最遠的點c,其距離為b,判斷若b (3)分別對前后兩段執(zhí)行迭代步驟2; (4)得到最終結果。 另一方面普通的聚類方法沒有考慮軌跡是時間序列的特征,因此聚類效果不是很好,這里應用了一種基于時間序列的軌跡聚類算法。算法的執(zhí)行過程如下,流程圖如圖3。 圖3 聚類算法流程圖 (1)定義密度閾值pnum,矩形半邊長d,遍歷軌跡點ai; (2)取出軌跡序列中的點ai,檢索其前后pnum個點內在以ai為中心,以2d為邊長的矩形A中的數(shù)量innum; (3)如果innum (4)如果innum>=pnum,將在范圍內的點索引推入聚類數(shù)組classi[],再檢索ai前2pnum-前pnum和后pnum- 后2pnum點在A中的數(shù)量,并令pnum= 2pnum,并將在A中的點索引推入classi[],再對其分別執(zhí)行步驟 3和步驟4; (5)檢查i次循環(huán)的聚類classi[0] 和 i-1 次數(shù)組classi-1[classi-1length-1],如果classi[0] (6)如果還有點則執(zhí)行步驟(1)-(5),否則結束循環(huán)。 該算法具有以下優(yōu)勢: (1) 采用矩形作為查詢范圍,從而避免了大量的經(jīng)緯度距離計算; (2) 利用軌跡是時間序列的特性,以當前點為中心查詢前后一定范圍內的點,減少循環(huán)次數(shù); (3) 將相鄰的聚類進行合并可以提取更符合實際的停留點,檢測出停留點之后這里直接將停留點刪除。 地圖展示歷史線路時,實踐證明拐點位置過渡特別生硬,沒有平滑過渡,為了達到更好的應用效果,需要進一步優(yōu)化。 3.2.1 均值濾波、中值濾波 由于終端定位時,信號波動大,發(fā)送GPS和LBS兩種定位數(shù)據(jù),會產(chǎn)生步幅比較大的定位點,在軌跡顯示時認定為干擾因素是噪點, 本文先進行了均值濾波實驗[6]。均值濾波方法是,對待處理的當前點位,選擇一個模板,該模板為其鄰近的若干個點位組成,用模板的均值來替代原點位的坐標的方法,計算公式為 (13) 式中:n代表樣本數(shù)量,f(x,y)代表樣本中每一點,x是橫坐標,y是縱坐標。 均值濾波算法簡單,計算速度快,但是在實驗中發(fā)現(xiàn),對異常值較為敏感,如出現(xiàn)偏差較大的點使用均值濾波會對它相鄰的一些數(shù)據(jù)產(chǎn)生影響,即均值濾波對噪聲抑制效果不好。而后又進行了中值濾波實驗,中值濾波方法[7]是對待處理的當前點位,選擇一個模板,該模板為其鄰近的若干個點位組成,與均值濾波不同的是,對模板的點位由小到大進行排序,再用模板的中值來替代原點位的坐標的方法。中值濾波抑制效果很好,軌跡走勢基本保持,對噪聲剔除效果明顯。優(yōu)化前的和優(yōu)化后線路對比如圖4。 a)噪聲優(yōu)化前效果圖 b)噪聲優(yōu)化后效果圖 在進行數(shù)據(jù)繪制時,實踐發(fā)現(xiàn)有的點在地圖上但不在軌跡上,也不在道路上,結果顯然不夠理想,為了實現(xiàn)坐標的吸附[8],參考了大量的匹配算法,對比實驗結果,最終采用了坐標點匹配地圖的方法[9],決定采用從周圍存在的路中找到該點對于每個路線段的垂線在該路網(wǎng)線段的垂足,并計算垂足到該點的距離。找出最近的距離的垂足作為該點綁路的點,垂足坐標如 (14) 式中:(x1,y1),(x2,y2)是路網(wǎng)上的點,(xi,yi)是要判斷的點,y坐標和x坐標對稱,篩選選數(shù)據(jù)庫小數(shù)點后面兩位不一樣就拋棄,應用匹配算法效果對比圖如圖5。 a)匹配算法應用前效果 b)匹配算法應用后效果圖 系統(tǒng)主要分為了用戶端(手機)和管理后臺。用戶端界面如圖6。用戶登錄企業(yè)微信后可以選擇班車,在地圖定位界面會繪制出該路線車輛的運行軌跡[10],及車輛當前的位置與時速,并定時進行更新,用戶可以很方便地查看該線路班車信息。 圖6 手機客戶端 以現(xiàn)有班車為研究對象,針對班車的連續(xù)精確定位進行了深入研究。基于班車連續(xù)高精度定位的目標,提出了新型班車實時定位方案,并進行了多線程并發(fā)測試。測試結果表明:新的定位方案能大幅降低定位誤差,可以在班車運行時間內輸出可靠的定位信息,能滿足連續(xù)高精度的定位需求。這可以極大的解決學校教師人員乘坐班車的問題,方便及時查詢車輛的實時位置,減少不必要的等待,滿足了教師們的實際需求。3.2 軌跡的平滑算法
3.3 坐標吸附到主干道
3.4 客戶端
4 結 語