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

本文深入探讨了g2o优化器如何将SLAM问题转化为线性方程组求解,详细介绍了Dense、LinearSolverEigen、CSparse、Cholmod和PCG五种求解方法,特别指出在SLAM应用中,由于问题的稀疏性,通常选择除Dense之外的方法,并推荐使用LinearSolverEigen。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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相似

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值