侯 金 波
(天津市勘察院, 天津 300191)
測量機(jī)器人具有ATR補(bǔ)償、自動(dòng)照準(zhǔn)、目標(biāo)識(shí)別、跟蹤等特點(diǎn),以其高精度、高效率、高穩(wěn)定性等優(yōu)勢廣泛應(yīng)用于變形監(jiān)測及各種精密工程測量中。指令集的開放令用戶可根據(jù)需要定制開發(fā)各種程序集控制儀器自動(dòng)測量以實(shí)現(xiàn)高精度的數(shù)據(jù)采集[1-6]。以徠卡公司的TPS系列全站儀為例,用戶具備一定的編程知識(shí),便可直接調(diào)用徠卡提供的GeoCOM接口的二次開發(fā)動(dòng)態(tài)連接庫或根據(jù)其ASIIC指令集自己編寫相關(guān)庫函數(shù)實(shí)現(xiàn)儀器的動(dòng)態(tài)控制。前者相對(duì)簡單,后者實(shí)現(xiàn)過程相對(duì)繁瑣難度較大。目前現(xiàn)有的徠卡GeoCOM二次開發(fā)包對(duì)微軟系統(tǒng)的支持較為完善,用戶對(duì)其開發(fā)環(huán)境較為熟悉且可利用的開發(fā)資源相對(duì)較多,大多數(shù)開發(fā)者選擇在Windows或WinCE平臺(tái)下進(jìn)行應(yīng)用開發(fā)。
隨著時(shí)代的發(fā)展和技術(shù)的進(jìn)步,Android憑借其強(qiáng)大的功能、開源的系統(tǒng)和低廉設(shè)備的價(jià)格,成為應(yīng)用最為廣泛的移動(dòng)終端操作系統(tǒng)。在安卓設(shè)備上開發(fā)測量程序的嘗試也逐漸增多[7-10]。在安卓設(shè)備上利用藍(lán)牙串口通訊協(xié)議向測量機(jī)器人發(fā)送ASIIC指令完成自動(dòng)化測量任務(wù),在低設(shè)備成本的基礎(chǔ)上在提升測量工作的效率和成果質(zhì)量的同時(shí)也為用戶提供了更加靈活、便捷的體驗(yàn)。
徠卡測量機(jī)器人的測控主要通過GeoCOM接口實(shí)現(xiàn)。GeoCOM(地理數(shù)據(jù)通訊接口技術(shù))是基于SUN 公司的遠(yuǎn)程調(diào)用協(xié)議( RPC )而建立的,屬于點(diǎn)對(duì)點(diǎn)的通信協(xié)議。一個(gè)通信單元由客戶端(控制計(jì)算器)的請(qǐng)求與服務(wù)器(全站儀)的應(yīng)答組成,其基本通信方式如圖1所示。
圖1測量機(jī)器人的基本通信方式
GeoCOM接口是一個(gè)封裝了用戶與徠卡全站儀進(jìn)行通訊交互(如控制全站儀轉(zhuǎn)動(dòng)、自動(dòng)識(shí)別目標(biāo)、精確測距等)時(shí)調(diào)用儀器上的子系統(tǒng)所需的客戶端調(diào)用接口函數(shù)庫,這些接口被組織成子系統(tǒng)的形式封裝在一個(gè)動(dòng)態(tài)鏈接庫中,用戶不需考慮這些函數(shù)是如何實(shí)現(xiàn)的,那些特定功能的只需通過程序語言調(diào)用即可。用戶可通過兩種模式即低級(jí)模式(ASCII協(xié)議)和高級(jí)模式(函數(shù)調(diào)用模式)對(duì)儀器進(jìn)行控制。采用Android Studio平臺(tái)開發(fā)相關(guān)測量程序主要采用ASCII協(xié)議實(shí)現(xiàn)控制通信。
ASCII協(xié)議是一種線性通信協(xié)議其通信過程是計(jì)算機(jī)發(fā)出請(qǐng)求由串口發(fā)送至全站儀,等待儀器應(yīng)答,故需要終止標(biāo)識(shí)符來結(jié)束通信過程,其請(qǐng)求和應(yīng)答的格式及其說明如表1所示。
表1 GeoCOM的ASCII通信協(xié)議
RFCOMM是為了兼容傳統(tǒng)的串口應(yīng)用,同時(shí)取代有線的通信方式,藍(lán)牙協(xié)議棧需要提供與有線串口一致的通信接口而開發(fā)出的協(xié)議。安卓設(shè)備支持該協(xié)議,利用安卓API調(diào)用相關(guān)函數(shù)即可實(shí)現(xiàn)設(shè)備與儀器之間的相關(guān)通信。
通過GeoCOM接口技術(shù)利用藍(lán)牙通訊向測量儀器發(fā)送ASCII指令等待儀器反映完成后接收解析應(yīng)答字符串,便可實(shí)現(xiàn)GeoCOM初始化、儀器連接、學(xué)習(xí)、測量、斷開連接、GeoCOM端口釋放等基本測控操作動(dòng)作。然后根據(jù)設(shè)計(jì)的數(shù)據(jù)測量采集操作流程進(jìn)行優(yōu)化組合即可實(shí)現(xiàn)測量工作的自動(dòng)化。
控制測量機(jī)器人進(jìn)行自動(dòng)測量的實(shí)質(zhì)是一系列ASCII指令的組織、發(fā)送與解析。如圖2所示,一個(gè)完整的測量動(dòng)作應(yīng)包含定向、搜索棱鏡、精瞄、測量、獲取結(jié)果五個(gè)動(dòng)作。
圖2自動(dòng)測量流程圖
而在安卓平臺(tái)下實(shí)現(xiàn)控制測量機(jī)器人進(jìn)行數(shù)據(jù)的自動(dòng)采集的關(guān)鍵主要在于藍(lán)牙通訊下相應(yīng)的ASCII指令的發(fā)送及解析。利用RFCOMM串口可實(shí)現(xiàn)一令一答,即發(fā)送一個(gè)指令等待儀器響應(yīng)完成取得結(jié)果,根據(jù)結(jié)果字符串的解析結(jié)果再發(fā)送下一條指令,按照?qǐng)D2所示流程即可完成完整的測量動(dòng)作。Send And Recieve Data為字符串?dāng)?shù)據(jù)發(fā)送與解析函數(shù),利用ASCII指令實(shí)現(xiàn)儀器基本操控動(dòng)作的關(guān)鍵指令如下:
(1) 利用藍(lán)牙RFCOMM協(xié)議實(shí)現(xiàn)儀器與安卓設(shè)備的連接
bt Device=bt Adaper.get Remote Device(MyAddress);
bt Soket.connect();
(2) 定向到指定位置
String Command=" %R1Q,9027,3:"+HZ+","+V+","+Pos Mode+","+Atr Mode+",0 ";
String strR=Send And Recieve Data(Command,3);
(3) 在指定位置找準(zhǔn)目標(biāo)棱鏡
String Command=" %R1Q,9029,4:"+HZ+","+V+",0 ";
String strR=Send And Recieve Data(Command,4);
(4) 精確照準(zhǔn)目標(biāo)
String Command=" %R1Q,9037,5:"+HZ+","+V+",0 ";
String strR=Send And Recieve Data(Command,5);
(5) 執(zhí)行測量操作
String Command=" %R1Q,2008,6:1,1 ";
String strR=Send And Recieve Data(Command,6);
(6) 獲取測量結(jié)果
String Result=" %R1Q,2108,7:1000,1 ";
String strR=Send And Recieve Data(Command,7);
Android的系統(tǒng)架構(gòu)從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫層和Linux內(nèi)核層。其開發(fā)四大組件分別是:①活動(dòng):用于表現(xiàn)功能;②服務(wù):后臺(tái)運(yùn)行服務(wù),不提供界面呈現(xiàn);③廣播接收器:用于接收廣播;④內(nèi)容提供商:支持在多個(gè)應(yīng)用中存儲(chǔ)和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫。應(yīng)用Android平臺(tái)開發(fā)具有開放、便捷等特點(diǎn)[11-13]。Android Studio是一個(gè)基于IntelliJ IDEA社區(qū)版本的Android開發(fā)環(huán)境,與Eclipse ADT插件相似,Android Studio提供了集成的Android工具用于開發(fā)和調(diào)試。作為Google官方的IDE, Android Studio提供了開發(fā)和構(gòu)建Android應(yīng)用程序的所有工具,包括智能代碼編輯器、布局編輯器、代碼分析和調(diào)試工具、應(yīng)用構(gòu)建系統(tǒng)、模擬器和性能分析工具等。
本文利用GeoCom接口技術(shù)在Android Studio 3.0平臺(tái)上以上文所示流程及技術(shù)要點(diǎn)以SQLite數(shù)據(jù)庫為數(shù)據(jù)組織存儲(chǔ)載體通過ASCII指令的發(fā)送及解析實(shí)現(xiàn)了控制測量機(jī)器人實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)化采集。圖3為工程管理、圖4為學(xué)習(xí)測量、圖5為參數(shù)設(shè)置、圖6為自動(dòng)測量、圖7為成果輸出、圖8展示了輸出的某次地鐵保護(hù)區(qū)監(jiān)測獲取的科傻平面成果平差文件。在工程應(yīng)用時(shí)根據(jù)界面提示,在工程管理模塊選擇或新建工程,如未進(jìn)行學(xué)習(xí)測量則先進(jìn)行學(xué)習(xí)測量并根據(jù)測量需要設(shè)置本次測量的相關(guān)限差,選擇自動(dòng)測量的方式完成測量工作即可輸出科傻平差文件和原始記錄等測量數(shù)據(jù)。
圖3 工程管理
圖4 學(xué)習(xí)測量
圖5 參數(shù)測量
圖6 自動(dòng)測量
圖7 成果輸出
圖8科傻成果
高精度測量數(shù)據(jù)的可靠獲取是其后續(xù)分析應(yīng)用的基礎(chǔ),利用測量機(jī)器人實(shí)現(xiàn)自動(dòng)化測量是一種重要的手段。對(duì)于自動(dòng)化數(shù)據(jù)獲取,測控程序至關(guān)重要。安卓設(shè)備價(jià)廉易得,利用藍(lán)牙通訊通過RFCOMM串口協(xié)議向測量機(jī)器人發(fā)送ASIIC指令即可實(shí)現(xiàn)自動(dòng)化測量達(dá)到預(yù)期目的。在安卓平臺(tái)上進(jìn)行測量機(jī)器人測控,設(shè)備易得成本低,用戶體驗(yàn)更加便捷友好,具有廣闊的應(yīng)用前景。