返回列表

7th place solution

447. Google Smartphone Decimeter Challenge | google-smartphone-decimeter-challenge

开始: 2021-05-12 结束: 2021-08-04 自动驾驶感知 数据算法赛
第7名解决方案
作者:T88 (MASTER) | 比赛排名:第7名

首先,我要感谢主办方组织这次比赛。我以个人身份从头到尾参加了这次比赛,虽然这是一场非常艰难的比赛,但它非常有意义,让我有机会体验有趣的GNSS技术。

以下是我的解决方案。

1. 基线改进

我基于这个笔记本重建了基线。
对于isrbm,我使用了每个手机-卫星的中值。

1-1. 卫星选择

我通过将误差源的卫星排除在最小二乘计算之外,改进了基线。

对于过滤条件,我主要使用了仰角。来自低仰角卫星的信号被排除,因为它们受到各种误差的强烈影响。

1-2. 载波平滑

使用累积增量距离(ADR)进行伪距平滑,如这个笔记本所述。原始伪距和之前的伪距 + ADR差分按一定比例混合,形成最终的伪距。ADR是相对的但很准确,因此可以将其与伪距的绝对值结合以提高准确性。由于ADR可能因周跳而具有零累积值,我仅在 AccumulatedDeltaRangeState = 25 时应用载波平滑。

2. 相对位置估计

2-1. 利用多普勒频移计算车辆速度

卫星与车辆之间的相对速度可以通过信号的频率变化(多普勒频移)来确定。要确定车辆的速度,我们需要卫星的位置、车辆的位置、卫星的速度、卫星与车辆之间的距离以及多普勒频移。卫星的位置和速度作为数据给出。车辆的位置以及卫星与车辆之间的距离是从基线改进的计算结果中获得的(需要从伪距中减去钟差)。多普勒频移以 PseudorangeRateMetersPerSecond 的形式给出。然后利用来自多个卫星的信息,通过最小二乘法计算车辆速度。

通过这种方法获得的车辆速度(以及由此计算出的相对位置)非常准确,是提高分数的主要因素。

2-2. 机器学习预测(添加IMU数据)

由于在2-1中获得的相对位置在某些地方缺失,我还结合了IMU传感器数据创建了一个机器学习模型来补充它们。我使用IMU和车辆速度的滞后和滚动特征在lightGBM中建立了一个预测模型。

3. 拒绝异常值

基线中存在一些异常值,我将把它们移除。

3-1. 异常高速

排除与前一点和后一点距离非常大的点。

3-2. 基于真值

由于某些区域的测试和训练路径重叠,我能够利用训练集的真值来确定异常值。计算每个点到真值数据的最近距离,将高于阈值的点作为异常值移除。

3-3. 基于相对位置计算的参考点

由于许多测试数据的路径在训练集中不存在,3-2方法只能在非常有限的情况下使用。为了解决这个问题,我创建了一个可以用作真值替代的参考点。
为此,我使用了在2中计算的相对位置。从每个时间的坐标点开始,基于累积的相对值计算一定时间前后的坐标。通过在每个时间点滑动此过程,可以在每个时间获得大量估计值。这些估计值的准确性高度取决于起始点绝对坐标的准确性。如果起始点是异常值,估计值也将是异常值,但这并不频繁,可以通过截断估计值来消除影响。然后,我们根据每个点估计值的平均值和标准偏差计算了一个阈值,并用它来移除异常值。

4. 后处理

4-1. 卡尔曼平滑

我直接使用了这个笔记本

4-2. 处理速度为0的时段

正如这个笔记本中所讨论的,当汽车停止时,绝对坐标往往高度分散。为了解决这个问题,我创建了一个模型来预测停止,并将预测为停止的连续时段替换为这些数据的平均值。

4-3. 代价最小化

我使用了cost_minimization笔记本。基于在2中获得的相对位置提高了绝对坐标的准确性。

4-4. 位置偏移

我直接使用了这个笔记本

同比赛其他方案