首页 > 代码库 > Ceres学习笔记

Ceres学习笔记

1.关于CostFunctor的定义

  (1)对于残差项的函数表达式已知情况,无需带参构造函数,而直接在operate()函数中写出残差项

  (2)operate()的参数分为输入参数和输出参数,输入输出参数都可以分为一组或多组,具体如何分组视具体情况。

  当输入(或输出)较少且有具体的意义时,可以一个参数编为一组。而对输入(或输出)较多时,则可将所有参数都为一组,这样使得代码简明

  (3)operate()可以包含一个或多个残差项,包含多少残差项就有多少个输出参数,同时包含的残差项不同,其输入参数个数也可能不同。

  (4)对于残差项的表达式都已知且每个残差项的表达式都不一样的情况,通常都是将所有残差项写在一个CostFunctor中,这样就可以一次性添加到Promblem中,

  而对于像曲线拟合等残差项的表达式都是一样且残差项的个数也可能未知的情况,则可以定义一个统一的CostFuntor,然后通过循环逐个加入Problem,当然此时CostFunctor

  通常含有带参的构造函数。

Ceres学习笔记