G2O

slam十四讲:g2o代码运次错误

error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<3, 1> >::BlockSolver(g2o::BlockSolver<g2o::BlockSolverTraits<3, 1> >::LinearSolverType*&)’
Block* solver_ptr = new Block( linearSolver );
双击报错内容,定位到报错代码位置,修改代码:

typedef g2o::BlockSolver< g2o::BlockSolverTraits<3,1> > Block;
Block::LinearSolverType* linearSolver = new g2o::LinearSolverDense<Block::PoseMatrixType>();
Block* solver_ptr = new Block( std::unique_ptr<Block::LinearSolverType>(linearSolver) );
g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(std::unique_ptr<Block>(solver_ptr) );
g2o::SparseOptimizer optimizer;   
optimizer.setAlgorithm( solver );   
optimizer.setVerbose( true ); 

参考链接:https://www.cnblogs.com/xueyuanaichiyu/p/7921382.html

g2o CmakeLists.txt 写法:

方法1:

set( CMAKE_CXX_FLAGS "-std=c++11" )
list(APPEND CMAKE_MODULE_PATH  /home/XXX/g2o/cmake_modules)
  set(G2O_ROOT /home/XXX/g2o)
  find_package( G2O REQUIRED )
  include_directories(
        ${G2O_INCLUDE_DIRS}
        "/usr/include/eigen3" )

方法2:

CMAKELIsts.txt:
set( CMAKE_CXX_FLAGS "-std=c++11" )
list( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules )
# 寻找G2O
#不使用 find_package( G2O REQUIRED )命令,否则会报错。
find_package( G2O )
include_directories( 
    ${G2O_INCLUDE_DIRS}
    "/usr/include/eigen3"
)
# OpenCV
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_DIRS} )
add_executable( curve_fitting main.cpp )
# 与G2O和OpenCV链接
target_link_libraries( curve_fitting 
    ${OpenCV_LIBS}
    g2o_core g2o_stuff
)

参考链接:https://blog.csdn.net/zhiwei121/article/details/89053469

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值