Ceres作为一个优化算法库,在许多领域中有着至关重要的作用,比如slam系统中的优化问题-集束调整BA,就可以通过Ceres去实现,官方文档地址:http://ceres-solver.org/nnls_tutorial.html#bundle-adjustment
本文主要是解析ceres中的LM算法过程,参考代码地址:
https://github.com/ceres-solver/ceres-solver/tree/master/internal/ceres
一、主要流程
先贴个图,LM算法的大概流程如下

可以看到,LM算法的输入为(1)雅可比矩阵J(x);(2)残差向量f(x);(3)待优化变量初值x0;(4)控制参数等
LM算法要求解的问题为:
其中为残差函数,它的导函数为
,二阶导函数的近似为
分为几个步骤:
(1)初始化:首先计算系数矩阵A和残差向量g,初始化参数
(2)while循环:如果达到收敛条件就停止迭代
(3)求解 (A+miu*I)dx = -g
(4) xnew = x+dx
(5)

最低0.47元/天 解锁文章
3713

被折叠的 条评论
为什么被折叠?



