在VIO问题中,如果不考虑算力消耗,那么视觉滑动窗口长度无限大无疑是精度最高的方案。
那么在实际中如何平衡算力与精度问题?几乎所有的VIO算法都会设定一个固定大小的窗口来降低整个优化问题的复杂度,并能保持一定的精度。比如VINS-MONO 窗口大小一般设定为 11
实际上,滑窗的大小是可以动态的适应环境的。
一般的,可以分两种case考虑:
- 长走廊,这种case滑窗越长越好,因为视野中的特征点可以长期的被连续跟踪
- 拐弯,这种case滑窗长度太大也没有意义,因为转角这里几乎会逐步丢失所有较老的视觉特征点
看起来滑窗是需要动态调整大小的,那么还有一个问题,如何平衡算力消耗:
我们可以维护一个很长的窗口,然后BA优化时固定窗口内的较老的关键帧位姿,不让太多帧参与优化,但是可以让较老帧与最新帧、次新帧等建立视觉约束。优先从最老帧为最新帧、次新帧等构建视觉约束,并为每一帧较新视觉帧限制总视觉约束数量。
比如长直走廊中,那么就相当于一直在用位姿固定的第一帧图像和最新帧建立视觉约束关系,在整个过程中几乎不存在累计误差,并且算力消耗可控。