基于安卓手機的移動物體位置與運動參數遠程采集方法
【專利摘要】本發明涉及一種基于安卓手機的移動物體位置與運動參數遠程采集方法,手機Android操作系統通過手機內方向傳感器、加速度傳感器、陀螺儀和GPS采集獲取物體在運動過程中的航向角、空間三軸加速度值、空間三軸角速度值和經緯度位置信息,對數據進行中值濾波算法誤差矯正處理后,通過3G/4G網絡將參數實時傳輸到服務器端,服務器端保存指定時刻的經緯度位置信息,GPS行駛距離每超過200米采集一次位置信息,服務器端同時對多個移動物體運動數據與位置信息進行監控,服務器端監控界面連接后臺數據庫保存或調取某一時刻位置數據在地圖上進行區域性定位。僅一部安卓智能手機即可實現,不需要專用的儀器與無線通信模塊,運行維護費用較低。
【專利說明】
基于安卓手機的移動物體位置與運動參數遠程采集方法
技術領域
[0001]本發明涉及一種遠程監測領域,特別涉及一種基于安卓手機的移動物體位置與運動參數遠程采集方法。
【背景技術】
[0002]如何實時異地監控汽車,船舶等移動物體的經瑋度位置信息,以及運動參數,是一個值得研究的問題。在安全監控,防盜設計等領域有重要的應用價值。
[0003]目前,對移動物體的位置與運動參數的遠程監控一般采用專用的傳感器、儀器儀表與無線傳輸設備,普遍存在系統復雜,運行維護費用較高的問題。
【發明內容】
[0004]本發明是針對對移動物體的位置與運動參數的遠程監控存在的問題,提出了一種基于安卓手機的移動物體位置與運動參數遠程采集方法,充分利用安卓智能手機內部的MEMS傳感器(MEMS加速度計與陀螺儀)和GPS芯片實現對移動物體位置與運動參數的采集,并借助手機移動通信網絡(3G/4G)將上述信息實時發送到特定的遠程服務器上。
[0005]本發明的技術方案為:一種基于安卓手機的移動物體位置與運動參數遠程采集方法,手機Android操作系統通過手機內方向傳感器、加速度傳感器、陀螺儀和GPS采集獲取物體在運動過程中的航向角、空間三軸加速度值、空間三軸角速度值和經瑋度、海拔位置信息,對傳感器采集數據進行中值濾波算法誤差矯正處理后,通過手機移動通信3G/4G網絡將參數實時傳輸到服務器端,服務器端保存指定時刻的經瑋度位置信息,GPS檢測行駛距離每超過200米采集一次位置信息,服務器端同時對多個移動物體運動數據與位置信息進行監控,服務器端監控界面嵌入地圖模塊,同時連接后臺數據庫保存或調取某一時刻位置數據在地圖上進行區域性定位。
[0006]所述方向傳感器數據采集包括如下步驟進行:首先調用sensorManager獲得傳感器管理器,其次為方向傳感器Sens0r.TYPE_ORIENTAT1N注冊監聽器,接著通過SensorEventListener接口監聽傳感器事件,從而獲取傳感器的值,僅提取方向傳感器沿Yaw(Z)軸轉過的角度值作為航向角,同時設置傳感器數據頻率為5Hz。
[0007]所述加速度傳感器和陀螺儀數據采集步驟與方向傳感器采集相同,僅注冊監聽器改為TYPE_ ACCELEROMETER和TYPE_ GYROSCOPE。
[0008]所述3G/4G網絡傳輸采用TCP/IP協議作為通信協議,在通信兩端各建立一個套接字,被用于描述IP地址和端口,一旦Socket被建立,通信兩端之間便形成網絡虛擬鏈路進行通信;
在服務端,需先對本地的通信端口進行初始化并開始監聽等待客戶端的連接請求;客戶端同樣需要先初始化本地的通信端口然后連接服務端的端口,當服務端同意客戶端發出的連接請求后服務端與客戶端就建立了一個連接,建立連接后服務端與客戶端之間就能進行數據傳輸。
[0009]本發明的有益效果在于:本發明基于安卓手機的移動物體位置與運動參數遠程采集方法,只需要一部安卓智能手機即可實現上述功能,不需要專用的儀器與無線通信模塊,運行維護費用較低。隨著智能手機的日益推廣,本發明提出的測試方法無疑具有較好的適用性。
【附圖說明】
[0010]圖1為本發明基于安卓手機的移動物體位置與運動參數遠程采集系統原理示意圖;
圖2為本發明基于TCP的Socket通信基本流程圖;
圖3為本發明系統采集端界面圖;
圖4為本發明系統監控端界面圖。
【具體實施方式】
[0011]1、系統架構
移動物體運動參數采集系統是一個實時性采集多項運動參數的系統,該系統以當前發展最為迅速且功能強大的Android操作系統為參數采集開發平臺。通過方向傳感器、加速度傳感器、陀螺儀和GPS來獲取物體在運動過程中的航向角、空間三軸加速度值、空間三軸角速度值和經瑋度、海拔等位置信息。并通過手機移動通信3G/4G網絡將上述參數實時傳輸到服務器端,并可保存指定時刻的經瑋度位置信息。由于智能手機中的傳感器采集數據會有一定的誤差,所以引入中值濾波算法進行誤差矯正處理。矯正后,航向角精度為0.1°,加速度值和角速度值精度為0.01XPS行駛距離每超過200米(通常GPS誤差相關性大于200米)采集一次位置信息。
[0012]服務器監控端界面主要采用Java語言編程,通過多線程(Thread)的編程思想可實現同時對多個移動物體運動數據與位置信息的監控。除了實時顯示移動端獲取數據外,監控界面還嵌入地圖模塊,可實時進行搜索,同時連接后臺數據庫保存或調取某一時刻位置數據在地圖上進行區域性定位,系統原理示意圖如下圖1所示。
[0013]服務器端監控界面地圖調取,位置信息的保存、調取與定位是本系統中的一個關鍵問題。鑒于對系統實際應用中的考慮,做了以下要求與技術處理:
1)考慮到操作系統的穩定性及API的擴展,要求Android系統采用4.0及以上版本,這樣可以盡量保障系統運彳丁的穩定性以及功能的完整實現;
2)考慮到數據傳輸時的當前環境與傳輸距離,系統采用基于TCP/IP通信協議的手機移動通信3G/4G網絡技術傳輸,這樣可以盡量保障其實時性,并不受距離的影響;
3)考慮到傳感器數據獲取更新較快,系統服務器端僅保存由GPS獲取的經瑋度值,這樣可以保障位置信息的有效保存,防止數據庫崩潰。
[0014 ] 2、移動物體運動參數與位置信息獲取方法
移動物體的速度、加速度、角速度、方向、位置信息等運動參數需要依靠相應的傳感器和測試模塊來獲取。Android系統對傳感器提供了強大的支持管理服務,移動物體硬件配置所需傳感器后便可獲取設備的外界條件,包括設備的運行狀態、當前位置方向、外界的磁場、溫度和壓力等。Android系統提供驅動程序去管理這些傳感器硬件,當傳感器硬件感知到外部環境發生改變時,Android系統會通過傳感器獲取外部環境的數據,并將數據傳給監聽器。
[0015]在Android系統中開發傳感器應用的步驟如下:
(I)調用 Context 的 getSystemService(Context.SENSOR_SERVICE )方法獲取SensorManager對象,SensorManager對象代表系統的傳感器管理服務。
[0016](2)調用SensorManager的getDefaultSensor(int type)方法來獲取指定類型的傳感器。
[0017](3)通常選擇在 Ac t i V i t y 的 onRe sume ()方法中調用 Sen sorManager 的registerListener()為指定傳感器注冊監聽即可。程序通過實現監聽器即可獲取傳感器傳回來的數據。
[0018]系統采用GPS功能對汽車運動的位置信息進行獲取,Android系統為GPS功能也提供了強大的支持管理服務,以下對相關傳感器采值與GPS定位作簡要說明。
[0019]2.1移動物體運動方向獲取方法
方向傳感器又稱“姿態傳感器”,Android智能手機內部有配備。該傳感器用于檢測移動物體的方位變化。主要有三個參數,分別是移動物體沿Yaw值、Pitch軸和Roll軸轉過的角度,或可簡化為沿X、Y和Z軸轉過的角度。Yaw(Z)軸的值表示方位,其方向垂直于地面而固定不變,讀數就是一個電子指南針,當讀數為零的時候移動物體首部指向正北,該角度的取值范圍是0° —360° Witch(X)軸的值表示傾斜度,方向會隨著移動物體姿態的變化而發生變化,且始終與Yaw( Z)軸垂直。Ro11 (Y)軸的值則表示移動物體沿著Ro 11 (Y)軸的滾動角度,其方向是與移動物體綁定的,始終是沿著屏幕向上。本系統僅提取方向傳感器沿Yaw(Z)軸轉過的角度值作為航向角。
方向傳感器數據采集的方法可按照以下步驟進行:首先調用sensorManager獲得傳感器管理器,其次為方向傳感器SensOr.TYPE_0RIENTAT10N注冊監聽器,接著通過SensorEventListener接口監聽傳感器事件,從而獲取傳感器的值,同時設置傳感器數據頻率為5Hz。最后對不需要的傳感器解除掉,特別是當activity處于失去焦點的狀態時,否則會使移動物體處于高耗電狀態。
[0020]由于手機在測試移動物體的過程中,受到外界因素的干擾,容易出現偶然干擾信號,對結果產生一定的影響。因此,對于手機中方向傳感器獲取數據所產生的誤差使用中值濾波法進行矯正處理。
[0021]2.2移動物體運動加速度獲取方法
加速度傳感器又稱“重力感應器”,主要采集移動物體的運動狀況,其獲取的三個讀數分別表示空間坐標中X、Y和Z方向上的加速度減去重力加速度在相應軸上的分量。Z軸方向垂直于移動設備向上,Y方向沿著屏幕方向向上,X方向沿著屏幕方向向左,其Y軸與Z軸的位置與方向傳感器相反,X軸位置相同。本系統中需提取加速度傳感器Χ、Υ和Z三個方向上讀數。
[0022]加速度傳感器數據采集的方法與方向傳感器基本相同,API中定義ΤΥΡΕ_ACCELEROMETER 為 sensor 的加速度傳感器常量,需改動 sensorManager.reg is terListener的第二個參數值,即傳感器類型,第三個參數值即傳感器數據獲取頻率仍為5Hz。
[0023]對于加速度傳感器獲取數據所產生的誤差同樣使用中值濾波法進行矯正處理。
[0024]2.3移動物體運動角速度獲取方法
陀螺儀的讀數主要反映了移動物體轉動時的角速度變化率。陀螺儀的坐標系與加速度傳感器的相同。逆時針方向旋轉用正值表示,也就是說,從x、Y、z軸的正向位置觀看處于原始方位的設備,如果設備逆時針旋轉,將會收到正值。這是標準的數學意義上的正向旋轉定義,而與方向傳感器定義的轉動不同。陀螺儀數據采集的程序設計與方向傳感器,加速度傳感器的基本相同,API中定義TYPE_ GYROS⑶PE為sensor的加速度傳感器常量,需改動sensorManager.registerListener的第二個參數值,即傳感器類型,第三個參數值即傳感器數據獲取頻率仍為5Hz。
[0025]陀螺儀獲取數據的誤差矯正處理與方向傳感器和加速度傳感器的相同。
[0026]2.4移動物體海拔與經瑋度位置信息獲取方法
對于移動物體如手機用戶來說,手機就是GPS定位系統的接收機,也就是說GPS定位需要手機硬件支持GPS功能。對于硬件滿足GPS功能的Android移動設備來說,Android系統為GPS功能的開發提供了較為完整并且簡便的應用程序,其為GPS功能支持提供了三個核心AP1: Locat1nManager,Locat1nProvider和Locat 1n ο Locat1nManager類用于產生GPS定位相關的服務、對象,通過調用Context的getSystemService()方法來獲取。Locat1nProvider (定位提供者)對象就是定位組件的抽象表示,通過Locat1nProvider可以獲取該定位組件的相關信息。Locat1n是一個代表位置信息的抽象類。GPS通過三個核心API獲取位置信息的步驟為:首先獲取系統的Locat1nManager對象,其次使用Locat1nManager,通過指定Locat1nProvider來獲取定位信息,定位信息由Locat1n對象來表示。最后通過指定Locat 1nProvider獲取經度、瑋度、海拔等定位信息。
[0027]3、手機終端與監控服務器的數據通信方法
移動物體的運動參數與位置信息需通過無線網絡才能保障實時傳輸,所以系統采用手機移動通信3G/4G網絡技術。3G/4G網絡是在2G網絡的基礎上發展的新一代支持高速數據傳輸的蜂窩移動通訊技術,并提高了語音通話安全性。
[0028]系統采用TCP/IP協議作為3G/4G網絡傳輸的通信協議。TCP/IP通信協議是一種可靠的網絡協議,它在通信兩端各建立一個Socket,Socket又稱為“套接字”,被用于描述IP地址和端口,是支持TCP/IP協議的網絡通信基本操作單元。一旦Socket被建立,通信兩端之間便形成網絡虛擬鏈路。建立了虛擬的網絡鏈路,兩端的程序就可以通過虛擬鏈路進行通信。基于TCP的Socket通信流程如圖2所示。
[0029]在服務端,程序需先對本地的通信端口進行初始化并開始監聽等待客戶端的連接請求。客戶端同樣需要先初始化本地的通信端口然后連接服務端的端口,當服務端同意客戶端發出的連接請求后服務端與客戶端就建立了一個連接,建立連接后服務端與客戶端之間就能進行數據傳輸。本系統采用的是Android與Java服務端通信,基于TCP的Socket通信客戶端(Android端)的實現流程如下:
1)創建套接字(Socket)1JP地址和PORT號為非指定,由用戶向輸入框輸入;
2)向服務端發送連接請求(Connect);
3)與服務端進行通信(Send/Recv);
4)關閉套接字。
[0030]Java對基于TCP協議的網絡通信提供了良好的封裝,在Java服務端的程序設計中主要通過ServerSocket類對象建立起一個服務端程序,并指定一個監聽的通信端口。創建一個用戶列表用于存放處理客戶端連接的Socket對象,然后再創建一個線程池用于存放處理客戶端通信的線程,每與一個客戶端程序創建連接,程序就會創建一個線程專門負責服務端與客戶端的數據傳輸。基于TCP的Socket通信服務端(Java端)的實現流程如下:
1)指定通信端口,創建線程池進入監聽模式準備接受來自客戶端的請求(Listen);
2)等待客戶端請求,客戶端發來請求后,服務端接受該請求并返回一個新的對應于該連接的套接字(Accept);
3)利用返回的套接字與客戶端實現通信(Send/Recv);
4)返回等待另一個客戶端的請求;
5)關閉套接字。
[0031]4、遠程監控界面設計
系統服務器監控端主要包含兩個部分:數據監控與地圖搜索定位。數據監控部分用來實時顯示Android智能手機傳來的移動物體運動參數與位置信息,開發語言為Java語言。地圖搜索定位部分用來實時搜索,并對某一時刻位置數據進行區域性定位,主要利用JavaScript腳本語言調用百度地圖,并通過Java界面開發組件SWT的Browser控件動態顯示地圖。
[0032]監控界面的開發主要運用了 Java基礎庫中的Swing組件,Swing組件是由java最初的GUI組件AWT擴展而來的,提供了更多豐富的組件,并引入了新的概念和性能,使得基于Swing開發的⑶I應用程序更為靈活、方便、效率高。Swing是由javax.swing包提供的,主要包括兩種類型的組件:頂層容器和輕量級組件。它們都以“J”開頭。其中,頂層容器主要包含JFrame、JApplet、JDialog、JWindow等;輕量級組件主要是繼承自AWT的Container類的JComponent類及其子類,主要包括JTextArea、JTextFielcUJButton、JMenu、JPanel、JScrollbar等。使用Swing編寫⑶I程序時,利用JFrame類創建窗體,JTextArea控件用來顯示接收到的數據。以下對監控端典型模塊設計作簡要說明。
[0033]4.1百度地圖調用方法
百度地圖API是百度為應用程序開發者提供的一個接口函數,開發者只需要在百度官網上申請一個開發者密鑰,然后就可以引用百度地圖的API,為自己的網站添加基于地圖服務的功能實現二次開發。百度地圖API有WEB、Android和1S三個版本,WEB版本是由JavaScript語言編寫的應用程序接口。調用的百度地圖API需要嵌入在SWT的Browser組件中才能進行動態顯示,SWT組件是Java的另一種⑶I組件,常用于做資源管理器和瀏覽器之類。然后通過AWT中Canvas類創建一個shell窗口,將Browser嵌入到shell窗口中,則可在Swing開發的監控界面上同時顯示地圖。
[0034]4.2地圖定位方法
地圖定位功能采用AJAX+PHP+Apache+MySQL系統架構來實現。AJAX即“AsynchronousJavascript And XML”(異步JavaScript和XML),是現有DOM、JavaScript和XML等技術的集合。可有效改善以“請求-等待-請求”為交互方式的傳統B/S網絡結構響應速度慢,數據傳輸量低的缺陷。AJAX采用異步通信原理:用戶將操作請求提交到Ajax引擎,由Ajax引擎帶向服務器請求數據,在請求數據的同時可對服務器的返回數據進行解析,實現頁面的局部刷新。整個過程是異步進行,在用戶發出請求后可執行其他操作。
[0035]PHP( α Hypertext Preprocessor”,超文本預處理器)是一種被廣泛應用的開放源代碼的多用途腳本語言,可嵌入到HTML中,支持很大范圍的數據庫,用于連接后臺編寫需數據庫支持的網頁。
[0036]MySQL是目前最流行的一種關系型數據庫管理系統,關聯數據庫將數據保存在不同的表中,增加了速度并提高了靈活性。MySQL所使用的SQL語言是用于訪問數據庫的最常用標準化語言,且開放源碼,便于做相關開發。
[0037]統將移動端發送的位置信息數據保存到MySQL數據庫中,地圖定位時,點擊“調取數據”控件,服務器上的Apache獲得請求,根據請求,PHP調取后臺數據。發送“定位”信息給網頁后,Apache將數據返回,Ajax局部刷新地圖頁面,對調取的數據在地圖上做區域性標注。
[0038]4.3系統運行測試
以汽車運動參數采集為例,將Android智能手機水平固定于汽車內,測試并采集其運行時的運動參數及位置信息。手機端打開3G移動數據網絡,監控端連接ChinaNet網絡,服務器的IP地址為:101.225.224.191,端口號:80。監控端顯示的為手機當前分配的IP地址和端口號。測試后系統采集端與監控端界面分別如圖3、圖4所示。由于加速度和陀螺儀的數值更新速度較快,所以截取兩部分界面時無法達到完全同步,數值請參考航向值與位置信息。
[0039]測試結果表明:本系統具有采集精度較高,數據上傳延遲低,操作簡便等優點,可有效實現對移動物體運動參數與位置信息的采集與遠程監控。
【主權項】
1.一種基于安卓手機的移動物體位置與運動參數遠程采集方法,其特征在于,手機Android操作系統通過手機內方向傳感器、加速度傳感器、陀螺儀和GPS采集獲取物體在運動過程中的航向角、空間三軸加速度值、空間三軸角速度值和經瑋度、海拔位置信息,對傳感器采集數據進行中值濾波算法誤差矯正處理后,通過手機移動通信3G/4G網絡將參數實時傳輸到服務器端,服務器端指定時刻的經瑋度位置信息,GPS檢測行駛距離每超過200米采集一次位置信息,服務器端同時對多個移動物體運動數據與位置信息進行監控,服務器端監控界面嵌入地圖模塊,同時連接后臺數據庫保存或調取某一時刻位置數據在地圖上進行區域性定位。2.根據權利要求1所述基于安卓手機的移動物體位置與運動參數遠程采集方法,其特征在于,所述方向傳感器數據采集包括如下步驟進行:首先調用sensorManager獲得傳感器管理器,其次為方向傳感器Sensor.TYPE_0RIENTAT10N注冊監聽器,接著通過SensorEventListener接口監聽傳感器事件,從而獲取傳感器的值,僅提取方向傳感器沿Yaw(Z)軸轉過的角度值作為航向角,同時設置傳感器數據頻率為5Hz。3.根據權利要求2所述基于安卓手機的移動物體位置與運動參數遠程采集方法,其特征在于,所述加速度傳感器和陀螺儀數據采集步驟與方向傳感器采集相同,僅注冊監聽器改為TYPE_ ACCELEROMETER和TYPE_ GYROSCOPE。4.根據權利要求1至3中任意一項所述基于安卓手機的移動物體位置與運動參數遠程采集方法,其特征在于,所述3G/4G網絡傳輸采用TCP/IP協議作為通信協議,在通信兩端各建立一個套接字,被用于描述IP地址和端口,一旦Socket被建立,通信兩端之間便形成網絡虛擬鏈路進行通信; 在服務端,需先對本地的通信端口進行初始化并開始監聽等待客戶端的連接請求;客戶端同樣需要先初始化本地的通信端口然后連接服務端的端口,當服務端同意客戶端發出的連接請求后服務端與客戶端就建立了一個連接,建立連接后服務端與客戶端之間就能進行數據傳輸。
【文檔編號】G01C21/00GK106017453SQ201610332647
【公開日】2016年10月12日
【申請日】2016年5月18日
【發明人】勾燦, 孫玉國
【申請人】上海理工大學