mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 01:20:25 +08:00
fixed build with latest g2o c++17 (#999)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user