435. Indoor Location & Navigation | indoor-location-navigation
祝贺所有的获奖者!特别祝贺我的队友 @Ouranos,在这场非常有趣的比赛后他也成为了 Grand Master。我们在最后一周组队,这给了我们巨大的提升。虽然最后出了点小插曲,但我们还是拿到了金牌 😊
我的工作主要集中在解决方案的后处理上。问题在于如何在路径层面同时考虑以下几点:用于位置的回归模型、来自传感器的相对信息、通过识别唯一设备获得的路径序列,以及最重要的是,位置是在网格
有趣的是,可以将其表述为网格上的组合优化问题,其成本函数表达了我们需要一个网格上的解,尽可能接近回归模型,尽可能与传感器获得的增量(deltas)一致,并同时利用路径序列的信息。
对于有限的网格点 Xg 和具有 nt 步的给定路径 p,模型 X(t),传感器相对位置 Delta(t),前一条和后一条路径的信息 Xpr, Deltat_p, Xn, DeltaT_n,我们可以写出成本函数:
给定合适的 alpha、gamma 和 epsilon,该表达式可以使用关于 t 的动态规划进行精确优化。
在我们的案例中,模型由 @Ouranos 开发。它是 3 个 LSTM 模型的平均值,其中一个是针对每栋建筑特定的,并通过伪标签进行了训练:
训练 -> 后处理 -> 伪标签训练 -> 后处理
增量是使用组织者在他们的 GitHub 上提供的代码计算的,序列的获取方式在讨论区有描述。我们使用 .txt 文件中提供的设备信息的哈希值:
# Brand:OPPO Model:PBCM10 AndroidName:8.1.0 APILevel:27
# type:1 name:BMI160 Accelerometer version:2062600 vendor:BOSCH resolution:0.0023956299 power:0.18 maximumRange:39.22661
# type:4 name:BMI160 Gyroscope version:2062600 vendor:BOSCH resolution:0.0010681152 power:0.9 maximumRange:34.906586
# type:2 name:AK09911 Magnetometer version:1 vendor:AKM resolution:0.5996704 power:2.4 maximumRange:4911.9995
# type:35 name:BMI160 Accelerometer Uncalibrated version:2062600 vendor:BOSCH resolution:0.0023956299 power:0.18 maximumRange:39.22661
# type:16 name:BMI160 Gyroscope Uncalibrated version:2062600 vendor:BOSCH resolution:0.0010681152 power:0.9 maximumRange:34.906586
# type:14 name:AK09911 Magnetometer Uncalibrated version:1 vendor:AKM resolution:0.5996704 power:2.4 maximumRange:4911.9995
# VersionName:v20191120-nightly-9-gde3748b VersionCode:424
当没有提供信息时,路径的前 5 个字符是一个很好的代理。
在开始优化之前,我们通过两种类型的点动态扩展原始网格: