LuatOS AGPS 辅助定位开发实战教程

电子说

1.4w人已加入

描述

为解决传统 GPS 定位慢、功耗高的痛点,AGPS 技术通过辅助数据注入提升效率。本教程以 LuatOS 开发环境为基础,循序渐进地讲解 AGPS 辅助定位的开发流程,包括 AGPS 服务器对接、数据解析、定位模块调优等实战环节,附带完整代码与调试技巧,助开发者快速上手。

 

一、AGPS 概述
 

AGPS(Assisted GPS,辅助全球卫星定位系统)通过移动网络预先获取卫星星历、时间等辅助数据,可大幅缩短 GPS 首次定位时间。LuatOS 提供 AGPS 原生支持,适用于物流追踪、车载定位等场景。

1.1 GPS、WiFi、基站、AGPS 几种常用定位原理介绍与区别

GPS

GPS(Global Positioning System)即全球定位系统,它是由美国研究的一种定位方式,特点是:不需要 SIM 卡,不需要连接网络,只要在户外,基本上就能随时随地的准确定位。但是 GPS 启动后搜索卫星的时间比较多,一般需要2分钟左右(俗称冷启动) 冷启动包括: 1.GPS 初次使用 2.GPS 电池耗尽 3.关机状态下移动 1000 公里以上的距离或持续关机超过 4 小时。

原理:接收机接收 GPS 卫星广播,通过解析可见 GPS 卫星的位置、距离等信息以及相应算法得出自己的位置信息。

优势:定位精度高,只要能接收到四颗卫星的定位信号,就可以进行定位。 缺点:GPS 受天气和位置的影响较大。当遇到天气不佳的时候、或者处于高架桥/树荫的下面,或者在高楼的旁边角落、地下车库、室内或露天的下层车库(或者简单地说当见不到天空的时候),GPS 的定位就会受到相当大的影响,甚至无法进行定位服务。

注意:各国定位系统有:中国北斗、美国 GPS、俄罗斯 GLONASS、欧洲伽利略等,统称卫星定位。

 gps 模组定位精度:3~5 米

LBS(基站)定位

基站包括移动、联通和电信基站。基站定位是通过移动通信的基站信号差异,通过一定的算法来计算出手机所在的位置,取决于定位地点附近所处的基站覆盖密度,如果基站多,定位则准确,如果是山区,基站少,则定位就不那么精确;LBS 定位必须联网,手机处于 SIM 卡注册状态(飞行模式下开 wifi 和拔出 SIM 卡都不行)。

原理:运营商蜂窝基站的位置信息都是固定的,通过接收一个或多个基站信号终端,再根据信号强度及基站位置进行推算自身位置

优点:方便,因为它是通过 SIM 卡接收基站信号进行定位的。理论上说,只要计算三个基站的信号差异,就可以判断出手机所在的位置。因此,只要用户手机处于移动通信网络的有效范围之内,就可以随时进行位置定位,而不受天气、高楼、位置等等的影响。

缺点:通过计算基站信号差异而得出的位置坐标值,很明显地逊于 GPS 的定位精度,受环境影响较大,在郊区和农村可以将移动台定位在 10~20 米范围内,在城区由于高大建筑物较多,电波传播环境不好,信号很难直接从基站到达移动台,一般要经过折射或反射,因此定位精度会受到影响;其次是使用范围较窄,LBS 虽然不会受到天气、高架桥或高楼的影响,但如果超出手机的服务范围,或者手机所处的基站数量不足,则无法进行 LBS 定位,从这一点上说不太适合野外使用。

定位精度:10-2000 米。

WIFI 定位

Wifi 定位,顾名思义,周围必须有 wifi 才可以!WiFi 定位的目的是解决室内精确定位,原理类似基站定位。WiFi 定位的条件是:1、必须具有 WIFISCAN 功能,可以扫描到周围 wifi 的 mac 地址。2、必须能上网,移动数据或者 wifi 联网皆可。

原理:

每一个无线 AP 都有一个全球唯一的 MAC 地址, WiFi 定位靠的是侦测附近周围所有的无线网络基地台 (WiFi Access Point) 的 MAC 地址,去比对数据库中该 MAC 地址的坐标,交叉计算出所在地。

优点: 

1.定位精度高,wifi 密集人流多的地方相当精确; 

2.速度快; 

3.周围的 wifi 即使连接不上也能定位。在不依赖外部设备的情况下,没有比 WIFI 定位更精准的室内定位方式,室内定位不精准,偏二三十米远,这个问题当前科技无解。

缺点: 

1.依赖wifiscan! 没有 wifiscan 就不能定位; 

2.必须处于联网状态。 

3.用户被迫共享了一点流量

精确度:10~200 米

AGPS 辅助定位

AGPS 是辅助 GPS 定位的一种方法。AGPS 和 GPS 是一样的,只是加上网络的辅助而已,定位时,必须有 GPS 模块存在,如果没有 GPS 模块,这种定位是不起什么作用的。A-GPS 定位是用来加快定位速度的,由于 GPS 冷启动时,搜星速度很慢(需要把头上二十多颗卫星挨个搜一遍),大约 2 分钟才能搜到,合宙定位模组冷启动 35s 左右就可以定上位。增加了 AGPS 定位之后可以利用基站大体定位下你所在的位置,然后通过网络将这个位置发送到服务器,服务器根据这个位置将此时经过你头顶的卫星参数(哪几颗、频率、位置、仰角等信息)反馈给你的定位设备,设备上的 GPS 就可以很有目的的去搜索卫星,此时你的搜星速度大大提高,几秒钟就可以定位。

原理:

接收机接收 GPS 星历文件,通过解析可见 GPS 卫星的位置、距离等信息以及相应算法得出自己的位置信息。

和 GPS 相比比优势: 

1.搜星定位快,不管是冷启动还是热启动都秒定

2.有效减少设备的电量消耗 

3.缓解弱 GPS 信号情况下无法定位或精度降低的问题 

4.对移动设备的计算能力要求更低。

缺点: 

1.必须联网,如果你的设备不能上网,或是停机了身边又没有 wifi,是没法应用 AGPS 达到秒定效果的。 

2.必须有 AGPS 位置服务器的支持 3.与 GPS 一样,仍无法完美解决室内(室内无法接收 GPS 信号)定位的问题。

精确度:3~5 米

二、演示功能概述

本教程将演示如何使用 Air8000 的 GPS 功能,使用 agps 实现快速定位功能。agps 实现流程图如下:

LuatOS

Air8000 的 AGPS 实现原理为:通过蜂窝基站或 Wi-Fi 定位获取粗略位置坐标,再结合网络下发的卫星辅助数据(星历),显著缩短卫星信号搜索时间并加速定位解算,最终实现快速精准定位。

注意:GPS 星历文件能保持 4 小时,定位成功后会自动更新星历。

由上面原理可知 Air8000 使用 agps 功能需要访问两个服务器,基站定位服务器和星历下载服务器。(注意:如果使用的是专网卡,需要将下面两个服务器配置在 sim 卡的白名单中,基站定位服务器 和[星历下载服务器] (download.openluat.com)。)

三、准备硬件环境

1、 Air8000 核心板

2 、GPS 天线

四、准备软件环境
 

1. 烧录工具 Luatools;

2. 内核固件文件(底层 core 固件文件):LuatOS-SoC_V2005_Air8000;此页面有新版本固件的话选用最新版本固件。

3. LuatOS 需要的脚本和资源文件:https://gitee.com/openLuat/LuatOS/tree/master/module/Air8000/demo/GPS

4. lib 脚本文件:使用 Luatools 烧录时,勾选 添加默认 lib 选项,使用默认 lib 脚本文件;

准备好软件环境之后,接下来查看如何烧录项目文件到 Air8000 开发板中,将本篇文章中演示使用的项目文件烧录到 Air8000 开发板中。

五、GPS 软硬件参考

5.1 API 接口介绍

本教程使用 api 接口为:

https://docs.openluat.com/osapi/core/libgnss/

5.2 GPS 硬件设计

GPS 在硬件设计中天线部分是比较关键的,可以参考这篇文章:Air8000 GNSS 硬件设计指导:https://docs.openluat.com/air8000/luatos/hardware/design/gnssant/

在核心板上内置 GNSS ipex 连接器,同时内置 3.3V LDO, 用于有源天线供电。因此可以使用外部有源天线直接连接 GNSS 连接器。

LuatOS

注意:目前有源天线供电仅支持 3.3V 有源天线,请注意连接的有源天线的供电范围。
 

六、代码示例介绍
 

6.1 软件代码介绍

LuatOSLuatOS

6.2 效果展示

可以看到没有使用 agps 辅助定位需要 31 秒左右才能定位成功。使用 agps 后,注入星历数据后 3s 左右就能定位成功

LuatOSLuatOS

七、总结

本教程演示了 Air8000 如何使用 AGPS 来进行快速定位,并讲解了 AGPS 的实现原理以及注意事项。

八 、GPS 常见名词解释

[1]GNSS:混合定位,不同于 GPS 定位,狭义上讲的 GPS 系统,单指美国的 24 颗 GPS 卫星以及地面上 1 个主控站、3 个数据注入站和 5 个监测站及作为用户端的 GPS 接收机组成的一整套系统。GNSS 是指通过观测 GNSS 卫星获得坐标系内绝对定位坐标的测量技术。 GNSS 是所有导航定位卫星的总称,凡是可以通过捕获跟踪其卫星信号实现定位的系统,均可纳入 GNSS 系统的范围。国内用户接触最多的应该是美国的 24 颗 GPS 卫星,以及中国的北斗卫星(截至到 2023 年 5 月 17 日 10 时 49 分,中国已有五十六颗北斗导航卫星),其余还有俄罗斯 GLONASS、欧盟 GALILEO、 日本的准天顶卫星系统、印度的 IRNSS(独立的区域导航系统,覆盖印度领土及周边 1500 km 范围内,提供定位精度优于 20 米的服务)等其余定位系统。

[2]冷启动:指在一个陌生的环境下启动 GPS,直到 GPS 芯片和可用卫星联系并且计算出坐标的过程。以下几种情况开机均属冷启动:

1. 初次开机使用时;

2. 电池耗尽导致 GPS 芯片内星历信息丢失时;

3. 关机状态下将接收机移动 1000 公里以上距离。

也就是说,冷启动是通过硬件方式的强制性启动,因为物理距离较远,或者时间间隔很久,GPS 芯片已经把内部的星历信息清除掉,或者内部的星历信息完全失效。GPS 接收机失去卫星参数,或者已经存在的参数和实际接收到卫星参数相差太多,导致 GPS 芯片无法靠星历快速搜星,所以必须从新获得卫星提供的坐标数据。

这也是很多定位器(譬如车载定位器)启动后,搜星时间长、定位耗时久的原因

[3]热启动:指在上次关机的地方没有过多移动过,且距离上次定位时间小于 1 个小时。再次定位时,GPS 芯片通过软件的方式,可以继续使用之前的星历快速搜星,实现秒定位。PS:普通的 GNSS 芯片,星历最长有效期为 12 小时,故此星历过期后,GPS 芯片无法使用星历实现快速定位。

[4]温启动:指距离上次定位时间超过 1 个小时的启动,搜星定位时间介于冷启动和热启动之间的情况。

譬如某时间使用过 GPS 定位实现 3D FIX,GPS 芯片内部生成星历(或者外部灌入 AGPS 数据),那么在 1 小时内启动 GPS 芯片进行定位的行为就属于温启动。启动后,GPS 芯片首先会输出上次的位置信息。因为上次关机前的经纬度和高度已知,但由于关机时间过长,卫星状态发生了变化,之前 3D FIX 时的卫星接受不到了,所以星历中参数中的若干颗卫星已经和 GPS 接收机失去了联系,GPS 芯片需要继续搜星补充位置信息,所以搜星的时间要长于热启动,短于冷启动。

[5]星历:是用于描述太空飞行体位置和速度的表达式———两行式轨道数据系统。卫星、航天器或飞行体一旦进入太空,即被列入 NORAD 卫星星历编号目录。列入 NORAD 卫星星历编号目录的太空飞行体将被终生跟踪。卫星、火箭残骸等飞行体成为太空垃圾时,仍被列入 NORAD 卫星编号目录,直到目标消失。卫星星历以开普勒定律的 6 个轨道参数之间的数学关系确定飞行体的时间、坐标、方位、速度等各项参数,具有极高的精度。卫星星历能精确计算、预测、描绘、跟踪卫星、飞行体的时间、位置、速度等运行状态;能表达天体、卫星、航天器、导弹、太空垃圾等飞行体的精确参数;能将飞行体置于三维的空间;用时间立体描绘天体的过去、现在和将来。卫星星历的时间按世界标准时间(UTC)计算。卫星星历定时更新。

[6]AGPS:辅助全球卫星定位系统(英语:Assisted Global Positioning System,简称:AGPS)指的是一种 GPS 的运行方式。它可以利用地面基地站的资讯,配合传统 GPS 卫星,让定位的速度更快

[7]有源天线:通常对于设备或车载机而言,由于设备与 GPS 接收模块之间往往有距离,考虑到安装的便利性可能会有超过 1 米的距离,在这种情况下我们只能选择有源 GPS 天线,由于天线长度的信号衰减需要进行补偿,一般有两级低噪声放大器(LNA)进行天线前端信号放大,放大后的信号经电缆输出,电缆同步提供 LNA 所需要的直流电压

由于天线收到的信号在有源天线接受头内完成信号接受与天线放大,并且远离 GPS 设备或其他电器设备,干扰源最小,而且安装位置由于天线距离延长安装位置可以选择非常理想的环境,所以实际使用时往往感觉信号较强

[8]无源天线:使用无源 GPS 天线时,由于只有一个陶瓷片接收天空的卫星信号,直接连接到模块的 RF-IN 脚,这种联接方式结构简单,而且标准的 25254 的陶瓷片成本低廉,技术成熟,占空体积小,适合于强调紧凑型空间 GPS 导航产品,蓝牙 GPS,手机 GPS 及其他小型 GPS 消费类产品。

这种天线的布局是从天线的引脚直达模块的 RF-IN 脚,这根导线需要进行 50 欧阻抗匹配,而且在天线附近不能有电磁干扰,对 PCB 的设计及整机的 EMI 设计要求较高,但如果设计得优良的无源天线 GPS 产品同样有非常好的表现效果,而且功耗比较低,无需考虑天线自身的功耗。

[9]半边天以及开拓地带:GPS 卫星运行在距地 36000KM 的轨道上,信号强度相当弱(GPS 卫星的功率有多大?)。GPS 的民用 C/A 码从卫星发出来的时候信号只有 27W 左右,达到地球的时候在-158.5dBW 以上。用对数形式表示可能不直观,换算成十进制等于将近 0.0000000000000001W,相当小。所以,只有室外开阔的、无遮挡、晴好的地方,才能搜到更多的卫星,SNR 值更高(阴天都会有影响哦),GPS 芯片才能更快、更好的实现定位。

半边天一般指楼宇内窗边,打开窗户,只能搜到一半天空的卫星。

[10]定位纠偏:OpenLuat 的所有 GNSS 模块均使用国际标准 WGS-84 坐标系,所以开发者在国内常见地图定位时,会发现与实际情况有几十米甚至上百米的误差。这并非模块问题, 而是国内地图采用了非标坐标系所致。 国内常见地图如高德地图使用 GCJ-02 坐标系, 百度地图使用 BD-09 坐标系,故此开发者需要对模块输出的经纬度进行加偏处理,才能在国内的地图上实现精确定位,坐标转换可在合宙提供的坐标转换网站上直观的展示处理

[11]重捕:是指接收终端在丢失所接收信号状态下,从重新接收到信号开始,至终端设备输出符合定位精度要求的定位结果所需的时间。失锁重捕时间反映了在接收机信号失锁,定位中断后重新恢复定位的速度。失锁重捕时间短的接收机在易中断环境中(如隧道等)的定位性能好,因此失锁重捕时间可以有效评估车载终端的性能

[12]低噪声放大器:主要用于接收信号的前端,放大天线从空中接收到的微弱信号,降低噪声干扰,以供系统解调出所需的信息数据


今天的内容就分享到这里了~

审核编辑 黄宇
 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分