这里引用一篇文章
https://zhuanlan.zhihu.com/p/567635409
因为cartographer中的代码有的地方添加了AddParameterBlock,有的地方没有添加,会引起歧义,原来AddParameterBlock可以隐式添加优化变量,这篇文章介绍了具体原因,核心内容如下:
- AddParameterBlock的作用
作用一:用户可以选择使用Problem::AddParameterBlock显式添加参数块;
在显式添加的时候ceres会内部进行额外的正确性检查。
当Problem::AddParameterBlock()不存在时,Problem::AddResidualBlock()会隐式添加参数块,因此不需要显式调用Problem::AddParameterBlock()函数。
ps:类似构造函数,显式构造函数。
作用二:Problem::AddParameterBlock()另一个作用是将LocalParameterization对象与参数块相关联。
那么什么时候使用Problem::AddParameterBlock()?
建议优先显式添加,熟悉其用法,这里先不关注作用二。