g2o::make_unique<BlockSolverType>(g2o::make_unique<LinearSolverType>()));报错
因为版本差异
auto solver = new g2o::OptimizationAlgorithmGaussNewton( g2o::make_unique<BlockSolverType>(g2o::make_unique<LinearSolverType>())); 报错
替换代码为
点击查看代码
//定义块求解器:位姿维度6,路标维度3(此处路标固定,仅优化位姿)
typedef g2o::BlockSolver<g2o::BlockSolverTraits<6,3>>BlockSolverType;
//定义线性求解器:愁摩线性求解器,对应块求解器的位姿矩阵类型
typedef g2o::LinearSolverDense<BlockSolverType::PoseMatrixType>LinearSolverType;
//构建优化算法:高斯牛顿法(可替换为LM DOGLEG)
auto linear_solver=std::make_unique<LinearSolverType>();
auto blockSolver=std::make_unique<BlockSolverType>(std::move(linear_solver));
auto solver=std::make_unique<g2o::OptimizationAlgorithmGaussNewton>(std::move(blockSolver));
g2o::SparseOptimizer optimizer;
optimizer.setAlgorithm(solver.release());
optimizer.setVerbose(true);

浙公网安备 33010602011771号