fixed build with latest g2o c++17 (#999)

This commit is contained in:
matlabbe
2023-03-22 20:42:33 -07:00
parent 50a0961f4e
commit 85cc6fe3c7
2 changed files with 79 additions and 80 deletions

View File

@@ -1,4 +1,3 @@
/*
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
All rights reserved.
@@ -154,7 +153,7 @@ OptimizerG2O::OptimizerG2O(const ParametersMap & parameters) :
if(!g2o::Factory::instance()->knowsTag("CACHE_SE3_OFFSET"))
{
#if defined(RTABMAP_G2O_CPP11) && RTABMAP_G2O_CPP11 == 1
g2o::Factory::instance()->registerType("CACHE_SE3_OFFSET", g2o::make_unique<g2o::HyperGraphElementCreator<g2o::CacheSE3Offset> >());
g2o::Factory::instance()->registerType("CACHE_SE3_OFFSET", std::make_unique<g2o::HyperGraphElementCreator<g2o::CacheSE3Offset> >());
#else
g2o::Factory::instance()->registerType("CACHE_SE3_OFFSET", new g2o::HyperGraphElementCreator<g2o::CacheSE3Offset>);
#endif
@@ -250,17 +249,17 @@ std::map<int, Transform> OptimizerG2O::optimize(
if(solver_ == 3)
{
//eigen
auto linearSolver = g2o::make_unique<SlamLinearEigenSolver>();
auto linearSolver = std::make_unique<SlamLinearEigenSolver>();
linearSolver->setBlockOrdering(false);
blockSolver = g2o::make_unique<SlamBlockSolver>(std::move(linearSolver));
blockSolver = std::make_unique<SlamBlockSolver>(std::move(linearSolver));
}
#ifdef G2O_HAVE_CHOLMOD
else if(solver_ == 2)
{
//chmold
auto linearSolver = g2o::make_unique<SlamLinearCholmodSolver>();
auto linearSolver = std::make_unique<SlamLinearCholmodSolver>();
linearSolver->setBlockOrdering(false);
blockSolver = g2o::make_unique<SlamBlockSolver>(std::move(linearSolver));
blockSolver = std::make_unique<SlamBlockSolver>(std::move(linearSolver));
}
#endif
#ifdef G2O_HAVE_CSPARSE
@@ -268,16 +267,16 @@ std::map<int, Transform> OptimizerG2O::optimize(
{
//csparse
auto linearSolver = g2o::make_unique<SlamLinearCSparseSolver>();
auto linearSolver = std::make_unique<SlamLinearCSparseSolver>();
linearSolver->setBlockOrdering(false);
blockSolver = g2o::make_unique<SlamBlockSolver>(std::move(linearSolver));
blockSolver = std::make_unique<SlamBlockSolver>(std::move(linearSolver));
}
#endif
else
{
//pcg
auto linearSolver = g2o::make_unique<SlamLinearPCGSolver>();
blockSolver = g2o::make_unique<SlamBlockSolver>(std::move(linearSolver));
auto linearSolver = std::make_unique<SlamLinearPCGSolver>();
blockSolver = std::make_unique<SlamBlockSolver>(std::move(linearSolver));
}
if(optimizer_ == 1)
@@ -1427,7 +1426,7 @@ std::map<int, Transform> OptimizerG2O::optimizeBA(
{
//eigen
#ifdef RTABMAP_G2O_CPP11
linearSolver = g2o::make_unique<g2o::LinearSolverEigen<g2o::BlockSolver_6_3::PoseMatrixType> >();
linearSolver = std::make_unique<g2o::LinearSolverEigen<g2o::BlockSolver_6_3::PoseMatrixType> >();
#else
linearSolver = new g2o::LinearSolverEigen<g2o::BlockSolver_6_3::PoseMatrixType>();
#endif
@@ -1437,7 +1436,7 @@ std::map<int, Transform> OptimizerG2O::optimizeBA(
{
//chmold
#ifdef RTABMAP_G2O_CPP11
linearSolver = g2o::make_unique<g2o::LinearSolverCholmod<g2o::BlockSolver_6_3::PoseMatrixType> >();
linearSolver = std::make_unique<g2o::LinearSolverCholmod<g2o::BlockSolver_6_3::PoseMatrixType> >();
#else
linearSolver = new g2o::LinearSolverCholmod<g2o::BlockSolver_6_3::PoseMatrixType>();
#endif
@@ -1448,7 +1447,7 @@ std::map<int, Transform> OptimizerG2O::optimizeBA(
{
//csparse
#ifdef RTABMAP_G2O_CPP11
linearSolver = g2o::make_unique<g2o::LinearSolverCSparse<g2o::BlockSolver_6_3::PoseMatrixType> >();
linearSolver = std::make_unique<g2o::LinearSolverCSparse<g2o::BlockSolver_6_3::PoseMatrixType> >();
#else
linearSolver = new g2o::LinearSolverCSparse<g2o::BlockSolver_6_3::PoseMatrixType>();
#endif
@@ -1458,7 +1457,7 @@ std::map<int, Transform> OptimizerG2O::optimizeBA(
{
//pcg
#ifdef RTABMAP_G2O_CPP11
linearSolver = g2o::make_unique<g2o::LinearSolverPCG<g2o::BlockSolver_6_3::PoseMatrixType> >();
linearSolver = std::make_unique<g2o::LinearSolverPCG<g2o::BlockSolver_6_3::PoseMatrixType> >();
#else
linearSolver = new g2o::LinearSolverPCG<g2o::BlockSolver_6_3::PoseMatrixType>();
#endif
@@ -1470,7 +1469,7 @@ std::map<int, Transform> OptimizerG2O::optimizeBA(
{
#ifdef RTABMAP_G2O_CPP11
optimizer.setAlgorithm(new g2o::OptimizationAlgorithmGaussNewton(
g2o::make_unique<g2o::BlockSolver_6_3>(std::move(linearSolver))));
std::make_unique<g2o::BlockSolver_6_3>(std::move(linearSolver))));
#else
optimizer.setAlgorithm(new g2o::OptimizationAlgorithmGaussNewton(new g2o::BlockSolver_6_3(linearSolver)));
#endif
@@ -1480,7 +1479,7 @@ std::map<int, Transform> OptimizerG2O::optimizeBA(
{
#if defined(RTABMAP_G2O_CPP11) && !defined(RTABMAP_ORB_SLAM)
optimizer.setAlgorithm(new g2o::OptimizationAlgorithmLevenberg(
g2o::make_unique<g2o::BlockSolver_6_3>(std::move(linearSolver))));
std::make_unique<g2o::BlockSolver_6_3>(std::move(linearSolver))));
#else
optimizer.setAlgorithm(new g2o::OptimizationAlgorithmLevenberg(new g2o::BlockSolver_6_3(linearSolver)));
#endif