Ceres入门——Ceres的基本使用方法
Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。Ceres官网上的文档非常详细地介绍了其具体使用方法,相比于另外一个在slam中被广泛使用的图优化库G2O,ceres的文档可谓相当丰富详细。本篇博客介绍一下Ceres库的基本使用方法。
Ceres可以解决边界约束鲁棒非线性最小二乘法优化问题。这个概念可以用以下表达式表示:
这一表达式在工程和科学领域有非常广泛的应用。比如统计学中的曲线拟合,或者在计算机视觉中依据图像进行三维模型的构建等等。
ρ i ( ∣ ∣ f i ( x i 1 , . . . , x i k ) ∣ ∣ 2 ) \rho_i(||f_i(x_{i_1},...,x_{i_k}) ||^2) ρi(∣∣fi(xi1,...,xik)∣∣2)这一部分被成为残差块(ResidualBlock),其中的 f i ( ⋅ ) f_i (\cdot) fi(⋅) 叫做代价函数(CostFunction)。代价函数依赖于一系列参数 [ x i 1 ] [x_{i_1}] [xi1] ,这一系列参数(均为标量)称为参数块(ParameterBlock)。当然参数块中也可以只含有一个变量。 l j l_j lj