返回列表

35th place: rtklib tweaking and factor graph approach

502. Google Smartphone Decimeter Challenge 2022 | smartphone-decimeter-2022

开始: 2022-05-02 结束: 2022-07-29 自动驾驶感知 数据算法赛
第35名:RTKLIB调整与因子图方法

第35名:RTKLIB调整与因子图方法

作者: Kuts Alexey
比赛排名: 36

在这次比赛中,我尝试了两种不同的方法:

  • 基于 RTKLIB 的方法
  • 全局优化因子图方法

源代码

1. RTKLIB 调整

基于“RTKLIB 入门”笔记本。
尝试调整不同的配置参数。
保留接收机的周跳标志(slip_mask=3)以及增加信噪比(SNR)和伪距不确定性的权重有所帮助:
stats-errsnr: 0 -> 0.003
stats-errrcv: 0 -> 0.1
stats-errphaseel: 0.003 -> 0
stats-errphase: 0.003 -> 0

最后,RTKLIB 的解算结果通过 https://www.kaggle.com/code/taroz1461/carrier-smoothing-robust-wls-kalman-smoother 笔记本进行了平滑后处理。

尝试在高度角加权和信噪比加权之间进行集成 -> 结果更差。
尝试启用模糊度解算 - 数据噪声大,出现错误固定 -> 没有改善。
尝试不通过多普勒而是通过 TDCP 技术 来估算速度 (estval() 函数),
但经过调试后明白,来自多普勒的速度(estvel() 的结果)很少(仅在大位置方差的情况下)进入 EKF 状态,速度主要来自卡尔曼状态,
没有太多时间/成功修改 RTKLIB EKF 模型来适应这一点。

2. 因子图方法

希望这是一种全局优化模型公式(不同于 EKF),并且可能会有所帮助。

采用了这段代码 https://github.com/weisongwen/GraphGNSSLib

这种方法通过 RTKLIB 进行预处理,然后通过 Ceres 求解器解决优化问题。

它在这个数据集上不能直接开箱即用:
它依赖于模糊度解算(但根本没有固定解)。

最终使用的因子:

  • 与基准站的差分伪距因子(类似于 rtklib 的码测量,ddres() 函数)
  • 运动因子(相邻历元间的距离除以 dt - 应等于估算速度)
  • 用于速度估算的多普勒因子(仅在检测到周跳时使用,否则使用 adr 因子),通过多普勒估算接近 rtklib 中的 estvel() 函数
  • 用于速度估算的 adr 因子(TDCP 技术,参见论文:Time-differenced carrier phases technique for precise GNSS velocity estimation),tdcp 的优点是消除了整周模糊度项。

在使用上述因子进行测试后,结果受到异常值的严重影响,
因此尝试通过可切换约束/大的初始残差来移除异常值,取得了一些进展。

此外,在应用了上述所有因子后,生成的轨迹并不平滑,因此针对大加速度增加了加速度约束。并且基于上面列出的笔记本使用卡尔曼平滑器对解算结果进行了后处理。

提交

提交时,我使用了这两种方法的加权平均值。

同比赛其他方案