曾树林,匡翠林
(1.中南大学 地球科学与信息物理学院,长沙 410083;2.重庆市地理信息和遥感应用中心,重庆 401147)
随着我国北斗三号卫星导航系统(BDS-3)的全面建成,目前已形成全球卫星导航系统(GNSS)服务新格局.GNSS 在测绘、交通、电力、农业等领域逐渐发挥重要作用,设备需求量随之增加,并逐步向低成本高精度方向发展;另一方面,随着智能手机和芯片技术的发展,如今智能手机中的卫星导航定位能力逐步凸显,成为大众位置服务的基石,同时也使得手机成为使用最普遍的一类GNSS 设备.2016 年谷歌公司开放了Android 智能终端的GNSS 原始观测值[1],用户可直接获取伪距、载波等观测数据,为开展手机高精度定位算法研究带来了便利,同时也为手机应用领域的拓展创造了机遇.
目前已有较多学者开展了手机GNSS 高精度定位的研究.REALINI 等[2]最早运用Android 智能终端GNSS 原始观测值进行了定位测试,结果表明运用相对定位技术时其精度可达亚米级.ZHANG 等[3]采用载波相位历元间差分滤波的方法,也表明手机可达亚米级定位精度.GENG 等[4]和WEN 等[5]使用外接测量型天线,实现了模糊度固定,并达到了厘米级精度.但以上大多数研究都是利用手机应用程序(APP)记录GNSS 观测数据,再进行事后解算,真正在手机终端实现的实时高精度定位软件产品还较少.而手机本身具有良好的网络通讯和数据运算能力,完全具备运行高精度定位软件的条件.对此,陈秉柱等[6]开发了一款手机广域精密定位软件,结果表明,手机广域精密定位收敛后精度可达亚米级.汪亮等[7]以及郭斐等[8]都开发了一款手机实时精密单点定位(PPP)软件,结果表明PPP 结果优于手机自身位置精度.但PPP 相对于实时动态(RTK)定位技术存在收敛时间和精度上的不足,鉴于RTK 定位技术在实际应用中更广泛,且手机RTK 定位技术的研究较少,开展手机RTK 高精度定位研究更具有实用意义.
在手机中采用RTK 定位技术,有望实现连续稳定的亚米级定位,进而满足车道级导航精度要求.在一些低精度需求的专业应用领域,如地理信息采集、国土巡查和地质调查等应用中,一般只需亚米级精度,采用手持GNSS 接收机即可满足需求[9].如今在手机GNSS 定位性能逐步提升的情况下,有望采用手机RTK 定位代替传统手持GNSS 接收机,以方便作业和节省生产成本.总之,不论是在民用导航中,还是在低精度专业测绘应用中,手机RTK 定位都将发挥重大作用,具有重要的应用前景.因此,为充分利用手机GNSS 原始观测值和发挥RTK 高精度定位技术的优势,本文以自主开发的手机RTK 定位APP 为载体,针对不同应用领域,选择典型场景和条件进行应用试验,以评估将手机作为专业级应用设备的可行性.
搭载Android 7.0 以上版本操作系统的智能终端可通过Android.location 应用程序接口(API)获取GNSS 类中存储的字段信息,这些信息可用于生成伪距、载波相位等观测值,主要字段信息如表1 所示[1].
表1 Android API 中GNSS 原始测量值主要字段
1.1.1 伪距获取
首先通过时间相关字段信息,计算各导航信号在相应时间系统内的接收时刻tRx(周内纳秒)和信号发射时刻tTx(周内纳秒):
式中:TS为其他卫星系统与GPS 之间的时间系统差异.在统一的时间基准下,根据手机接收到GNSS 信号及卫星端发射信号时刻之差,可计算出信号传播时间,进而计算出伪距观测值P,即
式中,c为光速.
1.1.2 载波相位获取
载波相位φ由历元之间的伪距增量计算得出
式中,λ 为载波波长.在GNSS 类中,还通过Accumulated DeltaRangeState 字段指示载波记录状态,如表2 所示.当被标记为2 或4 时,ADR记录值将不连续,均视为发生了周跳,并以失锁标识符(LLI)形式输出.
表2 载波相位记录状态
1.1.3 多普勒获取
多普勒D由伪距率计算得出,忽略接收机和卫星钟频率等误差时,可表示为
1.1.4 载噪比获取
载噪比(C/N0)可直接由字段Cn0DbHz 得到,单位为dB-Hz.手机跟踪GNSS 信号具有较高的灵敏度,C/N0 过低的GNSS 信号也将被接收,应设置适当的C/N0 阈值来控制数据质量.
1.1.5 伪距和载波的不一致性处理
研究发现,利用上述方法直接计算得到的伪距和载波相位之间存在随观测时间延长而变大的差值,如图1 所示,其原因是手机中采用了不同的钟来跟踪测码伪距和载波[10].
图1 手机中伪距与载波观测值的不一致性
为保证输出观测数据的完整性,本文采用简单的钟差补偿方法来消除此差异,进而得到补偿后的伪距观测值Pnew,即
式中:上标 s 为卫星标识;Δ为补偿钟差(换算成距离单位),理论上同一历元伪距和载波之间的钟差差异相同,其数值取当前历元所有伪距减去载波相位距离的平均值,即:
式中,n为当前历元观测值个数.
1.2.1 函数模型
RTK 定位采用双差函数模型,双差后的观测方程可表示为:
式中:Δ r 为双差符号;I为电离层误差;T为对流层误差;N为整周模糊度;ε 为观测噪声.双差可消除卫星星历误差、接收机钟差误差,在短基线下(<10 km),可进一步消除电离层和对流层误差,主要用于多路径误差和测量噪声.因在双差过程中消除了绝大部分误差,因而一般情况下通过相对定位可获得高精度的定位结果.
1.2.2 随机模型
在GNSS 数据处理中,验前随机模型可采用等权模型、高度角模型和C/N0 模型.对于高精度GNSS设备,其观测值误差与卫星高度角成负相关,故一般采用高度角定权[11].文献[12]研究发现手机中GNSS观测值精度与C/N0 的相关性比与高度角更强,因此针对手机GNSS 数据处理使用C/N0 定权更合理.基于C/N0 的随机模型有多种形式,本文采用顾及双频C/N0 差异的SIGMA-Δ 模型[13],即
1.2.3 参数估计
在建立函数模型和随机模型后,再进行参数估计.考虑到手机GNSS 观测值精度低,粗差和难以探测的小周跳较多,本文采用抗差卡尔曼滤波方法估计坐标参数,以期获得更平滑的定位结果.传统的抗差卡尔曼滤波根据验后残差调整观测值权重,需进行多次迭代滤波计算,增加了计算负担,不便于实时应用.本文利用观测值预测残差直接调整权,以一次滤波实现抗差,具体原理可参见文献[14].
此外,在数据质量控制方面,通过高度角、C/N0阈值筛选参与定位解算的观测数据,以接收机自主完好性监测剔除伪距粗差,采用LLI 因子、多普勒、伪距-相位组合等方法探测周跳.手机RTK 定位流程如图2 所示.
图2 手机RTK 定位流程
将手机作为RTK 定位终端可由两种方式实现:①由手机获取GNSS 观测值,并直接在手机上进行实时定位解算、展示、存储;②采用云-端模式,即在手机端采集GNSS 数据,将数据通过网络发送至云端,由云端解算完成后,再将结果返回至手机端,由手机展示定位结果.其中,方式②处理效率高,但对网络通讯能力的要求更高.考虑到如今智能手机本身已有强大的计算和存储能力,完全满足方式①的环境要求,因此本文按方式①实现手机RTK 定位.以Android Studio 为开发平台,使用Java 和C 语言完成APP 开发,如图3 所示APP 设计分为四个模块:
图3 手机RTK 定位APP 框架设计图
1)观测值解析.从API 中获取原始GNSS 类字段信息,经解析生成伪距、载波相位等观测值,用于实时定位解算和输出观测值文件.
2)基准站数据和星历获取.基准站差分数据以美国海事无线电技术委员会(RTCM) 格式,通过互联网RTCM 传输(NTRIP) 技术从数据中心实时获取.本软件采用单基准站RTK 技术,故只需连接一个基准站.
3)定位解算.RTK 定位解算是APP 的核心,其算法流程如图2 所示.为增加核心算法的可移植性和简化开发流程,将经过整个定位模块开发完成后封装为一个C 语言动态库文件,并直接在Java 中运用Java 本地接口(JNI)技术调用该库文件.
4)结果展示和输出.通过星空图、三维坐标等方式展示观测数据和定位结果状态,针对大众应用将坐标显示到地图上实时展示用户位置和移动轨迹,针对测量等专业应用设计单点测量和坐标转换功能.将RTK 定位结果和手机本身内置芯片的定位结果保存为文本文件,同时可将观测值以接收机无关的交换格式(RINEX)输出,便于事后解算和分析.
APP 设计分为定位设置、定位状态、地图跟踪和工具4 个页面,主界面如图4 所示.
图4 手机RTK 定位APP 主界面
为检验该APP 的RTK 定位性能,在静态开阔条件下使用两台小米8 (简称MI8 #1、MI8 #2)手机进行1 h 实时定位测试.流动站与基准站之间的基线长约0.5 km,其中,基准站数据源来源于自主架设的单基准站,通过NTRIP 协议实时播发RTCM 数据,流动站精确坐标利用测量型接收机通过事后RTK 方式得到.为保证信号接收充分,两台手机均采用手机支架竖直放置,如图5 所示.
图5 静态条件下手机RTK 定位测试(左:MI8 #1,右:MI8 #2)
在测试过程中,主要使用北斗卫星导航系统(BDS)/GPS/ Galileo 三个系统进行组合定位.具体解算参数设置见表3 所示.
表3 手机RTK 解算参数设置
将APP 定位结果与手机内置芯片解和参考接收机RTK 坐标结果进行对比.当手机RTK 在东(E)、北(N)、天顶(U)三个方向误差均小于0.2 m 时,视为收敛.定位结果如图6 和表4 所示,从测试结果可以看出,手机APP 得到的RTK 定位结果精度明显高于内置芯片解,收敛后精度约在1 dm,N 方向可达厘米级,而芯片解具有较大的系统偏差.手机内置芯片解一般采用多源传感器融合单点定位,具有较高的平滑度,但随着误差累积,偏差会进一步加大.另外,测试结果表明,两台小米8 手机的实时定位结果具有一致性.
图6 静态条件下手机RTK 与内置芯片解对比
表4 静态条件下手机RTK 定位测试统计结果 m
以自主开发的手机RTK 定位APP 为载体,针对不同应用领域,选择典型应用场景和条件进行应用试验.模拟RTK 导航和测量时,为便于获取参考坐标,将小米8 手机和测量型天线同时安置于对中杆上进行同步实时定位,如图7 所示.
图7 模拟RTK 测量装置
3.2.1 高精度导航应用试验
手机本身具备大众导航功能,但手机内置芯片解精度往往较低,本节采用手机RTK 模拟行人导航和车辆导航.
1)行人导航
图8 中行人导航实验场址为中南大学某体育场,环境相对开阔.将参考接收机天线和手机固定于对中杆上,行人手持对中杆步行导航,在同一场景进行了两次试验,每次试验匀速绕体育场行走2 圈.
图8 行人导航轨迹(黄:第一次;红:第二次)
手机RTK 及手机内置芯片解结果如图9 所示,统计结果如表5 所示,可以看出两次试验中平面方向精度可达亚米级,高程方向精度在2 m 以内,第二次精度高于第一次.第一次试验时由于手持对中杆高度较低,受到一定程度的遮挡,接收到的GNSS 信号质量差,故RTK 定位结果波动较大,但仍远优于芯片解.手机中的芯片解因采用了多源融合,在稳定性方面具有优势,但N 方向产生了米级的系统偏差.第二次试验RTK 和芯片解的精度和稳定性较第一次都有所提升,说明两者都依赖接收到的GNSS 信号质量,但此时RTK 结果在精度和稳定性方面均优于芯片解.
图9 行人导航误差
2)车辆导航
如图10 所示,车辆导航实验场址为中南大学校园内道路,道路包含高楼、树木、水面等强多路径和信号遮挡路段,以及曲线等常规道路条件.分别选取了不同的线路进行了2 次试验,线路长度分别为2.5 km和2.2 km.采用电动摩托车作为测试车辆,在行驶过程中车辆保持匀速.
图10 车辆导航轨迹(黄:第一圈;红:第二圈)
手机RTK 及内置芯片解结果如图11 所示,统计结果如表5 所示.可以看出,在车载情况下,受到的观测条件相比行人更复杂,此时手机RTK 也基本能够保持在平面亚米级、高程1~2 m 的精度水平.两次试验中,RTK 结果精度均高于芯片解,尤其是在水平方向,而芯片解稳定性略高,第二圈的第200 和550 历元处RTK 结果存在小跳点,可能是由周跳导致.
表5 行人和车辆导航RMS 统计 m
图11 车辆导航定位误差
3.2.2 低精度测绘应用试验
本节采用手机RTK 定位APP 模拟低精度测绘应用,以单点测量的方式开展碎部测量、地理信息采集等工作.在校园内选取了5 个测量控制点和11 个井盖作为待测地物.模拟RTK 测量作业时,人手持对中杆立于待测点位静置约10 s 后,通过APP 单点测量功能记录点位坐标.
2 处测量位置的点位布置情况如图12 所示,均包含开阔和遮挡环境点位.
图12 测量点位示意图
测量结果平面坐标和点位误差如表6 所示,其中精度统计中误差为误差绝对值的均值.可见,在点测量时,多数点位平面误差在亚米级,个别点在1~2 m,高程误差在1~4 m,其中平面统计精度为1.1 m,高程为2.4 m.点测量的精度略低于行人和车载,其主要原因是,点测量时受到的人员和环境干扰更复杂,设备运动状态多变,降低了RTK 定位精度.整体上看,手机RTK 一般可达1 m 的平面精度,在观测条件较好时可达到亚米级精度,基本满足亚米级到米级的地理信息采集和调查作业精度要求.
表6 手机RTK 测量坐标结果 m
本文基于单站RTK 定位技术,设计并实现了一款手机RTK 定位APP,并开展了手机RTK 高精度导航定位应用试验.利用谷歌公开的Android 应用程序接口,获取手机GNSS 原始观测数据,直接在手机端实现RTK 高精度定位.在静态条件下,APP 实时定位精度可达1 dm;将RTK 定位APP 进行应用试验,在行人和车载动态条件下,可达平面亚米级、高程1~2 m 的精度水平,且RTK 定位精度远高于内置芯片解,但稳定性略差于内置芯片解;使用手机模拟RTK 测量,结果表明:RTK 结果平面精度约在1 m,高程方向误差在米级,基本满足亚米级到米级的地理信息采集和调查等应用的需求,融合手机中MEMS等传感器后有望进一步提升RTK 定位精度和稳定性.文中方法和试验结论可为相关研究提供参考借鉴.