MCPcopy Create free account
hub / github.com/UZ-SLAMLab/ORB_SLAM3 / PoseInertialOptimizationLastKeyFrame

Method PoseInertialOptimizationLastKeyFrame

src/Optimizer.cc:4491–4873  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4489}
4490
4491int Optimizer::PoseInertialOptimizationLastKeyFrame(Frame *pFrame, bool bRecInit)
4492{
4493 g2o::SparseOptimizer optimizer;
4494 g2o::BlockSolverX::LinearSolverType * linearSolver;
4495
4496 linearSolver = new g2o::LinearSolverDense<g2o::BlockSolverX::PoseMatrixType>();
4497
4498 g2o::BlockSolverX * solver_ptr = new g2o::BlockSolverX(linearSolver);
4499
4500 g2o::OptimizationAlgorithmGaussNewton* solver = new g2o::OptimizationAlgorithmGaussNewton(solver_ptr);
4501 optimizer.setVerbose(false);
4502 optimizer.setAlgorithm(solver);
4503
4504 int nInitialMonoCorrespondences=0;
4505 int nInitialStereoCorrespondences=0;
4506 int nInitialCorrespondences=0;
4507
4508 // Set Frame vertex
4509 VertexPose* VP = new VertexPose(pFrame);
4510 VP->setId(0);
4511 VP->setFixed(false);
4512 optimizer.addVertex(VP);
4513 VertexVelocity* VV = new VertexVelocity(pFrame);
4514 VV->setId(1);
4515 VV->setFixed(false);
4516 optimizer.addVertex(VV);
4517 VertexGyroBias* VG = new VertexGyroBias(pFrame);
4518 VG->setId(2);
4519 VG->setFixed(false);
4520 optimizer.addVertex(VG);
4521 VertexAccBias* VA = new VertexAccBias(pFrame);
4522 VA->setId(3);
4523 VA->setFixed(false);
4524 optimizer.addVertex(VA);
4525
4526 // Set MapPoint vertices
4527 const int N = pFrame->N;
4528 const int Nleft = pFrame->Nleft;
4529 const bool bRight = (Nleft!=-1);
4530
4531 vector<EdgeMonoOnlyPose*> vpEdgesMono;
4532 vector<EdgeStereoOnlyPose*> vpEdgesStereo;
4533 vector<size_t> vnIndexEdgeMono;
4534 vector<size_t> vnIndexEdgeStereo;
4535 vpEdgesMono.reserve(N);
4536 vpEdgesStereo.reserve(N);
4537 vnIndexEdgeMono.reserve(N);
4538 vnIndexEdgeStereo.reserve(N);
4539
4540 const float thHuberMono = sqrt(5.991);
4541 const float thHuberStereo = sqrt(7.815);
4542
4543 {
4544 unique_lock<mutex> lock(MapPoint::mGlobalMutex);
4545
4546 for(int i=0; i<N; i++)
4547 {
4548 MapPoint* pMP = pFrame->mvpMapPoints[i];

Callers

nothing calls this directly

Calls 15

BiasFunction · 0.85
setVerboseMethod · 0.80
setAlgorithmMethod · 0.80
GetWorldPosMethod · 0.80
setVertexMethod · 0.80
setMeasurementMethod · 0.80
setInformationMethod · 0.80
setRobustKernelMethod · 0.80
setLevelMethod · 0.80
SetImuPoseVelocityMethod · 0.80
setIdMethod · 0.45

Tested by

no test coverage detected