如何使用 g2o 优化多约束函数

How to optimize multi-constraint function with g2o

本文关键字:约束函数 优化 g2o 何使用      更新时间:2023-10-16

我目前正在尝试优化SLAM的多约束函数。经典优化功能使用 g2o 最大限度地减少重投影误差,如 https://fzheng.me/2016/03/15/g2o-demo/中提出的。

我的问题是我不知道如何修改这个 g2o 示例代码以联合优化两个约束(例如:1 个重投影误差约束和 1 个惯性误差约束(。

问候

若要包含自定义约束,必须实现一个 BaseEdge<> 子类的规范。

BaseEdge 有 3 个子类<>分别是 BaseUnaryEdge<>(用于自我约束(、BaseBinaryEdge<>(在 2 个节点之间(和 BaseMultiEdge<>(任意数量的节点(。

惯性误差是一种自我约束,因此必须指定 BaseUnaryEdge 的实现。

必须在自定义类中仅实现 computeError(( 方法,但您也可以实现 linearizeOplus(( 来手动设置雅可比矩阵。

然后,您可以按照您发布的示例代码进行操作。实例化优化器、创建顶点、添加重投影约束并添加自定义惯性约束。