基于Android系统的高精度定位SDK方案

Posted 格格巫 MMQ!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Android系统的高精度定位SDK方案相关的知识,希望对你有一定的参考价值。

内容简介

1、android经典架构

2、Android高精度SDK架构设计说明

3、Android高精度SDK系统层技术设计详解

课程实录

一、Android经典架构

Android系统的架构分为四层,分别是应用层、应用框架层、系统运行库层和Linux内核层。其中,跟定位有关的是应用层,以及应用框架层中的“Location Manager”,千寻位置提供的高精度SDK方案,主要也是应用在这两个地方。

二、Android高精度SDK架构设计说明

千寻位置提供的高精度SDK,在架构设计上与Android系统一脉相承:最顶端是用户接口层,承担着跟用户对接的功能;随后是核心业务层,实际应用场景比较复杂;下一层是算法适配层;再下一层是JNI(Java Native Interface),它主要负责上层的JAVA语言和算法层C语言之间的“翻译工作”;最底层则是算法层。

开发者可以从应用层或应用框架层,调用千寻位置提供的高精度SDK。

△千寻位置Android高精度SDK架构设计图(简版)

为了方便开发者进行集成,这里将重点介绍用户接口层、硬件交互层以及算法层的设计边界。

1)用户接口层

千寻位置的Android高精度SDK,在用户接口层的设计具备以下特点:

遵循LMS系统API设计规则,开发者无需额外学习便可集成;
采用Builder设计模式,可高效实现参数配置;
内部实现异步调用,不对主线程造成负担;
最多可以支持20个并发定位请求。

2)硬件交互层

在使用千寻位置的Android高精度SDK时,有时会涉及到与硬件交互的部分。这部分内容具体体现为:SDK从芯片获取一些跟定位相关的原始数据,包括Nmea数据、原始观测量、IMU传感器数据以及芯片发出的控制指令等,而这些数据的传输可通过USB、串口、蓝牙或wifi等方式进行。

△千寻位置Android高精度SDK-硬件交互层(设计图示)

3)算法层

终端原始观测数据和千寻位置差分服务数据的解算,在算法层进行,涉及到的核心算法有PVT(定位、定速、授时)、RTK(实时载波相位动态差分)、RTD(实时伪距差分)、DR(惯导)、PPP(精密单点定位)、AGNSS(辅助全球导航卫星系统)等。

△千寻位置Android高精度SDK-算法层(设计图示)

三、Android高精度SDK系统层技术设计详解

如果Android设备的APP应用集成高精度定位服务,那么,直接用Android标准API调用千寻位置提供的SDK即可。但如果是系统或终端设备厂商,希望系统级提升定位精度的话,就要在应用框架层调用SDK了。

在Android的应用框架层里,跟定位相关的有三部分,分别是GLP(Gnss Location Provider)、NLP(Network Location Provider)、FLP(Fused Location Provider)。而千寻位置的SDK方案则是基于GLP来实现系统级高精度定位的。

△Android的应用框架层跟定位相关的是:GLP、NLP和FLP

Android系统集成千寻位置的SDK方案后,该SDK下的技术框架QXGLP将代替GLP向系统注册定位服务,等同于接管了系统的GLP能力。QXGLP承担着任务调度、数据注入、位置结果融合,Nmea结果融合等职责。对于QXGLP的绝大部分修改由千寻位置内部代码完成,并封装成独立模块,通过独立脚本编译,无需开发者参与。

下面为大家介绍具体的技术组合方式:

1)技术组合:GNSS+SDK+算法

首先,Android系统的GNSS模块会生成原始的定位数据,包括Nmea、原始观测量等;接着,系统将这些数据注入到千寻位置的Android高精度SDK, 再到算法解算,最终通过SDK输出高精度定位结果到应用层。开发者想要验证这条通路也非常方便,但要注意,安卓系统必须是7.0以上的,这样才能从应用框架层拿到符合算法要求的GNSS数据。

△技术组合方式1:GNSS+SDK+算法

2)技术组合:芯片+SDK+算法

与第一种技术组合方式不同,采用“芯片+SDK+算法”的技术组合方式,数据源不是从原生系统中获取,而是通过增加一个定位芯片, 让SDK通过驱动层从这个定位芯片中获得数据,进而进行解算输出。二者之间的通讯通过串口来实现。

3)技术组合:外接设备+SDK+算法

第三种技术组合方式,最大特点是定位数据源既不来自系统原始数据,也不来自芯片,而是来自于外接的定位设备。数据可通过USB、蓝牙或wifi等方式传输给SDK,算法进行解算后输出高精度定位结果,最终给到应用层。

△技术组合方式3:外接设备+SDK+算法

互动问答

LeslieXong:为什么Android上要有那么多并发定位请求?是指不同的APP同时请求吗?

黄成钟:是指同一个APP的定位请求。正常情况一个APP调用应该不会同时有20个这么多,只是有一些开发者在集成SDK时,存在技术上的不规范,导致APP的调用请求堆积,出现位置数据输出异常的情况,这里只是强调一下,我们的上限是20,否则就会调用失败。

坤:千寻位置现在开放 Android SDK了吗?需要外接硬件吗?

黄成钟:由于这款SDK的集成效果,跟硬件兼容性有很大关系,所以千寻位置暂时没有形成标准化的SDK对外公开。目前,这款SDK主要通过商务人员对外提供,如果你有需要,可以先联系千寻位置的客服。刚刚介绍了3种技术组合方式,第三种就涉及外接硬件,前两种不需要。

Enlighting:对卫星信号质量要求高吗?

黄成钟:如果需要得到高精度的定位结果,卫星信号的平均CN0要达到30以上。

赵存瑜:除了Android的SDK,咱们有没有针对物联网操作系统的SDK?

黄成钟:目前千寻位置提供的SDK包括算法支持嵌入式、Linux以及Android系统。如果你所说的物联网操作系统是基于安卓系统5.0以上的版本,就可以进行适配。

以上是关于基于Android系统的高精度定位SDK方案的主要内容,如果未能解决你的问题,请参考以下文章

[4G/5G/6G专题基础-155]: 5G 3GPP高精确室内定位原理AI方案概述

高精度定位系统精细测距定位

测绘中的RTK和GPS有啥区别?

用百度SDK在Android中获取本机的经纬度,结果总是返回0.0有没有人和我遇到一样的情况呀

工厂人员定位系统方案核心功能

Android利用百度地图SDK定位问题,如何更加精准