| 基于Android的精密三角高程测量系统开发及应用 |
2. 武汉大学精密工程与工业测量国家测绘地理信息局重点实验室,湖北 武汉,430079;
3. 武汉大学国家级测绘实验教学示范中心,湖北 武汉,430079
2. Key Laboratory of Precise Engineering and Industry Surveying, National Administration of Surveying, Mapping and Geoinformation, Wuhan University, Wuhan 430079, China;
3. Mapping National Experimental Teaching Demonstration Center, Wuhan University, Wuhan 430079, China
精密三角高程测量的精度随着测绘技术的发展及高精度测量机器人的出现有了新的提升空间[1]。精密三角高程测量在复杂地形中作业具有明显优势[2],为推广精密三角测量方法的应用,众多学者进行了精密三角高程测量系统的开发。目前精密三角高程测量系统主要分为机载的测量系统和基于掌上电脑(personal digital assistant,PDA)的测量系统两大类。机载的测量系统的通用性较差,基于掌上电脑的测量系统需额外配备而使用不方便[3]。随着移动测量技术的发展,传统的测量方式难以满足测量工作者的使用体验和对测量效率的要求,而结合移动测量设备的新兴测量方式在用户体验和效率上,有着巨大的优势,正逐渐成为测量方式转变的新引擎。Android作为新型的移动智能开源操作系统,具有价格便宜、性能稳定和开发难度低等优势,结合Android系统开发精密三角高程测量系统软件,相较于其他类型的系统平台而言更具优势。
1 精密三角高程测量方法精密三角高程测量的作业涉及高低棱镜的测量,其作业流程是,首先将对中棱镜杆架设在起始水准点上,并将一套高低棱镜安置到棱镜杆上,记该套棱镜为主棱镜,用主站测量设备分别测量低棱镜和高棱镜,测量完成后将主棱镜安置到主站上,接着用主站观测辅站的高低棱镜(记辅站的高低棱镜为辅棱镜)完成观测后,主站不动,辅站开始对主站进行观测,之后主站向前移动,然后辅站接着观测移动后的主站,完成观测后,主站开始观测,流程同辅站。最后对终点进行观测,需要注意的是观测终点的必须是主站,且终点上架设棱镜杆,棱镜杆上安置主棱镜。图 1为精密三角高程测量作业的流程示意。
![]() |
| 图 1 精密三角高程测量作业流程 Fig.1 Precise Trigonometric Leveling Workflow |
2 Android精密三角高程测量系统实现
文献[4]中已对系统的构架做过初步设计,精密三角高程测量系统软件运用Java语言,基于Android平台进行开发,系统的总体结构如图 2所示,包含项目管理、参数配置、高程测量、指标差检查和数据管理五个主要的模块。项目管理主要包含项目的新建、打开以及删除操作;参数配置主要包含测量设备连接和相关测量参数配置的功能;高程测量主要包含各类测量操作以及测量数据的初步检核功能;指标差检查主要包含测量限差的检核功能,还提供重测的入口;数据管理包含数据导出和删除两类操作。
![]() |
| 图 2 精密三角高程测量系统总体结构 Fig.2 Overall Structure of Precise Trigonometric Leveling System |
2.1 Android精密三角高程测量系统研发关键技术
系统的研发涉及多项技术,包括GeoCOM(徕卡地理数据通讯接口)开发、Android系统并发以及蓝牙串口通讯等,研发的难点在于技术的相互协调。
2.1.1 GeoCOM与ASCII协议指令目前世界上成熟的测量机器人产品都支持二次开发,只是有的厂家提供全面、完善、易用的用户编程工具,而有的厂家提供的相对单一[5]。本系统的开发主要是基于徕卡公司生产的测量机器人,依赖徕卡公司的GeoCOM进行。GeoCOM是徕卡公司为开发人员提供的一种二次开发平台,目前对GeoCOM通讯接口进行操作主要有ASCII PROTOCOL(美国信息交换标准代码的通讯协议)和FUNCTION CALL PROTOCOL(基于函数调用的通讯协议)两种模式,其中ASCII协议通信的操作简单、功能丰富且适用范围广,完全能够适应系统开发的需求,因此系统的开发采取了ASCII协议通信的方式。
ASCII通信指令由徕卡公司提供,当开通GeoCOM功能的测量设备接收到正确的ASCII时,设备会做出相应的响应,通过该方式容易实现设备的蓝牙无线控制。
2.1.2 Android系统并发技术并发编程可以使程序执行速度得到极大提高,或者为设计某些类型的程序提供更易用的模型[6]。Android平台的常规开发语言Java是一种多线程语言,它为解决并发问题提供了多种方案。对于精密三角高程测量系统,并发技术是实现测量系统自动化控制不可缺少的部分,系统的指令发送与应答、界面更新以及设备连接都使用到了并发技术。Android系统依托Java语言设计了方便使用的并发线程机制,通过该机制可以很方便的实现线程等待与唤醒和子线程UI(用户界面)更新等难度较高的操作。
1) Android系统UI异步更新原理。测量系统开发对界面更新有很大的需求,针对用户的不同操作系统需要给出不同的响应界面。Android平台的UI与大多数图形界面库类似,都需要在主线程更新,否则会抛出异常。目前有多种方案可实现在子线程更新UI,其中使用比较广泛的是Handler机制[7]。Handler处理机制可概括为Handler消息创建、消息发送和消息处理3个步骤。
图 3为利用Handler机制更新UI的原理图。
![]() |
| 图 3 系统UI更新处理机制 Fig.3 System UI Update Processing Mechanism |
2) Android系统多线程等待与唤醒原理。线程的等待与唤醒在系统开发中被多次使用,主要集中在高程测量功能模块的实现中。由于测量机器处理ASCII协议指令时存在一定的时延,当发送的指令超过一定数量时,先发送的指令会被移除,这可能会导致测量的失败。线程的等待与唤醒可以很好地解决该问题,等待时系统软件等待测量机器人发送的指令,接收到指令后唤醒线程继续相应的逻辑处理。
Java语言中,线程等待与唤醒需要用到wait()和notify()/notifyAll()等方法。当线程执行wait()时,系统会把当前的锁释放,然后让出CPU,进入等待状态。当执行notify()/notifyAll()方法时,会唤醒一个处于等待特定对象锁的线程,然后继续往下执行,直到执行完退出对象锁锁住的区域后再释放锁[8]。图 4解释了线程等待与唤醒工作基本原理。
![]() |
| 图 4 线程等待与唤醒基本原理 Fig.4 Basic Principles of Threads Wait and Wake Up |
2.2 Android精密三角高程测量系统功能实现
根据精密三角高程测量的总体结构框架,系统对项目管理、参数配置、高程测量、指标差检查和数据管理五个模块进行完善开发。系统的基础功能主要集中在项目管理、参数配置和数据管理模块上,测量功能主要集中在高程测量和指标差检核模块上。
2.2.1 项目管理模块提供项目添加、打开和删除功能。在模块中各个项目以列表的形式展示,展示的内容包括项目名称、测量人员以及测量时间。在代码中运用了ListView和Adapter数据适配器。模块中数据的存储使用嵌入式轻型数据库SQLite,对数据库的操作使用了结构化查询语言SQL。
2.2.2 参数配置模块主要负责完成仪器连接、棱镜互差配置以及等级参数配置的工作,其逻辑相对简单,主要包括蓝牙连接和数据库读写等操作。
Android平台为蓝牙串口通信提供了很多封装函数,开发人员只需调用合适的接口函数就能实现蓝牙串口通信。首先通过函数获取Bluetooth Adapter,接着通过已配对仪器的蓝牙mac地址和串口通讯UUID(通用唯一识别码)创建蓝牙连接服务,然后调用connect()函数创建蓝牙连接获取输入输出流,利用输入输出流发送测量指令,最后调用close()函数关闭蓝牙连接,如图 5。
![]() |
| 图 5 Android蓝牙通讯流程 Fig.5 Android Bluetooth Communication Process |
2.2.3 数据管理模块
主要包含数据查看、数据导出和数据删除功能。数据查看给用户提供了较为简洁的查看界面,在数据查看界面用户可以大致浏览目前已测量的数据。数据导出完成数据文本导出的功能,该功能是完成测量的关键,只有正确地导出测量数据,数据处理软件才能计算高差。数据删除选项可以删除最后观测的边相关的所有数据,当测量过程中出现异常操作时,该功能可以进行适当的处理。数据管理的实现完全基于SQLite数据库,所有测量数据都存储在数据库名为“dataResult”的数据表中。
2.2.4 高程测量模块系统实现的主要功能,该模块结构复杂,是系统实现的关键所在。高程测量模块工作流程是,系统软件通过蓝牙连接测量机器人,初始化测量机器人的各类设置,接着软件向测量机器人发送测量指令,测量机器人开始测量。测量机器人每次测量完成后,都将测量结果发送至Android平台,以用户可见的形式显示。高程测量利用并发线程开发,实现指令的发送和测量数据的接收,利用Java线程管理机制对多个线程进行协调管理。系统高程测量的界面如图 6(a)所示。
![]() |
| 图 6 高程测量与指标差检查 Fig.6 Elevation Measurement and Index Difference Check |
2.2.5 指标差检查模块
用于保证测量结果准确性,其主要的检查项包含最大最小i角互差值、最大最小竖角互差值和最大最小测距互差值,各检查项的限差值根据水准等级设定。当测量距离较远,测回数多,数据量较大时指标差的计算可能比较耗时,因此在系统开发中,将检查操作设置在子线程,以保证界面运行流畅。系统指标差检查的界面如图 6(b)所示。
3 Android精密三角高程测量系统在跨江水准测量中的应用跨江水准测量在检验精密三角高程测量有效性上具有指示性的意义,已有研究人员在不结合外部测量软件的情况下利用常规测量方法对跨河水准进行过研究,取得了良好的测量效果[9, 10]。为验证系统的有效性,系统开发完成后在中国宜昌市某长江大桥的跨江水准测量中进行了实测应用。进行跨江水准测量的主要目的是对长江北岸的陆地水准控制点和南岸的陆地水准控制点进行联测,保证长江两侧高程系统的统一。该测区江面的跨度约1.2 km左右,测量时采用两台测量机器人同步进行作业,施测跨江水准测量,测区点位分布如图 7,需要测量的高差分别为H5-H7、H7-H8、H8-H5。
![]() |
| 图 7 点位分布概略位置 Fig.7 Distribution of Point Position |
3.1 跨江水准测量方案
为检验三个基准点的稳定性,首先对H5-H7、H7-H8、H8-H5三个测段进行测量得出高差值;接着,对高差环闭合差进行检核,以保证测量数据的质量;最后将各段高差值分别于设计院提供的初始高差值进行对比,判断基准点是否发生变化。考虑到精密三角高程数据自检校的问题,在实测过程中,对每一段高差都进行两次观测。
精密三角高程测量的外业测量需参照测量作业流程进行,测量过程被整合到了系统软件里,需要测量人员动手操作仪器的部分很少,极大地避免了人为因素对测量结果的影响。需要注意的是,因系统软件是利用蓝牙与测量机器人进行连接的,所以在测量时应适当控制Android设备与测量机器人之间的距离,以保证测量的正常进行。
3.2 跨江水准测量结果分析对桥梁建设段的跨江水准测量需要进行多期持续观测,在系统完成后利用开发的系统共进行了两期跨江水准测量,表 1为各期跨江水准测量的结果。对于第一期数据,在H8-H5测段,测量结果指示高差差值与设计高差存在明显差异,经分析江面的能见度是导致差异的主要原因。进行第一期观测期间江面有雾,对测量造成了一定影响,虽然测量时尽可能保证了同时对向观测,但气象因素[11]还是对结果产生了影响。第二期观测时为阴天,江面的能见度高,气温、湿度稳定,测量结果更具代表性。
| 表 1 跨江水准测量结果 Tab.1 Cross-river Leveling Results |
![]() |
由表 1可知,第一期观测时,闭合环总长为3 km,环闭合差为2.2 mm,闭合差限差为6.93 mm。第二期观测时,闭合环中长为2.98 km,环闭合差为0 mm,闭合差限差为6.91 mm。由此可知两期数据的环闭合差均满足二等水准测量限差[12]的要求。
另外,根据外业测量的观测数据可知,在测距为1.2 km左右时,系统能正常进行作业。事实上,距离对系统测量的限制更多是来自测量仪器本身自动照准功能所能达到的距离。系统在使用过程中稳定性好,操作系统软件各项正常响应,降低了操作难度,有利于精密三角高程测量方法的推广使用。
4 结束语经过完善的基于Android平台的精密三角高程测量系统具有流畅稳定、用户友好以及操作简单等特点,可更方便地进行精密三角高程作业。在实际应用中使用本系统测量进行跨江水准测量所获取的测量结果与常规水准测量的结果具有一致性,精度可以达到二等水准测量的要求。系统在实际使用的过程中也存在部分问题,如测量时对Android平板息屏的处理不太合理,在后续开发中将进行改进。
本系统软件基于Android平台开发,易于实现数据的通讯,后续开发可将该系统整合到车载精密三角高程测量系统中,进一步简化精密三角高程测量的操作难度,提高测量的自动化程度。
| [1] |
邹进贵, 朱勇超, 徐亚明. 基于智能全站仪的机载精密三角高程测量系统设计与实现[J]. 测绘通报, 2014(3): 1-5. |
| [2] |
邹进贵, 朱勇超, 童魁. 精密三角高程测量技术在高海拔山区的应用[J]. 测绘地理信息, 2013, 38(6): 6-9. |
| [3] |
柏文锋.精密三角高程测量系统的研究与实现[D].武汉: 武汉大学, 2008 http://www.cnki.com.cn/Article/CJFDTotal-ZXLJ201009006.htm
|
| [4] |
成洪权, 邹进贵. Android平台下的精密三角高程测量系统研制[J]. 测绘通报, 2016(S2): 273-276. |
| [5] |
梅文胜. 测量机器人开发与应用[M]. 武汉: 武汉大学出版社, 2011.
|
| [6] |
BruceEckel. Java编程思想:第4版[M]. 机械工业出版社, 2007.
|
| [7] |
郭霖. 第一行代码-Android[M]. 北京: 人民邮电出版社, 2014.
|
| [8] |
Hapjin.JAVA多线程之wait/notify[EB/OL].http://www.cnblogs.com/hapjin/p/5492645.html[2016-05-14]
|
| [9] |
林明华, 苏志坚, 侯飞. 精密三角高程测量用于跨河高程传递的实验研究[J]. 测绘科学, 2012, 37(5): 209-211. |
| [10] |
刘冠兰, 李东宇, 丁文宏. 精密三角高程测量在宽水域跨河水准中的应用[J]. 工程勘察, 2010, 38(10): 71-74. |
| [11] |
白少云, 杨琦. 基于MS05AX测量机器人的精密三角高程误差来源与精度分析[J]. 测绘通报, 2015(2): 58-63. |
| [12] |
中国国家标准化管理委员会.国家一、二等水准测量规范: GB/T 12897-2006[S].北京: 中国标准出版社, 2006
|
2019, Vol. 44










