17个版本 (7个破坏性更新)
新 0.7.1 | 2024年8月18日 |
---|---|
0.6.0 | 2024年8月6日 |
0.5.0 | 2024年7月28日 |
0.4.3 | 2024年3月28日 |
0.3.0 | 2023年11月30日 |
#129 in 地理空间
每月下载量 627
在 3 crate 中使用
260KB
6K SLoC
GNSS-RTK
在Rust中进行的精确定位计算
PPP / RTK
GNSS-RTK是一个简单高效的导航求解器,支持PPP和RTK导航。这使得它成为大多数导航应用的理想解决方案。
它易于部署,配置简单,即使是默认设置也会显示出良好的结果(无需调整!)。
GNSS-RTK灵活高效
- 你可以用单一可见信号进行导航
- 你不必采样L1,可以用现代信号进行导航
- 它支持无相位测距的导航
- 针对双频伪距的特殊CPP方法(无相位测距),其行为类似于缓慢收敛的PPP方法
- 它是一个真正的测量工具,因为它可以在没有先验知识的情况下运行
- 它可以通过部署完整的PPP测量来满足RTK/大地测量参考站校准的挑战性任务
其他酷炫功能
- 在所有支持的时标上工作
- 可以使用圆锥方位角掩码(最小和最大方位角)进行导航。在这种情况下,我们只选择来自那个特定方向的车辆。
- 如果我们对某些函数进行更通用的处理并提出更好的大气接口,它可能适用于其他行星。
GNSS-RTK不关心SV或信号调制。它关注的是物理、距离、频率和环境现象。这意味着你可以从任何可用的数据源操作它,只要你能提供所需的输入。
应用
以下应用使用了GNSS-RTK
示例和更多信息
- 此存储库中包含了一些示例,它们将教会你如何部署求解器,至少是在基本设置中。
- RINEX Wiki 描述了此框架的广泛应用,从高层次上进行了描述。
生态系统
GNSS-RTK包含以下库,并与它们紧密相关
正在进行中
此框架正在积极开发中。大多数功能已经稳定且表现良好,有些功能尚不可用或需要改进。
以下是需要解决的问题(同时,请参考活跃的GitHub问题)
ppp
相位导航尚未完全完成。我们通过执行长时间测量实现了非常好的性能。PPP将允许更快地收敛。rtk-ppp
尚未完全实现,只有基本RTK存在。
请参考此门户网站(Wiki页面、讨论等)和RINEX Wiki以了解此工具的功能。
PVT解
求解器的目标是解决精确的PVT解。标准导航中必须观测到至少4颗SV。
在固定高度模式导航时,只需观测到3颗SV。
在仅时间模式导航时,需要观测到单一SV。
在进行测量(请参阅专用段落)时,需要观测到4颗SV直到求解器完全初始化。使用返回的对象(PVTSolution或Error)来确定是否可以放松对天空观测的限制(尚不可用)。
预设标准在配置文件(或配置脚本)中手动设置。目前,请参阅RINEX Wiki或RINEX脚本数据库,以获取有意义的示例。
根据预设配置,其他要求将适用于前面的列表,最重要的是
CPP
策略需要在辅助频率上进行伪距观测PPP
策略需要在两个频率上进行伪距和相位观测- SNR、仰角和方位角掩码需要收集满足这些条件的所需数量的SV
每个PVT解都包含精度损失(DOP)和其他有意义的信息,如哪些SV对解有贡献。我们有能力以所有支持的Timescale表达时钟偏移。
策略和其他设置
求解器的行为和输出结果高度依赖于所选的策略。
高级策略需要更深入的知识,可能需要更多调整求解器配置。不过,Rust/JSON基础设施足够强大,允许仅定义感兴趣的配置部分:其他将简单地默认。
PVTSolutionType 定义了我们想要形成的解的类型,因此,我们需要收集的最小SV数量。如前所述,其他标准如 min_sv_elev
或 max_sv_azim
将限制条件,要求这些车辆必须符合才能被考虑。
当将 fixed_altitude
设置为特定值时,所需的SV数量减少1。
当将 PVTSolutionType
设置为 TimeOnly
时,这没有影响。
SolverOpts
配置为调整求解器提供了更高级的选项。简而言之,这允许
- 选择我们的导航滤波器之一,如卡尔曼滤波器或LSQ
- 定义PVT解的确认标准
Modeling
定义我们补偿的物理和环境现象。
建模与所选求解器策略紧密相关。例如,影响厘米级(如太阳辐射率)的模型,除了高级PPP策略外,在其他策略中都没有意义。另一方面,如果不考虑至少一些物理现象,无论策略如何,都无法达到米级解决方案。
大气和环境偏差
此求解器始终能够模拟所有条件并形成一个解决方案。
了解我们的API设计方式,尽可能好地操作它,以获得最佳结果。
对流层延迟
对流层偏差始终需要估计。
默认情况下,求解器将使用在[model::tropo API]中实现的模式。
如果您能自行确定所需的纬度和Epoch下的对流层延迟组件(TropoComponents结构),强烈鼓励您提供数据。为此,我们使用一个可以作为TropoComponents源的函数指针。TropoComponents评估参数(函数指针参数)应包括
- Epoch
- 海拔(海平面以上),以米为单位
- 纬度,以十进制度数表示
对于无法提供数据的Epochs,这不会成问题,我们将依靠内部模型。
手工TropoComponents提供者的示例
待办事项
⚠️当使用内部模型时,我们建议对候选对象应用>= 5°仰角掩码。
电离层延迟
待办事项
先验位置
求解器可以装备先验知识(对最终位置的大致想法),或者可以完全自主运行。在这种情况下,求解器将非常准确地初始化自己,这需要额外的一步。
入门指南
参考我们的示例应用程序,了解如何更详细地操作我们的API。
依赖关系
~41-56MB
~1M SLoC