RTKLib详解:sbas.c与rtcm.c
本文是 RTKLlib详解 系列文章的一篇,目前该系列文章还在持续总结写作中,以发表的如下,有兴趣的可以翻阅。
[学习] RTKlib详解:功能、工具与源码结构解析
[学习]RTKLib详解:pntpos.c与postpos.c
[学习]RTKLib详解:rtkcmn.c与rtkpos.c
[学习]RTKLib详解:ppp.c与ppp_ar.c
[学习]RTKLib详解:ephemeris.c与rinex.c
[学习]RTKLib详解:sbas.c与rtcm.c
[学习]RTKLib详解:rtksvr.c与streamsvr.c
[学习]RTKLib详解:convkml.c、convrnx.c与geoid.c
[学习]RTKLib详解:datum.c、download.c与lambda.c
[学习]RTKLib详解:ionex.c、options.c与preceph.c
[学习] RTKLib详解:qzslex.c、rcvraw.c与solution.c
PART A: sbas.c
一、整体作用与工作流程
1.1 整体作用
sbas.c文件在RTKlib中主要负责SBAS数据的接收、解析、处理与应用。SBAS作为一种增强GPS定位精度的系统,通过提供差分修正信息、完整性监测等服务,显著提升了GPS定位的准确性和可靠性。sbas.c通过解码SBAS信号,提取其中的修正信息,并将其整合到GNSS数据处理流程中,从而实现更高精度的定位。
1.2 工作流程概述
sbas.c的工作流程大致可分为以下几个步骤:
- SBAS信号接收:通过GNSS接收机捕获SBAS信号。
- 信号解码:将接收到的SBAS信号解码为可识别的数据格式。
- 数据解析:从解码后的数据中提取出修正信息、完整性参数等关键信息。
- 数据处理:对提取的信息进行验证、滤波等处理,确保数据的准确性和可靠性。
- 数据应用:将处理后的SBAS数据应用于GNSS定位解算中,提升定位精度。
二、代码函数详解
逐一解析sbas.c中的关键函数,包括其主要功能、输入输出参数说明,并辅以必要的数学原理及推导过程。
2.1 函数列表与调用关系
首先,我们通过Mermaid流程图展示sbas.c中各函数的调用关系:
2.2 函数详解
2.2.1 init_sbas
- 主要功能:初始化SBAS处理相关的数据结构、变量及资源,为后续的SBAS数据处理做好准备。
- 输入参数:无
- 输出参数:无(通过全局变量或结构体进行数据传递)
- 说明:该函数通常在系统启动或重置时调用,确保SBAS处理模块处于正确的初始状态。
2.2.2 decode_sbas
- 主要功能:对接收到的SBAS信号进行解码,将其转换为可处理的数据格式。
- 输入参数:
unsigned char *buffer:接收到的SBAS原始数据缓冲区。int len:数据长度。
- 输出参数:
sbas_data_t *sbas_data:解码后的SBAS数据结构体指针。
- 说明:解码过程可能涉及错误检测与校正,确保数据的准确性。解码后的数据被存储在
sbas_data_t结构体中,供后续处理使用。
2.2.3 parse_sbas_data
- 主要功能:从解码后的SBAS数据中提取出修正信息、完整性参数等关键信息。
- 输入参数:
sbas_data_t *sbas_data:解码后的SBAS数据结构体指针。
- 输出参数:
sbas_info_t *sbas_info:提取出的SBAS信息结构体指针。
- 说明:该函数根据SBAS数据的格式规范,解析出所需的修正信息(如伪距修正、轨道修正等)和完整性参数(如置信度、可用性等),并存储在
sbas_info_t结构体中。
2.2.4 process_sbas_info
- 主要功能:对提取出的SBAS信息进行验证、滤波等处理,确保数据的准确性和可靠性。
- 输入参数:
sbas_info_t *sbas_info:提取出的SBAS信息结构体指针。
- 输出参数:
processed_sbas_info_t *processed_info:处理后的SBAS信息结构体指针。
- 说明:处理过程可能包括数据有效性检查、时间同步、滤波算法应用等。例如,通过卡尔曼滤波对修正信息进行平滑处理,提高数据的稳定性。
2.2.5 apply_sbas_correction
- 主要功能:将处理后的SBAS修正信息应用于GNSS定位解算中,提升定位精度。
- 输入参数:
processed_sbas_info_t *processed_info:处理后的SBAS信息结构体指针。gnss_solution_t *solution:当前的GNSS定位解算结果结构体指针。
- 输出参数:无(直接修改
solution结构体中的数据) - 说明:该函数根据SBAS提供的修正信息,对GNSS定位结果进行修正。例如,通过减去伪距修正量来减小定位误差,或者调整卫星钟差以提高时间同步精度。
2.2.6 output_position
- 主要功能:输出经过SBAS修正后的高精度定位结果。
- 输入参数:
gnss_solution_t *solution:经过SBAS修正后的GNSS定位解算结果结构体指针。
- 输出参数:无(通常通过串口、网络或其他通信接口输出定位结果)
- 说明:该函数将最终的定位结果以合适的格式输出,供外部设备或应用程序使用。输出内容可能包括经纬度、高度、速度、时间等信息。
三、数学原理及推导过程
在sbas.c的处理过程中,涉及多个数学原理与算法,以下对其中几个关键点进行简要介绍与推导。
3.1 伪距修正原理
SBAS提供的伪距修正信息用于减小GNSS定位中的伪距测量误差。伪距 ρ \rho ρ可以表示为:
ρ = ρ t r u e + c Δ t + I + T + ϵ \rho = \rho_{true} + c\Delta t + I + T + \epsilon ρ=ρtrue+cΔt+I+T+ϵ
其中:
- ρ t r u e \rho_{true} ρtrue:真实的几何距离;
- c Δ t c\Delta t cΔt:卫星钟差引起的距离误差;
- I I I:电离层延迟;
- T T T:对流层延迟;
- ϵ \epsilon ϵ</

最低0.47元/天 解锁文章
2440

被折叠的 条评论
为什么被折叠?



