pose_estimation_3d2d中显示错误的代码段为初始化g2o中的片段:
// 初始化g2o
typedef g2o::BlockSolver< g2o::BlockSolverTraits<6,3> > Block; // pose 维度为 6, landmark 维度为 3
Block::LinearSolverType* linearSolver = new g2o::LinearSolverCSparse<Block::PoseMatrixType>(); // 线性方程求解器
Block* solver_ptr = new Block ( linearSolver ); // 矩阵块求解器
g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg( solver_ptr );
g2o::SparseOptimizer optimizer;
optimizer.setAlgorithm ( solver );
是这一句报错:
g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg( solver_ptr );
报错的内容大概意思是不能使用这个库中的内容,但是我刚刚装好的g2o,却显示无法获得这个库的函数,有点奇怪。
搜了一波,找到了解决方法,原来要配置环境(与配置opencv相同,告诉系统你安装了g2o库的位置,让他赶紧去调用):
打开这个文件:
sudo gedit /etc/ld.so.conf