文献标识码:A
DOI:10.16157/j.issn.0258-7998.174959
中文引用格式:袁正午,何格格. 一种高精度的GPS-RTK定位技术设计与实现[J].电子技术应用,2018,44(6):63-67.
英文引用格式:Yuan Zhengwu,He Gege. A high precision location technology design and implementation of GPS-RTK[J]. App-
lication of Electronic Technique,2018,44(6):63-67.
0 引言
RTK定位技术是利用全球卫星导航系统(Global Navigation Satellite System,GNSS)进行实时动态相对定位的技术,由于RTK定位技术具有实时性好、位置精度高等优点,是地形测图、施工放样等领域中不可缺少的设备[1]。
传统的RTK定位技术在作业时,首先需要手动架设基准站,然后通过无线数传电台以数据链的形式在基准站与流动站之间传输差分数据[2]。但是,有效作业距离一般只有10 km左右,同时在作业时还容易受到树木、建筑物的遮挡,导致数据传输不稳定,使定位精度降低。
随着国家信息化程度的提高及计算机网络和通信技术的飞速发展,许多城市建立了连续运行参考站(Continusly Operating Reference Station,CORS)系统[3]。本文针对传统数据传输方式的不足之处,结合CORS系统实现了一种高精度的RTK定位技术。该技术采用3G网络通信技术建立数据传输链路,这样数据传输更加稳定可靠,传输距离更远,同时网络设备功耗低、结构小巧,方便操作。
1 RTK定位技术的原理
RTK技术基本原理是建立在实时处理的两个测站的载波相位基础上的,首先基准站通过数据链实时将观测到的载波相位测量值和自身的坐标信息一起发送给移动站。移动站接收GPS卫星信号的载波相位和来自基准站的载波相位测量值,利用基准站与流动站之间观测误差的空间相关性,通过差分的方式减小流动站观测数据中的大部分误差,组成相位差分观测值进行实时处理,解算出观测点的坐标[4]。RTK定位技术的原理框图如图1所示。
2 系统结构设计与功能概述
根据RTK终端系统的设计需求,系统结构中的3个核心模块分别是:微处理器模块、GPS模块、3G网络模块。电源模块主要是为系统各模块提供安全可靠的电源保障。各个模块的连接如图2所示。
2.1S5PV210微处理器
本系统选用了三星公司推出的S5PV210应用处理器[5],S5PV210采用了ARM CortexTM-A8内核,ARM V7指令集主频可达1 GHz,具有64/32位内部总线,32/32 KB的数据、指令一级缓存,512 KB的二级缓存,可以实现2 000 DMIPS(每秒2亿条指令集)的高性能运算能力。终端机使用了友善之臂公司的Tiny210核心板,其搭载了S5PV210处理器,同时具有256 MB容量的DRAM、1 GB的NAND Flash存储芯片,其丰富的外设接口便于进行数据处理和人机之间命令交互。
2.2 GPS模块
本系统的GPS模块采用了美国天宝公司的高性能BD970板卡,它具有原始数据质量好、定位精度高等特点[6],主要用于接收卫星信号并输出接收到的卫星星历数据和观测数据,能够满足用户对多系统多频点数据处理的要求。其热启动时间小于8 s, 重捕时间小于0.1 s,功耗仅215 mW,结构小巧,性能优良,非常适合应用在对功耗、体积要求较高的嵌入式系统中。
2.3 3G网络模块
数据链系统也称为数据传输系统,是实现RTK定位技术的关键部分。其主要的功能是完成RTK终端机与CORS中心的数据交互。现在移动互联网覆盖面积十分广泛,本文采用华为公司的MU709网络模块,基于低功耗设计思想,睡眠模式电流仅为1 mA,且内部整合TCP/IP协议和扩展TCP/IP协议,用AT命令容易操作[7]。通过在网络模块中安装SIM卡,利用3G网络通信技术实现与CORS中心的无线通信。
3 软件系统设计
该系统设计的功能是用3G网络传输技术代替传统的无线电传输技术,保证数据稳定、远距离的传输,提高定位精度。本系统运行于高稳定性和实时性的嵌入式 Linux系统[8],主要包括:主控制程序、GPS数据处理软件设计、差分数据处理软件设计、数据交互软件设计。
3.1 主控制程序
系统上电启动后开始执行主控制程序,首先进行系统初始化。GPS模块初始化主要是对串口UART0进行初始化,即设置UART0的传输帧格式和波特率。根据 BD970板卡硬件特性,设置UART0波特率为11 520 bit/s, 8个数据位,无奇偶校验位,1个停止位。如果接收到GPS数据,则进行数据处理;否者,重新对串口进行设置并接收数据。
在Linux系统启动时自动读取脚本程序,启动3G网络模块,执行ppp拨号上网连接CROS系统中心服务器,此时需要验证用户信息的账号和密码,成功后即可以建立连接,否则重新进行下一次的连接。初始化完成后进入下一步的差分数据处理部分。主控制程序的流程图如图3所示。
3.2 GPS数据处理模块
该模块的目的是实现定位信息解析。BD970板卡按照NEMA-0813通信标准格式输出定位信息,输出的数据采用ASCII码,语句的分类含有$GPGGA、$GPGSA、$GPGSV等。其中GPGGA 语句是使用最广的数据之一,包括17个字段:语句标识头、世界时间、纬度、纬度半球、经度、经度半球等,结束标记为回车符和换行符,分别用14个逗号进行分隔[9]。该系统主要采用的是GPGGA语句,它包含了系统定位所需要的信息,所以,只需要读取GPGGA语句即可。
微处理器通过串口接收BD970的原始数据,如果保存到缓冲区中的数据以“GPGGA”开头并且以“\r\n”结尾,同时数据校验位正确,则可以判断为一条完整有效的数据信息,然后进行下一步的数据解析处理。如果不符合上述规定,判断为一条无效的数据则丢弃,并继续对接收到的数据进行判断。GPS数据处理流程图如图4所示。
3.3 差分数据处理模块
Ntrip(Networked Transport of RTCM via Internet Protocal)是目前CORS系统主要的数据传输协议,可以在因特网上传输RTK数据。它是基于HTTP协议的通用协议,也是建立在网络TCP/IP协议基础上的协议,HTTP对象为GPS数据流[3]。
Ntrip网络主要由3个部分组成:客户端、服务器和数据处理中心。这里的Ntrip客户和Ntrip服务器都只相当于HTTP连接中的客户端,Ntrip处理中心才是响应它们的服务处理器。在CORS网络中,Ntrip客户端是指收到RTK数据流的流动站设备,使用Ntrip处理中心分配的IP地址通过互联网连接到Ntrip处理中心。差分数据处理流程图如图5所示,首先用户需要发送账号和密码到控制中心进行用户接入,流动站可以请求到差分数据。然后从缓冲区中解析差分数据是否为有效的数据,并判断校验位是否正确。如果符合要求则将定位信息保存起来,否者,重新向CORS中心请求差分数据。
3.4 数据交互模块
本部分主要使用了蓝牙通信技术来实现RTK终端机与用户之间的数据交互[10]:终端机实时向用户发送最终的定位结果供用户查阅使用,用户也可以通过蓝牙给终端机发送操作指令。
由于位板卡解算输出定位结果的速率和蓝牙的数据输出速率是不一样的,为了避免数据的覆盖和丢失,设计了一个多线程模型,并结合带锁的循环队列进行数据缓存。当有数据到来时,写线程就在队列尾部获得互斥锁并将数据写入缓存,当一条完整的定位数结写完后立即释放互斥锁。此时读线程会在队列头部获得互斥锁,并读取一条完整的数据,然后通过蓝牙发送出去并释放互斥锁。数据交互流程图如图6所示。
4 测试结果分析
为了测试终端机在实际应用环境中的可用性和稳定性,选取重庆邮电大学逸夫科技楼作为测试场地。测试分为无遮挡测试和有遮挡测试两种情况。将终端机放置在空旷地带工作为无遮挡测试,将在逸夫科技楼顶进行测试。将终端机放置在逸夫科技楼前的大树旁边工作为有遮挡测试。在室外进行定位测量并保存最终的定位数据,然后在上位机中对定位数据精度进行分析。为了保证每次测试的独立性,测试结束后进行关机操作,然后开机重新启动,再开始下一次测试。
4.1 达到固定解时间分析
RTK终端机的定位结果达到固定解时的输出数据才是有效的,因此达到固定解需要的时间是衡量终端机性能的一个重要指标。最终定位结果中的第6个字段表示GPS状态,“0”表示未定位,“4”表示达到固定解,“5”表示达到浮点解。
终端机观测到一组GPS数据对应的时刻称为历元,大约每隔1 s可以观测到一组GPS数据,实际测量过程中以观测到的历元数来表示终端机的工作时长。图7表示在没有遮挡的情况下达到固定解所需要的时间,终端机可以快速由浮点解状态达到固定解状态输出有效数据,并一直是固定解状态。图8表示有遮挡的情况下达到固定解所需要的时间,终端机会在浮点解状态持续一段时间(10 s左右),然后达到固定解状态输出有效数据,并一直是固定解状态。结果表明在卫星信号和数据传输链有遮挡情况下,终端机也能在较短的时间内达到固定解,满足实际需求。
4.2 定位精度分析
在定位精度测试时,需要分析接收机达到固定解后输出的定位数据。将每组数据所有固定解的平均值作为位置的理论值,然后分别计算了每组数据的定位结果与理论值的偏差值和最大偏差值,将该数据用MATLAB分析后,得到如图9和图10所示的结果。
在不同的环境中分别测试了3组数据,每组数据的采集时间约5 min(约300个历元)。将无遮挡的测试结果通过表1统计分析,将有遮挡的测试结果通过表2统计分析。
通过分析表1和表2中的偏差均值可以看出在两种情况下的整体定位结果比较稳定,误差十分接近,均在1 cm以内,在允许的误差范围内。
通过分析表1中的最大偏差值可知,在没有遮挡时出现的波动较小,定位精度较高,其中最大偏差值约为2 cm,但大部分历元的误差都为厘米级水平,在允许的误差范围内。通过分析表2中的最大偏差值可知,在有遮挡时,由于会对接收的卫星信号产生影响,部分时间出现差分数据传输受到影响,导致定位误差出现一定的波动,因此在测试的过程中有时会出现较大的波动,其中最大偏差值约为2.9 cm,波动幅度在测试精度允许范围以内。
总体而言,无论是没有遮挡的环境还是有遮挡的环境,在测试的过程中某个历元的定位结果中会出现一定的波动,但是整体的实验结果表明,基于BD970板卡的RTK定位系统可以达到厘米级的定位精度,而大地测量要求位置精度也是厘米级。
5 结论
针对无线电传输差分数据时容易受到地理环境、有效距离、气象等因素影响的问题,本文基于Linux嵌入式平台实现了一种实用的RTK技术,将GPS定位技术与3G无线通信技术相结合开发完成了RTK终端机系统,增强了差分数据传输的可靠性和稳定性,提高了定位精度。利用蓝牙通信技术提供了良好的用户体验,实现了可视化功能。采用高性能嵌入式技术实现了小型化、集成化,提高了系统的智能化程度,方便操作。通过对不同环境的测试分析,结果表明本文实现的RTK定位系统是可行的,在没有遮挡和有遮挡的应用场景下均具有较高的稳定性,并且能够提供厘米级的高精度定位结果,可以满足大地测量等实际应用的需要。该设备体积较小、功耗低,便于安装在小型无人机等载体上进行定位导航,具有广泛的应用前景。
参考文献
[1] 邹璇,李宗楠,唐卫明,等.一种适用于大规模用户的非差网络RTK服务新方法[J].武汉大学学报(信息科学版),2015,40(9):1242-1246.
[2] 张国利,时小飞,杨开伟,等.网络RTK支持下的无验潮水深测量方法及其应用[J].测绘通报,2016(12):140-141.
[3] 秦长才,郭辉.基于CORS系统的网络RTK技术在土地勘测定界中的应用[J].测绘与空间地理信息,2015(3):102-103.
[4] 毛琪,潘树国,高旺,等.RTK终端实时动态检测技术研究[J].测绘工程,2015(3):47-52.
[5] 张毅,许勇.基于ARM的商用车信息系统的设计[J].电子技术应用,2016,42(5):57-59.
[6] 邹进贵,李勇.GNSS天线阵列接收机数据采集与解码的实现及应用[J].测绘通报,2015(8):1-3.
[7] 程行,岳锐,金晓龙.基于ARM和3G的船舶燃料管理系统设计[J].电子技术应用,2013,39(10):22-24.
[8] 勇娅询,刘维亭,刘怀芝,等.基于ARM9和Linux的风暴潮监控系统设计[J].电子技术应用,2015,41(7):30-32.
[9] 许金钢,常计东,刘思聪,等.基于GPS定位的自动引导小车设计[J].电子测试,2016(19):7-8.
[10] 甘广辉,童蕾,陈超敏.基于低功耗蓝牙网络的家用胎儿监护系统设计[J].电子技术应用,2015,41(8):34-36.
作者信息:
袁正午,何格格
(重庆邮电大学 移动通信技术重庆市重点实验室,重庆400065)