(Bundle Adjustment) 优化器工具类,把所有的优化器接口都集中到这里了。
主要接口
全部为静态成员函数。
- 基础 BA, 给定关键帧和地图点。
void static BundleAdjustment( const std::vector<KeyFrame*> &vpKF, const std::vector<MapPoint*> &vpMP, int nIterations = 5, bool *pbStopFlag=NULL, const unsigned long nLoopKF=0, const bool bRobust = true); - Global BA, 给定地图。
void static GlobalBundleAdjustemnt( Map* pMap, int nIterations=5, bool *pbStopFlag=NULL, const unsigned long nLoopKF=0, const bool bRobust = true); - 局部 BA, 给定插入的关键帧和地图。
void static LocalBundleAdjustment(KeyFrame* pKF, bool *pbStopFlag, Map *pMap);相比全局BA, 少了一些参数。
- 位姿优化:
int static PoseOptimization(Frame* pFrame); - 优化本质图:
void static OptimizeEssentialGraph(Map* pMap, KeyFrame* pLoopKF, KeyFrame* pCurKF, const LoopClosing::KeyFrameAndPose &NonCorrectedSim3, const LoopClosing::KeyFrameAndPose &CorrectedSim3, const map<KeyFrame *, set<KeyFrame *>> &LoopConnections, const bool &bFixScale);输入当前关键帧和找到的回环关键帧,做 Essential Graph 优化。
bFixScale为真表示尺度需要优化(单目)。 - 优化 Sim3:
static int OptimizeSim3( KeyFrame* pKF1, KeyFrame* pKF2, std::vector<MapPoint *> &vpMatches1, g2o::Sim3 &g2oS12, const float th2, const bool bFixScale);