bool MainWindow::prepare() { SparseOptimizer* optimizer = viewer->graph; if (_currentOptimizationAlgorithmProperty.requiresMarginalize) { cerr << "Marginalizing Landmarks" << endl; for (SparseOptimizer::VertexIDMap::const_iterator it = optimizer->vertices().begin(); it != optimizer->vertices().end(); ++it) { OptimizableGraph::Vertex* v = static_cast<OptimizableGraph::Vertex*>(it->second); int vdim = v->dimension(); v->setMarginalized((vdim == _currentOptimizationAlgorithmProperty.landmarkDim)); } } else { cerr << "Preparing (no marginalization of Landmarks)" << endl; for (SparseOptimizer::VertexIDMap::const_iterator it = optimizer->vertices().begin(); it != optimizer->vertices().end(); ++it) { OptimizableGraph::Vertex* v = static_cast<OptimizableGraph::Vertex*>(it->second); v->setMarginalized(false); } } viewer->graph->initializeOptimization(); return true; }