这里引用一篇文章
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中的残差
本文详细探讨了cartographer中ceres后端的优化过程,特别是`AddParameterBlock`的作用。该作用包括显式添加参数块以进行正确性检查,以及与LocalParameterization对象的关联。文章通过landmark与node、submap与node、node与node以及gps-node与node四种关系的残差构造来说明cartographer中不同类型的约束关系。
订阅专栏 解锁全文
1341

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



