502. Google Smartphone Decimeter Challenge 2022 | smartphone-decimeter-2022
我很高兴能再次在这个比赛中获得第一名。我是GNSS和机器人领域的研究员,去年的比赛非常受启发,许多人提出了我从未想过的想法。如果您也能分享您的解决方案和想法,我会非常高兴。
智能手机的GNSS观测噪声非常大,输出数据有许多缺失值和异常值,很难准确估计位置。我也很难处理不同类型智能手机的观测差异。有很多细节需要处理,很多事情要做,我觉得这次比赛对我们要么来说都不寻常且艰难。
我解决方案的基本思路与去年相同:通过因子图优化(FGO)利用伪距、伪距率(多普勒)和ADR(载波相位)对位置和速度进行全局优化。关于FGO的更多内容请参阅去年的解决方案。今年方法的关键点在于将速度和位置估计分开,分两个阶段处理,这对精度的提高做出了贡献。所提方法的流程如下图所示,结构非常简单。
gnss_log.txt基准站的GNSS观测数据和卫星轨道数据(广播星历)
准确的相对位置(速度)可以从ADR时间差计算得出,但由于易受信号屏蔽和频繁的周跳影响,可用性较低。首先利用更稳健的多普勒估计速度,然后剔除异常值、进行插值,并在下一阶段的位置估计中作为宽松的约束条件。同时,它也可以用来判断车辆是否停止。如果速度与位置同时包含在优化中,这种插值和停止位置的判断将变得困难。在有许多缺失异常值、高架桥、隧道等数据的情况下,分阶段估计和修正速度非常有效。
通过构建图并利用基准站修正偏差分量的伪距、ADR时间差以及上一阶段估计的速度进行优化,从而估计位置和接收机时钟。对于因红绿灯而有许多停顿的城市驾驶数据,根据上一阶段估计的速度,在停止时观测到的伪距数据会被剔除。在每个状态(位置)之间,利用估计的速度约束相对位置,并在ADR有效时加入高精度的相对位置约束。此外,作为绝对位置约束,使用了经基准站修正的伪距。没有进行后处理,优化估计的位置即作为最终估计提交。
与去年一样,使用了GTSAM。这次我们使用简单的M-Estimator进行鲁棒优化,而不是去年使用的Switchable Constraint。Switchable Constraint的优点是可以可视化和调整权重的值,但缺点是收敛性低和处理时间长。由于性能几乎相同,我使用了带有Huber函数的M-Estimator,该函数适用于噪声较大的智能手机GNSS观测,因为权重不会完全为零。整个测试数据运行的处理时间约为30分钟,允许在有限的时间内进行大量的试错。
device_gnss.csv中的伪距有缺失,所以我自己从gnss_log.txt转换伪距更准确。HardwareClockDiscontinuedCount标志改变时,会发生周跳,ADR变得不连续。这种情况只发生在Pixel4/4XL的某些运行中。在这种情况下,ADR几乎不可用。