LuatOS:GNSS定位原理与实践指南
在智能追踪、共享设备和车联网等应用场景中,精准的位置服务依赖于高效的GNSS定位能力。基于LuatOS平台,开发者可以通过简洁的API实现复杂的定位功能。本文将从GNSS的基本原理讲起,涵盖星历解析、多普勒效应、时间同步等关键技术点,结合LuatOS的开发实践,带您全面掌握GNSS应用开发的核心要领。
一、背景与内容概览
本篇将带大家了解一些 GNSS 的底层原理,并掌握其应用开发方法。
本篇文章主要包含以下部分:
1、GNSS 基础知识
2、GNSS 定位原理
3、四大 GNSS 星系
4、gnss 频段信息详解
5、室内定位限制
6、接收机和解算机科普
7、冷热启动科普
8、NMEA 数据详解
9、GNSS 进阶知识
10、辅助定位技术(AGPS)
11、影响定位精度的因素(静态和动态)
12、我们的 GNSS 测试软件
13、RTK 差分定位
14、一般 GNSS 测试方案
15、轨迹优化和滤波算法
二、GNSS 基础知识
2.1 GNSS 定位原理
GNSS 是利用人造卫星作为导航台,基于三角测量法,为全球用户提供三维坐标、速度和时间信息的空基无线电导航系统的技术
首先,由于地面需要的定位应用比较多,如果 GNSS 卫星一个个告诉地面应用"你在哪",那资源消耗非常多,且延时很大,GNSS 卫星承载能力有限,所以一般来说,GNSS 卫星都会以广播的形式,告诉地面应用"我在哪",由接收机通过下面的计算公式,自己解算出一个经纬度和时间

理论上的最简计算公式:
将地球近似的看成一个圆,以地球圆心为原点,建立空间直角坐标系,假设我们所在的的位置为(x,y,z),头顶参与计算的三颗卫星的坐标分别为(x1,y1,z1)、(x2,y2,z2)、(x3,y3,z3),在咱们学的高中知识中,在已知球心的情况下,可以通过已知的三个点到第四个点的距离,确定第四个未知点的坐标
(1) (x - x₁)² + (y - y₁)² + (z - z₁)² = r₁²
(2) (x - x₂)² + (y - y₂)² + (z - z₂)² = r₂²
(3) (x - x₃)² + (y - y₃)² + (z - z₃)² = r₃²
其中 r1 r2 r3 为这三个点到原点的距离,是一个固定值(GNSS 每一颗卫星的轨道高度是确定的)
但是由于 GNSS 接收机使用的时钟有误差,所以,还需要增加一个时间变量 δt,方程就变成了如下(c 为光速),c*δt 为时钟误差造成的距离误差。ρᵢ 为测量的得到的伪距,因为添加了一个时间变量,所以需要至少四个方程才能得到坐标,因为需要四个方程,所以至少需要四个点,才能确定坐标
(1) ρ₁ = √[(x - x₁)² + (y - y₁)² + (z - z₁)²] + c * δt
(2) ρ₂ = √[(x - x₂)² + (y - y₂)² + (z - z₂)²] + c * δt
(3) ρ₃ = √[(x - x₃)² + (y - y₃)² + (z - z₃)²] + c * δt
(4) ρ₄ = √[(x - x₄)² + (y - y₄)² + (z - z₄)²] + c * δt
而由于实际环境下,地球不是标准圆形,所以参与定位的卫星越多越好,上面的公式只是一个近似的理论公式,实际上解算的公式比上面的复杂的多,根据经验来看,至少需要参与运算的 GNSS 卫星有 8 颗的时候,才能定位成功。
2.2 室内定位限制
室内收不到 GNSS 信号,有多种原因,核心原因是 “卫星信号极其微弱,且无法穿透大部分建筑结构”。下面为大家详细讲解下这两种最根本的原因。
2.2.1 根本原因
根本原因一:信号本身“先天不足”
GNSS 信号从两万多公里高的卫星发射到地面,已经非常微弱。
信号强度对比:
结论:GNSS 信号是地球上最难被检测到的民用无线电信号之一,接收机犹如在电子噪声的海洋里打捞一根特定的绣花针。
根本原因二:建筑结构的“致命阻隔”

当微弱的信号遇到建筑时,会经历三种效应:
1、衰减:混凝土墙、金属龙骨、甚至厚玻璃都会吸收信号能量。穿透一堵承重墙,信号可能衰减 20-30dB,足以将本已微弱的信号埋没在噪声之下。
2、遮挡:建筑的屋顶和密集的楼板完全阻挡了直射信号。没有直射路径,接收机无法进行有效测量。
3、反射(多路径) :即使有信号通过窗户等缝隙进入室内,也大多是经过墙壁、家具多次反射的“间接信号”。这些信号路径更长、时间延迟混乱,会导致严重的定位错误(将你定位到墙外或镜像位置),比没信号更糟糕。
2.2.2 解决方法
因为 GNSS 在室内失效,催生了多种室内定位技术,它们原理不同,适用于不同场景:
2.3 接收机和解算机
在 GNSS 模组/芯片内部,实际上分了两个大块,一个叫接收机,还有一个叫解算机(一般解算机为一颗 M0 内核的 MCU)。
接收机是 “耳朵和话筒” ,负责接收卫星信号并进行基本测量。
解算机是 “大脑” ,负责处理这些测量值,计算出最终的位置、速度和时间。
接收机:信号的捕捉与翻译者
它位于处理链的最前端,核心任务是 “从模拟信号到数字数据”。
-
硬件核心:天线、射频前端芯片、基带处理芯片。
-
核心功能:
-
信号捕获与跟踪:在浩瀚的无线电噪声海洋中,找到并锁定每一颗 GNSS 卫星的微弱信号。
-
测量观测值:精确测量伪距(信号从卫星到接收机的传播时间)和载波相位(更高精度的相位测量)。
-
解调电文:从信号中解调出导航电文,获得卫星的轨道参数(星历)、健康状况、时间等信息。
-
输出:原始观测数据流,主要包括:伪距、载波相位、多普勒频移、解调出的导航电文。它不知道自己在哪,只负责提供精确的“测量尺子”和“卫星手册”。
解算机:定位的解谜者
它位于处理链的后端,核心任务是 “利用数据计算出结果”。
-
软件核心:导航解算算法(如最小二乘法、卡尔曼滤波)、误差修正模型、数据融合算法。
-
核心功能:
-
卫星位置计算:利用接收机提供的星历,计算每一颗卫星在发射信号时的精确空间位置。
-
误差建模与修正:对电离层延迟、对流层延迟、卫星钟差、相对论效应等进行建模和修正。
-
导航解算:将修正后的伪距作为“观测值”,将卫星位置作为“已知点”,通过几何数学方法(解一个空间方程组)计算出接收机自身的位置、速度和时间。
-
优化与融合:融合多系统(GPS/北斗/Galileo)数据,并可能结合惯性传感器(IMU)数据进行组合导航,提供更连续、可靠的解算结果。
-
输出:最终的定位结果,即经纬度、海拔、速度、精确 UTC 时间(PVT)。它知道“我们在哪”。
2.4 GNSS 星系
和 GPS 的不同点在于,狭义上讲,只有美国的卫星导航系统,才叫做 GPS,中国的卫星导航系统叫北斗,还有俄罗斯的格洛纳斯,欧盟的伽利略,包括日本和印度也有自己的卫星导航系统,这些卫星导航系统,统称为 GNSS。
2.5 GNSS 星系说明

2.6 GNSS 频段信息详解

2.7 冷热启动
“冷启动”和“热启动”是描述 GNSS 接收机初始定位速度和条件的两个核心概念,它们的区别就像电脑的“开机”与“唤醒”,夹在冷启动和热启动之间的 还有个温启动。
2.7.1 核心区别速览
2.7.2 冷启动详解
官方定义:接收机无任何有效的先验信息(或信息完全过期)。
“三不知”状态:
不知道自己在哪:没有大概位置,可能在地球上任何一点。
不知道现在几点:时间误差可能超过数小时。
不知道卫星在哪:没有有效的星历(卫星的精确轨道参数),或者星历已过期(通常 >4 小时)。
艰难的任务:接收机必须进行“全天空盲搜”。它需要:
在所有可能的射频通道上,尝试搜索所有可能的 GNSS 卫星信号。
从捕获到的第一颗卫星信号中,先解码出时间信息和粗略的历书(卫星的大概位置)。
利用这些信息,缩小范围去捕获其他卫星,并下载每颗卫星详细的星历(需 30 秒传输)。
集齐至少 4 颗卫星的星历和测量值后,才能解算第一个位置。
典型场景:你买了一个新导航设备,第一次在车里打开它;或者手机在飞行模式下跨洲飞行后开机。
2.7.3 热启动详解
官方定义:接收机保存了有效的先验信息,且时间、位置变化较小。
“三知”状态:
知道自己在哪:保存的位置与真实位置误差通常小于 5 公里。
知道现在几点:本地时钟误差小于 2 秒(通常由 RTC 实时时钟保持)。
知道卫星在哪:保存了有效的星历(通常 >1 小时)。
高效的任务:接收机可以“精准打击”。它直接:
根据已知的位置、时间和星历,精确计算出当前天空哪些卫星可见,以及它们的多普勒频移和伪随机码相位。
无需搜索,直接在这些精确的通道上同步捕获卫星信号。
快速测量伪距,几乎立即(秒级)解算出新位置。
典型场景:开车进隧道,信号中断几分钟后出来;或功耗要求较高且不需要一直定位的应用(宠物/人员定位器)。
2.7.4 温启动详解
官方定义:接收机保存了较为有效的先验信息,且时间、位置变化不大。
温启动的“三知一不知”状态:
知大概位置:上次定位的位置,误差一般在 5 公里内。
知大概时间:本地实时时钟(RTC)保持的时间,误差在数分钟内。
知卫星概位:有有效的历书,知道所有卫星的大致轨道和健康状况。
不知卫星精位:没有有效的星历(通常 > 2 小时)。星历是卫星的“精确到分钟的课表”,用于精确计算位置。
2.7.5 重要应用
省电设计关键:物联网设备(如共享单车、资产追踪器)的节电核心,就是尽可能让每次定位都处于热启动状态。这需要:
精确实时时钟:保持精确时间。
保存星历:定位成功后不立即断电,等待星历保存完成。
辅助 GNSS:通过网络快速获取星历,变冷启动为“热启动”。
用户体验:手机导航 App 启动快,正是因为它常年后台运行 GNSS 芯片,或频繁使用网络辅助,使其永远处于热启动就绪状态。
简单总结:冷启动是“从零开始找”,热启动是“按图索骥”。理解这两种状态,是设计任何低功耗、高可用 GNSS 应用的基础。
2.8 NMEA 数据详解
NMEA-0183 协议是 GNSS 接收机与外部设备(如电脑、显示器)通信的“通用语言”。它由一系列以“$”开头、以换行结束的 ASCII 字符串构成,每条语句承载一类特定信息。

2.8.1 GGA - 全球定位系统固定数据
这是最重要、最核心的语句,包含了时间、位置、质量等最关键的定位信息。
示例:$GPGGA,085823.000,3308.0992788,N,10659.0587414,E,1,30,0.600,521.809,M,-31.322,M,,*65
字段详解:
$GPGGA:语句头(GPS 系统)。
085823.000:UTC 时间(08:58:23.000)。
3308.0992788:纬度(33 度 08.0992788 分)。
N:纬度半球(N 北/S 南)。
10659.0587414:经度(106 度 59.0587414 分)。
E:经度半球(E 东/W 西)。
1:定位状态(0=无效,1=单点定位,2=差分定位,6=估测)。
30:使用的卫星数量。
0.600:HDOP(水平精度因子),值越小精度越高。
521.809,M:海拔高度(521.809 米)。
-31.322,M:大地水准面起伏(-31.322 米)。
空:差分龄期(未使用 DGPS 时为空)。
空:差分基站 ID。
*65:校验和。
2.8.2 RMC - 推荐最小定位信息
包含了位置、速度、日期和磁偏角等最精简的导航数据,很多系统将其作为最小数据集。
示例:$GNRMC,085822.000,A,3308.0992839,N,10659.0587432,E,0.004,0.000,311025,,,A,S*06
字段详解:
$GNRMC:语句头(多系统融合)。
085822.000:UTC 时间。
A:状态(A=有效,V=无效)。
3308.0992839,N:纬度/半球。
10659.0587432,E:经度/半球。
0.004:对地速度(节)。
0.000:航向(度,真北)。
311025:UTC 日期(25 年 10 月 31 日 -> 2025-10-31)。
空:磁偏角。
空:磁偏角方向。
A:模式指示(A=自主,D=差分,E=估测,N=无效)。注意:末尾可能有一个额外的模式指示器,如 S(模拟器模式)。
2.8.3 GSA - 卫星精度衰减因子与参与解算卫星
这条语句解释了定位“质量”和“精度”的由来。
示例:$GNGSA,A,3,06,19,195,17,14,,,,,,,,14.32,4.01,13.75,1*31
字段详解:
$GNGSA:语句头。
A:模式(M=手动,A=自动)。
3:定位类型(1=无,2=2D,3=3D)。
06,19,195,17,14:参与解算的卫星 PRN 号(最多 12 颗,此处用了 5 颗 GPS 卫星)。
14.32:PDOP(三维位置精度因子)。
4.01:HDOP(水平精度因子)。
13.75:VDOP(垂直精度因子)。
1*31:系统标识(1=GPS)和校验和。注意:$GNGSA 会针对每个 GNSS 系统(GPS、北斗等)分别输出一条,最后可能还有一条“融合”的语句。
2.8.4 GSV - 可见卫星信息
这条语句描绘了当前“天空视图”,告诉你所有能看到的卫星及其信号质量。
示例:$GPGSV,3,1,10,9,43,299,45,8,48,187,41,27,68,128,45,7,13,304,30,1*55
字段详解:
$GPGSV:语句头(GPS 系统)。
3:总 GSV 语句数(这条信息需要 3 条 GSV 才传完)。
1:当前语句序号(第 1 条/共 3 条)。
10:当前可见卫星总数。
9,43,299,45:第一颗卫星信息:PRN 号=09,仰角=43 度,方位角=299 度,信噪比=45 dB-Hz。
后续同理,每颗卫星占 4 个字段。一条 GSV 最多描述 4 颗卫星。
1*55:系统标识和校验和。注意:$GPGSV(GPS)、$BDGSV(北斗)、$GLGSV(GLONASS)、$GAGSV(伽利略)等语句会分别输出。
2.8.5 ZDA - 时间和日期
提供最完整的时间信息,常用于系统精确授时。
示例:$GNZDA,124108.000,24,12,2025,00,00*46
字段详解:
$GNZDA:语句头。
124108.000:UTC 时间。
24:UTC 日。
12:UTC 月。
2025:UTC 年。
00:本地时区小时偏移(可选)。
00:本地时区分钟偏移(可选)。
2.8.6 VTG - 地面速度信息
提供由对地速度和航向角计算出的真实运动信息。
示例:$GNVTG,0.000,T,,M,0.004,N,0.008,K,A*2B
字段详解:
$GNVTG:语句头。
0.000,T:真北航向角(度)。
空,M:磁北航向角(度)。
0.004,N:对地速度(节)。
0.008,K:对地速度(公里/小时)。
A:模式指示(同 RMC)。
2.8.7 关键总结与解析技巧
语句头前缀:
$GP:仅 GPS
$GN:多系统融合(最常见于现代设备)
$BD:仅北斗
$GL:仅 GLONASS
$GA:仅伽利略
信息获取策略:
取位置/时间:主要看 $xxGGA 和 $xxRMC。
评定位质量:主要看 $xxGGA 中的 定位状态、卫星数、HDOP,并结合 $xxGSA 中的 PDOP/HDOP/VDOP。
看卫星视图:主要看 $xxGSV 中的 卫星数、信噪比。
查运动状态:看 $xxVTG 中的 速度 和 航向,或 $xxRMC。
解析注意事项:
空字段:连续逗号(,,)表示该字段为空,解析时需做容错处理。
校验和:* 后的两位十六进制数,用于验证数据传输是否出错。
多系统语句:现代接收机会为每个系统输出独立的 $xxGSA 和 $xxGSV,并有一条融合的 $GNGGA/GNRMC。
理解这些语句,就掌握了与 GNSS 设备沟通的密码。在实际编程解析时,应先根据语句头判断类型,再按字段顺序拆分处理,尤其要注意数值单位(度分、节、米等)的转换。
2.8.8 实际 NMEA 预计分析
这里时间原因大概过一下

这是一组高质量的多系统 GNSS 定位数据,来自 GPS、北斗(BDS)、伽利略(GAL)和格洛纳斯(GLONASS) 的联合解算。数据显示设备处于高精度、高可靠的定位状态。
2.8.8.1 核心定位结果(非常优秀)
数据来自 $GNRMC 和 $GNGGA 语句:
-
定位状态:有效且精度很高($GNGGA 中的 1 表示单点定位,$GNRMC 中的 A 表示数据有效)。
-
时间:UTC 时间 08:58:23(2025 年 10 月 31 日,由 $GNRMC 中的 311025 可推算)。
-
位置:纬度 33°08.0992788‘ N,经度 106°59.0587414’ E。不同语句间位置高度一致(如 $GNRMC 与 $GNGGA 的经纬度仅在小数点后第 6 位有微小差异),说明数据稳定。
-
海拔高度:521.809 米(大地高)。
-
对地速度:0.004 节(约 0.0074 公里/小时),表明设备几乎完全静止。
2.8.8.2 卫星视图与定位质量(关键优势)
$GNGSA 和 $xxGSV 语句揭示了高精度的原因:
-
参与解算的卫星系统与数量:
-
GPS:使用了 6 颗 卫星(PRN: 09, 04, 16, 08, 27, 26)。
-
北斗:使用了 7 颗 卫星(PRN: 16, 40, 06, 39, 34, 24, 07, 10, 25, 33, 41, 09)。注意,北斗的 $GNGSA 语句中列出了 12 颗卫星,表明可用卫星极多。
-
伽利略:使用了 4 颗 卫星(PRN: 29, 23, 19, 04)。
-
格洛纳斯:使用了 3 颗 卫星(PRN: 03, 42, 60, 02)。
-
QZSS(日本准天顶):可能辅助了 2 颗 卫星(PRN: 03, 07, 02)。QZSS 常作为 GPS 的增强系统。
-
总计:四个系统联合解算,共使用约 20 颗以上卫星(部分卫星可能被多个系统共用),这是实现高精度的基础。
-
精度因子(DOP)—— 表现极佳:
-
PDOP(位置精度因子):1.075($GNGSA 语句中给出)。
-
HDOP(水平精度因子):0.600($GNGGA 和 $GNGSA 中一致)。
-
VDOP(垂直精度因子):0.892。
-
解读:所有 DOP 值均远小于 1.5,属于 “极佳” 范围。这表明卫星在天空中的几何分布非常理想,定位的潜在几何误差被降到最低。通常,HDOP < 1.0 意味着水平定位精度可能达到亚米级甚至更高。
-
可见卫星总数:从各系统的 $xxGSV 语句统计,总共可见卫星数量非常多(GPS 约 10 颗,北斗约 21 颗,伽利略 4 颗等),提供了极大的冗余度和选择空间。
2.8.8.4 质量与误差统计
-
定位模式:$GNGSA 中的模式为 A(自动)和 3(3D 定位),表明接收机自动选择了最佳的 3 维定位模式。
-
误差估计:$GNGST 语句给出了接收机内部的误差估算:水平定位误差的 RMS(均方根)约为 0.820 米,半长轴误差(保守估计)约为 2.916 米。这印证了亚米级到米级的定位精度。
三、GNSS 进阶知识
3.1 辅助定位技术(AGPS)
辅助 GNSS(A-GNSS)是一种通过移动网络向 GNSS 接收机提供辅助数据,从而将“冷启动”变为“瞬时热启动”的技术。它解决了传统 GNSS 首次定位慢的痛点。

简单来说:没有 A-GNSS,你的手机需要像“在图书馆里盲目找书”一样,花 30 秒以上从卫星那里下载星历。有 A-GNSS,移动网络会直接把“图书目录和精确位置”发给你,让你秒级定位。
3.1.1 传统 GNSS vs A-GNSS 核心区别
3.1.2 A-GNSS 工作原理:四步实现秒定
A-GNSS 的工作流程可以清晰地分为四个阶段,下图展示了这一完整过程:

-
请求辅助:当手机需要定位时,它通过移动网络(2G/3G/4G/5G)或 Wi-Fi,将当前连接的基站小区 ID(或者当前设备通过其他定位方式[例如 wifi/基站定位]获取到的不是很准确的经纬度值)发送给 A-GNSS 服务器。
-
服务器响应:服务器根据提供的位置,知道你的大概位置(误差几公里)。它立刻从自己的数据库中,生成并下发一个包含以下信息的辅助数据包:
-
星历/历书:当前区域上空所有卫星的精确轨道参数。
-
精确时间:网络同步的 UTC 时间。
-
初始位置与时间估算:基于基站位置的粗略坐标。
-
设备快速捕获:手机 GNSS 芯片收到这些数据后,瞬间从“三不知”变成“三知”。它精确知道该搜索哪几颗卫星、频率是多少、码相位大概在哪,直接进行“热启动”捕获。
-
定位解算:芯片只需完成伪距测量,结合已知的卫星位置,即可在几秒内解算出第一个精确位置。
3.1.3 A-GNSS 辅助数据的类型
3.1.4 A-GNSS 在手机上的实际应用
你体验到的“秒定”地图,通常是以下技术的组合拳:
-
A-GNSS:负责快速获得第一个位置(TTFF)。
-
Wi-Fi/蓝牙定位:当卫星信号弱时(室内),扫描附近的 Wi-Fi 热点和蓝牙信标,通过数据库匹配位置。
-
蜂窝网络定位:利用基站三角测量,提供粗略位置(百米级)。
-
传感器融合:结合加速度计、陀螺仪,在信号中断时进行航位推算。
-
一个典型场景:你在室内打开地图 App,它会先通过 Wi-Fi/蜂窝网络给你一个粗略位置,同时通过 A-GNSS 在后台准备好卫星数据。当你走到窗边或户外时,GNSS 芯片瞬间就能完成精确定位,实现无缝切换。
3.1.5 优势与局限
优势:
-
速度极快:首次定位从分钟级降至秒级。
-
功耗大降:搜索时间短,显著延长设备续航。
-
灵敏度提升:在信号弱至-160 dBm 的环境下(如城市峡谷、树下)仍可能定位。
-
用户体验无缝:实现了室内到室外的平滑定位过渡。
局限/依赖:
-
必须联网:无网络时,A-GNSS 无法工作,回退到传统慢速模式。
-
数据流量:每次辅助需传输几 KB 数据,但可忽略不计。
-
服务器依赖:需要运营商或谷歌/苹果等提供稳定可靠的 A-GNSS 服务。
总结:A-GNSS 是一项关键的增强技术,它没有改变 GNSS 定位的基本原理,而是通过改变数据获取的路径(从慢速的卫星链路改为高速的网络链路),从根本上解决了启动速度和弱信号性能的瓶颈。它是现代智能手机和物联网设备实现即时定位、低功耗追踪的基石技术。
3.2 影响定位精度的因素(静态和动态)
影响 GNSS 定位精度的因素复杂多样,且静态与动态场景下的主要矛盾不同。下图从“信号传播”、“卫星与系统”、“接收机与环境”三个层面,系统梳理了所有核心误差源及其影响机制:

3.2.1 静态定位精度影响因素(焦点:坐标的稳定性)
静态时,所有误差都转化为位置的波动(漂移)。
静态场景核心矛盾:多路径和大气延迟是漂移的主因,目标是 “稳定” 。
静态漂移在嵌入式设备上的解决方法:
1、和 GNSS 给出的速度值做匹配,速度值低于某个值时,判定为静止,只上传最后一次速度大于对应值时的经纬度(一般经验值为 0.2m/s)
2、增加三轴传感器进行算法校验,如果连续 10 秒内有效运动次数低于 5 次,判定为静止(合宙的 780EGG/Air8000A 等自带三轴传感器的模块均有对应 demo)
3、部分 GNSS 模块有指令进行静态抑制,如 510W 和 530W($CFGDYN,1,20),最后面的 20 单位为 cm/s,即 0.2m/s,意思为 0.2m/s 以下的运动 判断为静止,输出静止前的经纬度,这个 20 由用户根据自己实际应用场景进行修改,最大 100,即 1m/s(一般来说,行人慢走的速度约为 0.3m/s,宠物移动速度约为 0.5m/s,而车辆在绿灯正常起步时速度约为 0-4.2m/s,车辆拥堵场景下跟车/停车场寻位场景下速度约 0-2.8m/s,所以建议用户可以先设置个 20,然后根据实际测试结果进行微调)
3.2.2 动态定位精度影响因素(焦点:轨迹的保真度)
动态时,误差与真实运动耦合,表现更复杂。
动态场景核心矛盾:信号遮挡与多路径的瞬时剧变是轨迹失真的主因,目标是 “连续、可靠、贴合实际路径” 。
动态漂移一般是由服务器端进行一些算法进行解决,这个在最后 3.6 讲的时候会讲到。
3.2.3 静态与动态的核心差异总结
3.2.4 通用提升精度的技术手段
-
差分定位:通过基准站消除公共误差,是提升静态与动态精度最有效的方法(RTK 可达厘米级)。
-
多系统融合:使用 GPS、北斗、GLONASS、Galileo,增加卫星数,改善 DOP,提升抗遮挡能力和整体精度。
-
多频接收机:利用双频/三频信号消除电离层延迟(主要误差),大幅提升静态稳定性和动态可靠性。
-
传感器融合:结合惯性测量单元,在 GNSS 信号中断时提供连续导航,并平滑 GNSS 轨迹,是动态应用的黄金标准。
-
精密数据处理:使用精密星历、钟差产品进行后处理,可将静态精度提升至毫米级。
简单来说:静态时要解决“点不准”的问题,重在消除系统误差;动态时要解决“线不直、线会断”的问题,重在克服瞬时干扰和信号中断。两者都怕多路径,但动态环境下的多路径要“凶狠”得多。
3.3 RTK 差分定位
RTK(实时动态差分定位)是一种通过基准站进行实时误差校正,实现厘米级精度的 GNSS 定位技术。它是对我们之前讨论的所有定位误差(大气延迟、星历误差、钟差等)的“终极解决方案”。

简单来说:普通单点定位像是独自在雨中估测距离,误差很大;RTK 则像有一个在已知点的伙伴实时告诉你:“现在的雨会让测距偏长 2 厘米!风会让它偏短 1 厘米!”,让你立刻修正,得到精确结果。
3.3.1 RTK vs 传统单点定位:核心区别
3.3.2 RTK 工作原理:三步实现厘米级
RTK 系统需要至少两台接收机协同工作,其核心流程如下图所示:

基准站观测:
在已知精确坐标的控制点上架设接收机。
它实时观测所有卫星,计算出包含各种误差的“测量坐标”。
将 “测量坐标” - “已知真值坐标” = “综合误差修正量”。
误差数据播发:
基准站通过无线电电台(UHF/VHF)、蜂窝网络(Ntrip) 或网络 RTK(CORS),将误差修正数据实时发送给流动站。
流动站实时解算:
流动站接收卫星信号同时接收基准站的修正数据。
从自己的观测值中扣除相同的误差,利用载波相位观测值进行高精度解算。
最关键的一步:解算整周模糊度(即卫星与接收机之间相位测量的整周数),一旦固定,即获得厘米级定位。
3.3.3 RTK 的关键技术:整周模糊度固定
这是 RTK 技术的核心,也是实现厘米级精度的前提。
-
载波相位:GNSS 接收机可以测量卫星载波信号(波长约 19cm)的相位,精度可达毫米级,但存在一个未知的整周模糊度。
-
“固定解”:通过算法快速、正确地解算出这个整周数。固定后,定位结果将从“浮动”的分米级跳变到“固定”的厘米级。
-
“固定” vs “浮动”:
-
固定解:整周模糊度确定,厘米级精度。
-
浮动解:整周模糊度未确定,分米级精度。
3.3.4 RTK 的三种主流工作模式
3.3.5 RTK 的主要应用领域
-
测绘与工程:地形图测绘、施工放样、矿山测量。(核心应用)
-
精准农业:农机自动驾驶、变量施肥播种。(大规模应用)
-
无人机:高精度航线规划、倾斜摄影三维建模。
-
形变监测:桥梁、大坝、滑坡体的毫米级位移监测。
-
自动驾驶:为车辆提供车道级定位。
3.3.6 RTK 的局限与挑战
-
依赖数据链:无线电遮挡或网络中断,流动站将无法获得修正数据。
-
有效距离限制:误差的空间相关性随距离减弱,通常建议在 20 公里内使用。
-
初始化与失锁重捕:在遮挡环境下(如树下、楼间),整周模糊度可能失锁,需要时间重新“固定”,影响连续作业。
-
多路径效应:RTK 无法消除多路径误差,因为它在基准站和流动站的表现不同。
-
成本高昂:专业级 RTK 设备价格通常是普通 GNSS 接收机的 10 倍以上。
3.3.7 发展趋势:更强大的 RTK
-
多系统融合:支持 GPS+ 北斗 +Galileo+GLONASS,增加冗余,提升在城市峡谷等恶劣环境下的固定速度和可靠性。
-
惯导融合:结合惯性测量单元,在 GNSS 信号短时中断时(过隧道)提供连续定位,并辅助模糊度快速重固定。
-
PPP-RTK:结合精密单点定位与区域增强,旨在用更稀疏的基准站网络实现广域厘米级实时定位,是未来发展方向。
总结:RTK 通过基准站差分和载波相位模糊度固定,将 GNSS 定位从米级提升至厘米级。它是当前实现实时、高精度定位最成熟、最广泛的技术,但其性能受距离、数据链和环境的制约。理解 RTK,就理解了高精度 GNSS 应用的基石。
3.4 一般 GNSS 测试方案
GNSS 性能测试是一个系统工程,旨在全面评估接收机在不同场景下的定位能力、稳定性和可靠性。测试通常分为 “基本性能”、 “环境适应性” 和 “功能与可靠性” 三大类。
下图为你展示了专业 GNSS 性能测试的核心框架与关键项目:
3.4.1 基础性能测试(核心指标)
在理想环境中评估接收机的“硬实力”。
3.4.2 环境适应性测试(压力测试)
模拟真实情况下,评估接收机的“软实力”和鲁棒性。
3.4.3 功能与可靠性测试(长期与极限)
评估产品在实际应用中的综合表现。
3.4.4 测试方法与工具
1、GNSS 模拟器测试:在实验室使用高精度 GNSS 信号模拟器,可精确、可重复地生成各种轨迹、信号强度、动态场景和误差环境。这是研发和认证阶段的核心工具。
2、标准基线场测试:在户外已知精确坐标的测试场上进行静态和动态测试,这是精度验收的“金标准”。
3、实车路测:在实际道路环境中进行长时间、大范围的综合测试,最能反映真实用户体验。
总结:一个专业的 GNSS 性能评估,绝不仅仅是“看它漂不漂”。它需要从 “精度、速度、灵敏度、稳定性、可靠性、环境适应性” 等多个维度进行量化考核。对于普通用户,可以关注静态漂移、首次定位时间、弱信号表现这几项;对于专业开发者或采购方,则需要一份完整的、基于模拟器和实地测试的详细报告
3.5 轨迹优化和滤波算法
对于一分钟定位一次的轨迹优化,核心思路是:利用时间序列的连续性和约束条件,通过算法剔除异常值、平滑噪声,并从离散点中重建出合理、连续的轨迹。
下图清晰地展示了从原始 GNSS 数据到优化后轨迹的完整处理流程与关键算法:

3.5.1 核心优化技术详解
根据不同的的计算资源和优化目标(实时或事后),可以选择以下不同方法:
预处理:剔除明显异常点
这是所有优化第一步,基于物理常识过滤。
-
速度阈值法:计算相邻点间的速度。若速度超过合理最大值(如城市中 >120km/h),则该点为“跳跃点”,应剔除。
-
距离阈值法:计算点到前后点连线的垂直距离。若距离过大,则该点为“漂移点”。
平滑滤波:降低随机噪声
-
滑动平均法:最简单。取当前点前后 N 个点的位置坐标进行平均。缺点是会使轨迹“滞后”并变得过于平滑,丢失细节。
-
卡尔曼滤波:最优选择。它不仅是滤波,更是一种状态估计。通过建立位置、速度的状态方程和观测方程(GNSS 位置),可以实时、最优地估计出更平滑、更合理的位置和速度。非常适合分钟级数据的实时处理。
-
粒子滤波:在信号遮挡严重、噪声非高斯分布时(如城市峡谷),效果可能优于卡尔曼滤波,但计算量更大。
轨迹重建:让点连成合理的线
-
曲线拟合(事后处理):使用 B 样条曲线或贝塞尔曲线直接对所有经过滤波的点进行拟合,得到一条光滑的轨迹曲线。这是提升视觉表现力的最佳方法。
-
地图匹配:如果物体在道路上运动(如车辆),这是最有效的优化方法。算法将原始轨迹点匹配到数字路网上最近或最合理的路径,彻底消除道路之外的漂移,使轨迹严格贴合道路网络(百度/高德/谷歌都有自己的轨迹纠偏 API 可以使用
3.5.2 方案选择建议
根据实际的用户场景,可以这样选择:
3.5.3 关键提醒
-
理解误差来源:优化前,先分析你数据中主要的噪声是高频随机抖动、偶尔大幅漂移,还是系统性偏差。对症下药。
-
权衡平滑与延迟:任何实时滤波都会引入毫秒到秒级的延迟,需根据应用容忍度调整参数。
-
保留原始数据:所有优化都应在副本上进行,并记录处理步骤,以备复查。
今天的内容就分享到这里了~

浙公网安备 33010602011771号