返回列表

1st Place Solution

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

开始: 2022-05-02 结束: 2022-07-29 自动驾驶感知 数据算法赛
第一名解决方案

第一名解决方案

作者: Taro | 排名: 第1名

我很高兴能再次在这个比赛中获得第一名。我是GNSS和机器人领域的研究员,去年的比赛非常受启发,许多人提出了我从未想过的想法。如果您也能分享您的解决方案和想法,我会非常高兴。

智能手机的GNSS观测噪声非常大,输出数据有许多缺失值和异常值,很难准确估计位置。我也很难处理不同类型智能手机的观测差异。有很多细节需要处理,很多事情要做,我觉得这次比赛对我们要么来说都不寻常且艰难。

概述

我解决方案的基本思路与去年相同:通过因子图优化(FGO)利用伪距、伪距率(多普勒)和ADR(载波相位)对位置和速度进行全局优化。关于FGO的更多内容请参阅去年的解决方案。今年方法的关键点在于将速度和位置估计分开,分两个阶段处理,这对精度的提高做出了贡献。所提方法的流程如下图所示,结构非常简单。

fig1

输入

  • gnss_log.txt
  • 基准站的GNSS观测数据和卫星轨道数据(广播星历)

    • 对于GNSS基准站,我使用了NGS CORS的30秒间隔数据。我使用的是单个基准站,但我认为@saitodevel01的多基准站分析结果集成的方法可能有助于提高精度。我应该尝试一下的...

速度估计阶段

准确的相对位置(速度)可以从ADR时间差计算得出,但由于易受信号屏蔽和频繁的周跳影响,可用性较低。首先利用更稳健的多普勒估计速度,然后剔除异常值、进行插值,并在下一阶段的位置估计中作为宽松的约束条件。同时,它也可以用来判断车辆是否停止。如果速度与位置同时包含在优化中,这种插值和停止位置的判断将变得困难。在有许多缺失异常值、高架桥、隧道等数据的情况下,分阶段估计和修正速度非常有效。

fig2

位置估计阶段

通过构建图并利用基准站修正偏差分量的伪距、ADR时间差以及上一阶段估计的速度进行优化,从而估计位置和接收机时钟。对于因红绿灯而有许多停顿的城市驾驶数据,根据上一阶段估计的速度,在停止时观测到的伪距数据会被剔除。在每个状态(位置)之间,利用估计的速度约束相对位置,并在ADR有效时加入高精度的相对位置约束。此外,作为绝对位置约束,使用了经基准站修正的伪距。没有进行后处理,优化估计的位置即作为最终估计提交。

fig3

优化

与去年一样,使用了GTSAM。这次我们使用简单的M-Estimator进行鲁棒优化,而不是去年使用的Switchable Constraint。Switchable Constraint的优点是可以可视化和调整权重的值,但缺点是收敛性低和处理时间长。由于性能几乎相同,我使用了带有Huber函数的M-Estimator,该函数适用于噪声较大的智能手机GNSS观测,因为权重不会完全为零。整个测试数据运行的处理时间约为30分钟,允许在有限的时间内进行大量的试错。

技巧

  • device_gnss.csv中的伪距有缺失,所以我自己从gnss_log.txt转换伪距更准确。
  • 正如@saitodevel01指出的,XiaomiM8存在多普勒时间不对齐的问题。显然,只有XiaomiM8的多普勒与Android系统时钟以及IMU匹配,而不是GPS时钟。正如讨论中所述,当添加600毫秒的偏移量时,速度估计效果最好。
  • SamsungGalaxyS20和XiaomiMi8在手机提供的伪距率和ADR不确定性方面与其他手机有很大不同。我使用了基于卫星仰角的误差模型,而不是手机提供的不确定性。
  • 关于速度的插值方法,Akima插值方法比使用样条插值更准确。样条插值容易出现过冲现象。
  • HardwareClockDiscontinuedCount标志改变时,会发生周跳,ADR变得不连续。这种情况只发生在Pixel4/4XL的某些运行中。在这种情况下,ADR几乎不可用。

尝试过但未奏效的想法

  • 利用加速度计积分进行速度估计。我花了不少时间,但结果对精度没有贡献。
同比赛其他方案