ORB-SLAM3 optimizer.initializeOptimization(0);
从 g2o 文档/源码角度来看:
initializeOptimization(level)的功能是准备优化:构建海森矩阵结构,设置活跃边/顶点,可能包括某些变量的固定等。参数
level通常是 0,表示使用所有级别的边。边的默认level都是0,并且只有edge_level<=level=0时,这个边才会参与优化,否则不参与优化。但在 ORB-SLAM3 中,外点会被设置setLevel(1),当调用initializeOptimization(0)时,level=1 的边将被排除在外,不会构建到海森矩阵中。这就是剔除离群点的机制。
所以我们要解释:
initializeOptimization的基本作用:重置优化器内部状态,根据当前活跃的顶点和边构建新的增量方程结构。参数 level:边的级别,用于控制哪些边参与优化。
在 PoseOptimization 中的具体用法:每次外点剔除后,重新初始化优化,使外点边不参与下一轮优化。
为什么用 0:因为外点边 level 设为 1,而我们要的是 level <= 0 的边参与,即 level 为 0 的边(内点)。
在&nb
