一种巧妙程序防秩亏的方法

最近在和师弟们讨论的时候无意中遇到这样的问题:在GNSS单点定位解算过程,如果出现秩亏问题怎么办? 开始时觉得这个没有什么意义,认为秩亏了就说明观测数目不足,无法解算就不用解算了,但是在多系统情况下,由于每多一个系统就多一组钟差观测数,而有些历元会完全缺失其中一个或多个系统的观测值,这样就出现秩亏问题,对应的钟差无法解算,而实际上位置和剩余的钟差却是可以获知的。在这种情况下解算过程中迭亏而导致求逆困难显然需要是解决的。

显然根据上述说明,显然最明显的做法就是,当完全缺失一个系统的观测值时,就将该系统的钟差去除,然后进行降维解算。不过在实际程序运行的时候,不算是一种很理想的方案,因为这个就涉及到降维解算和矩阵维数变动,在实际操作中甚为不便。

在rtklib的源码中,就使用了一种比较独特的方案解决了该问题。假设B为设计矩阵(系数阵),l为对应的残差阵, 被估参数向量X由(x,y,z,dt1,dt2)组成(参考间接平差公式\widehat{x} = (B^TPB)^{-1}B^TPl),现当前历元的无dt1对应的卫星的观测值,则可以:

1. B阵增加一列,使得与dt1对应的元素不为零,而其它元素均为零
2. 权阵对应的值任意取
3. l向量的对应的元素任意取

上述就是本质是增加一组dt1的钟差虚拟观测值解决了求逆迭亏问题。关于为何对于结果无影响的理解如下:

与降维后的平差方法相比,这种增加钟差的虚拟方法使用得观测值数据多个了一个,同时必要观测数也多了一个,而多余观测数没有发生变化。而该虚拟观测值只和增加的钟差参数相关,与其它元素不相关,因此不影响其它被估参数的平差结果。

此条目发表在CODING分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据