447. Google Smartphone Decimeter Challenge | google-smartphone-decimeter-challenge
首先,我要感谢所有参与这次比赛的人。这两个月过得非常愉快。
虽然我是 GNSS 领域的研究员,但这还是我第一次处理来自智能手机的原始 GNSS 数据。将智能手机的原始 GNSS 数据与用于无人机和移动机器人的商用 GNSS 接收器相比,我有以下几点印象:
我意识到我平时接触的都是非常干净的 GNSS 数据……由于大量的路线和各种智能手机(还有很长的变量名……),这次比赛非常非常艰难。老实说,我不想再看智能手机上的 GNSS 数据了!😐
最后,我没有使用 Phone_derived.csv。Phone_derived.csv 文件中有一些数据缺失。我直接从 RINEX 导航文件计算了卫星的位置和速度。基准位置和 IMU 数据也没有使用。
因子图是一类图形模型,其中包含变量和因子。变量代表问题中的未知量,因子代表变量子集上的函数。因子图中的边总是在因子和变量之间,表示特定因子依赖于特定变量。(摘自此处)
我方法的核心是使用基于因子图的全局优化方法。这里和这里已经使用了几种优化方法,并取得了良好的效果。因子图优化是一种可以应用各种复杂非线性约束并同时优化所有状态变量(整个行驶轨迹)的方法。各种约束(图中的边)中有许多异常值,但鲁棒的优化技术消除了手动设置异常值阈值参数的需要。有关因子图的更多信息,请参阅此页面。
我尝试了许多不同的图结构,最终使用以下因子图进行了图优化。

图节点 \(X_i\) 表示不同时刻的状态变量,连接两个节点的边表示误差函数 \(e(\cdot)\);每条边对应一个观测值 \(Z_i\)。在图中,误差函数 \(e(\cdot)\) 表示应用于指定时间步状态的概率约束。优化因子图可以写成如下形式。

这里,\(\Omega_i\) 是信息矩阵(协方差矩阵的逆),决定了观测值 \(Z_i\) 的精度。我们将以下内容定义为图的节点(估计状态)。


其中 \(r\) 和 \(\dot{r}\) 是地心地固坐标系(ECEF)中的三维位置/速度。\(t\) 和 \(\dot{t}\) 表示每个 GNSS 信号中的接收机钟偏差和漂移。
这里,图中的 \(s\) 是一个可切换约束,它是一个取值在 0 到 1 之间的变量状态。可切换约束的值通过优化同时估计。在异常值的边上,可切换约束会自动优化为 0,并充当观测值的权重。优化问题可以描述如下。