安卓平台下实现测量机器人进行自动化数据采集的测控方法研究

2019-07-02 11:18
水利与建筑工程学报 2019年3期
关键词:全站仪安卓测控

侯 金 波

(天津市勘察院, 天津 300191)

测量机器人具有ATR补偿、自动照准、目标识别、跟踪等特点,以其高精度、高效率、高稳定性等优势广泛应用于变形监测及各种精密工程测量中。指令集的开放令用户可根据需要定制开发各种程序集控制仪器自动测量以实现高精度的数据采集[1-6]。以徕卡公司的TPS系列全站仪为例,用户具备一定的编程知识,便可直接调用徕卡提供的GeoCOM接口的二次开发动态连接库或根据其ASIIC指令集自己编写相关库函数实现仪器的动态控制。前者相对简单,后者实现过程相对繁琐难度较大。目前现有的徕卡GeoCOM二次开发包对微软系统的支持较为完善,用户对其开发环境较为熟悉且可利用的开发资源相对较多,大多数开发者选择在Windows或WinCE平台下进行应用开发。

随着时代的发展和技术的进步,Android凭借其强大的功能、开源的系统和低廉设备的价格,成为应用最为广泛的移动终端操作系统。在安卓设备上开发测量程序的尝试也逐渐增多[7-10]。在安卓设备上利用蓝牙串口通讯协议向测量机器人发送ASIIC指令完成自动化测量任务,在低设备成本的基础上在提升测量工作的效率和成果质量的同时也为用户提供了更加灵活、便捷的体验。

1 测量机器人的测控基本原理

徕卡测量机器人的测控主要通过GeoCOM接口实现。GeoCOM(地理数据通讯接口技术)是基于SUN 公司的远程调用协议( RPC )而建立的,属于点对点的通信协议。一个通信单元由客户端(控制计算器)的请求与服务器(全站仪)的应答组成,其基本通信方式如图1所示。

图1测量机器人的基本通信方式

GeoCOM接口是一个封装了用户与徕卡全站仪进行通讯交互(如控制全站仪转动、自动识别目标、精确测距等)时调用仪器上的子系统所需的客户端调用接口函数库,这些接口被组织成子系统的形式封装在一个动态链接库中,用户不需考虑这些函数是如何实现的,那些特定功能的只需通过程序语言调用即可。用户可通过两种模式即低级模式(ASCII协议)和高级模式(函数调用模式)对仪器进行控制。采用Android Studio平台开发相关测量程序主要采用ASCII协议实现控制通信。

ASCII协议是一种线性通信协议其通信过程是计算机发出请求由串口发送至全站仪,等待仪器应答,故需要终止标识符来结束通信过程,其请求和应答的格式及其说明如表1所示。

表1 GeoCOM的ASCII通信协议

RFCOMM是为了兼容传统的串口应用,同时取代有线的通信方式,蓝牙协议栈需要提供与有线串口一致的通信接口而开发出的协议。安卓设备支持该协议,利用安卓API调用相关函数即可实现设备与仪器之间的相关通信。

通过GeoCOM接口技术利用蓝牙通讯向测量仪器发送ASCII指令等待仪器反映完成后接收解析应答字符串,便可实现GeoCOM初始化、仪器连接、学习、测量、断开连接、GeoCOM端口释放等基本测控操作动作。然后根据设计的数据测量采集操作流程进行优化组合即可实现测量工作的自动化。

2 安卓平台下设备测控实现的关键

控制测量机器人进行自动测量的实质是一系列ASCII指令的组织、发送与解析。如图2所示,一个完整的测量动作应包含定向、搜索棱镜、精瞄、测量、获取结果五个动作。

图2自动测量流程图

而在安卓平台下实现控制测量机器人进行数据的自动采集的关键主要在于蓝牙通讯下相应的ASCII指令的发送及解析。利用RFCOMM串口可实现一令一答,即发送一个指令等待仪器响应完成取得结果,根据结果字符串的解析结果再发送下一条指令,按照图2所示流程即可完成完整的测量动作。Send And Recieve Data为字符串数据发送与解析函数,利用ASCII指令实现仪器基本操控动作的关键指令如下:

(1) 利用蓝牙RFCOMM协议实现仪器与安卓设备的连接

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) 在指定位置找准目标棱镜

String Command=" %R1Q,9029,4:"+HZ+","+V+",0 ";

String strR=Send And Recieve Data(Command,4);

(4) 精确照准目标

String Command=" %R1Q,9037,5:"+HZ+","+V+",0 ";

String strR=Send And Recieve Data(Command,5);

(5) 执行测量操作

String Command=" %R1Q,2008,6:1,1 ";

String strR=Send And Recieve Data(Command,6);

(6) 获取测量结果

String Result=" %R1Q,2108,7:1000,1 ";

String strR=Send And Recieve Data(Command,7);

3 开发实现

Android的系统架构从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。其开发四大组件分别是:①活动:用于表现功能;②服务:后台运行服务,不提供界面呈现;③广播接收器:用于接收广播;④内容提供商:支持在多个应用中存储和读取数据,相当于数据库。应用Android平台开发具有开放、便捷等特点[11-13]。Android Studio是一个基于IntelliJ IDEA社区版本的Android开发环境,与Eclipse ADT插件相似,Android Studio提供了集成的Android工具用于开发和调试。作为Google官方的IDE, Android Studio提供了开发和构建Android应用程序的所有工具,包括智能代码编辑器、布局编辑器、代码分析和调试工具、应用构建系统、模拟器和性能分析工具等。

本文利用GeoCom接口技术在Android Studio 3.0平台上以上文所示流程及技术要点以SQLite数据库为数据组织存储载体通过ASCII指令的发送及解析实现了控制测量机器人实现数据的自动化采集。图3为工程管理、图4为学习测量、图5为参数设置、图6为自动测量、图7为成果输出、图8展示了输出的某次地铁保护区监测获取的科傻平面成果平差文件。在工程应用时根据界面提示,在工程管理模块选择或新建工程,如未进行学习测量则先进行学习测量并根据测量需要设置本次测量的相关限差,选择自动测量的方式完成测量工作即可输出科傻平差文件和原始记录等测量数据。

图3 工程管理

图4 学习测量

图5 参数测量

图6 自动测量

图7 成果输出

图8科傻成果

4 结 语

高精度测量数据的可靠获取是其后续分析应用的基础,利用测量机器人实现自动化测量是一种重要的手段。对于自动化数据获取,测控程序至关重要。安卓设备价廉易得,利用蓝牙通讯通过RFCOMM串口协议向测量机器人发送ASIIC指令即可实现自动化测量达到预期目的。在安卓平台上进行测量机器人测控,设备易得成本低,用户体验更加便捷友好,具有广阔的应用前景。

猜你喜欢
全站仪安卓测控
iPhone不卡的秘密曝光:安卓也能享受
全站仪中间法在矿山高程测量中的应用——以河南镇平县地形测量为例
昆山祺迈测控设备有限公司
全站仪极坐标法监测点稳定性分析方法研究
文物表情包
安卓系统或成智能汽车标配
车载全站仪位姿估计方法研究
基于现代测控技术及其应用分析
虚拟仪器技术在农业装备测控中的应用
向着新航程进发——远望7号测控船首航记录