g2o不同线性方程求解器(LinearSolver)的区别

g2o最终会把优化问题变换成一个Ax=b的线性方程组求解问题。

求解线性方程组有很多方法,也有很多实现库。g2o提供了几个选择:

  1. Dense:LinearSolverDense
  2. Eigen:LinearSolverEigen
  3. CSparse:LinearSolverCSparse
  4. Cholmod:LinearSolverCholmod
  5. PCG:LinearSolverPCG

具体指定用哪一个是在初始化优化器的时候确定的。

g2o::SparseOptimizer optimizer;
g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(g2o::make_unique<g2o::BlockSolverX>(g2o::make_unique<g2o::LinearSolverEigen<g2o::BlockSolverX::PoseMatrixType>>()));
optimizer.setAlgorithm(solver);

这四种方法中,除Dense外都是稀疏求解,因为SLAM的优化问题一般都具有稀疏性,所以一般不用Dense方法。另外因为CSparse和Cholmod是特殊的三方库(有版权问题,而且很多平台支持不太好),所以正常情况下就用LinearSolverEigen就行了。

作者在LinearSolverEigen的头文件里面也说了,效果应该和CSparse相似

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值