本文主要是介绍cartographer ceres后端优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这里引用一篇文章
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()?
建议优先显式添加,熟悉其用法,这里先不关注作用二。
1. landmark与node
知道了AddParameterBlock的作用是添加优化变量,我们主要看cartographer中的残差构造函数。
problem
这篇关于cartographer ceres后端优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!