【SLAM】滑动窗口法及其优化求解实践

1.大规模下的BA问题

【SLAM】滑动窗口法及其优化求解实践_第1张图片

我们知道,在一个完整而实际的slam系统中,BA的计算量规模会随着系统的运行,其规模越来越大,这在实际运行中是不能被允许的,因为这会严重影响SLAM系统的运行。试想一下,如果在例如一个西安市这种规模的建图问题上,把每一帧图像作为要BA优化的部分,这是难以想象的规模。

【SLAM】滑动窗口法及其优化求解实践_第2张图片

因此,在BA优化中,我们会严格控制其需要进行的优化量,这种办法有很多,比如提取关键帧,这样的的话,我们只需要优化关键帧即可,至于非关键帧,我们就不用管他,当然,对于非关键帧,也可以用于定位检测等,不再用于建图优化。

举一个简单的例子,就是在进行BA优化的时候,保留距离当前时刻最近的关键帧,对于更早的关键帧,就不做保留了。

当然,只考虑时间上的临近是一个好于理解,但不是很好的办法。这种办法也可以称之为滑动窗口法。但是对于这种窗口的选择,我们有很多办法,比如考虑的要素既有时间,也包括空间等等。

> 首先要明确的是,在窗口中删除关键帧的技术并不是字面上的直接删除,而是前面提到的边缘化,因为直接丢掉变量,就导致损失了信息,关键帧1可能能更多地约束相邻的关键帧,直接丢掉的方式就破坏了这些约束。但是边缘化也带来了一些问题:首先,边缘化会将被边缘化掉的变量所带有的信息转化为先验增加到H矩阵中(Fill-in),这样会破坏BA的稀疏结构;而且,在滑动窗口中使用标准的边缘化操作会导致在新窗口中,与被边缘化的变量相关的变量会在不同的线性化点计算雅可比(因为每次BA的线性化点不同),破坏了系统的一致性。

2.滑动窗口法

【SLAM】滑动窗口法及其优化求解实践_第3张图片

【SLAM】滑动窗口法及其优化求解实践_第4张图片

对于一个滑动窗口上所有的关键帧,我们需要对其进行BA求解,这和之前介绍的优化求解并没有什么区别。

在系统运行中,滑动窗口会随时增加核减少关键帧,这就是在一批关键帧中,每次增加一个,每次减少一个,这样的话,BA优化要如何实现呢?

根据之前所介绍的,这里的删除关键帧,是通过边缘化,就是消元所得到的,联系到之前的H矩阵,这是一个有着特殊结构的矩阵,在经过消元后明显会被破话掉H矩阵的结构。

也即是H矩阵的稀疏性被破坏了。

这样要怎么办呢?其实,我们只需要同时将要删除的关键帧和此关键帧观察到的三维点同时去掉就可以了,相当于BA优化只优化剩下的关键帧,当然,这是一个简化的办法,在实际系统中,有着非常复杂的判断和执行方式。

3.实践


#include 

using namespace std;

int maxSum(int arr[], int n, int k)
{
    if (n < k)
    {
        cout << "Invaild";
        return -1;
    }
    int max_sum = 0;
    for (int i=0; i<k; i++)="" {="" max_sum="" +="arr[i];" }="" int="" windows_sum="max_sum;" for="" (int="" i="k;" i<n;="" -="" arr[i="" k];="" windows_sum);="" return="" max_sum;="" main()="" arr[]="{1," 4,="" 2,="" 10,="" 3,="" 1,="" 0,="" 20};="" k="4;" n="sizeof(arr)" sizeof(arr[0]);="" cout="" <<="" maxsum(arr,="" n,="" k);="" 0;="" ```="" [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TNOGKyYW-1590475350724)(https:="" b03.ickimg.com="" 202005="" 32eb2ebbc08cb6733387254c4ded8c2e.png)]="" #="" 4.大神的看法="" 贺博如此说:="" b05.ickimg.com="" af0f5cb8813d2d38536f3bea514f9964.jpg)="" 5.小结="" d1e7d518366f166fd8f60c44ddd3daa1.png)=""
 这里,我们就介绍了ba优化的大规模应用遇到的问题与求解方法,其实,这个问题现在也依然是很多研究者需要研究的办法,如何你可以想出更好的办法,可以交流和表达意见与建议。=""
> 参考资料:
geeksforgeeks算法题目
DSO中的Windowed Optimization</k;></iostream>

你可能感兴趣的:(SLAM,计算机视觉,算法,人工智能)