如何使用 g2o 优化多约束函数
How to optimize multi-constraint function with g2o
我目前正在尝试优化SLAM的多约束函数。经典优化功能使用 g2o 最大限度地减少重投影误差,如 https://fzheng.me/2016/03/15/g2o-demo/中提出的。
我的问题是我不知道如何修改这个 g2o 示例代码以联合优化两个约束(例如:1 个重投影误差约束和 1 个惯性误差约束(。
问候
若要包含自定义约束,必须实现一个 BaseEdge<> 子类的规范。
BaseEdge 有 3 个子类<>分别是 BaseUnaryEdge<>(用于自我约束(、BaseBinaryEdge<>(在 2 个节点之间(和 BaseMultiEdge<>(任意数量的节点(。
惯性误差是一种自我约束,因此必须指定 BaseUnaryEdge 的实现。
必须在自定义类中仅实现 computeError(( 方法,但您也可以实现 linearizeOplus(( 来手动设置雅可比矩阵。
然后,您可以按照您发布的示例代码进行操作。实例化优化器、创建顶点、添加重投影约束并添加自定义惯性约束。
相关文章:
- 函数作为模板参数,是否对返回类型强制约束
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 纯函数,为什么没有优化
- 受约束的成员函数和显式模板实例化
- 线性优化目标函数中的绝对值
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- 何时允许编译器优化复制构造函数
- C++延迟后的优化器调用函数
- 未使用的C++未优化的静态成员函数/变量
- 我应该保留这个函数来查找第 n 个素数还是可以优化?
- 在 C++20 中对概念约束函数进行排序的规则是什么?
- 如何使用 g2o 优化多约束函数
- GCC 能否优化具有相同主体的函数的代码大小?
- 约束类模板函数以接受特定的 POD 类型
- 对于优化级别为 0 的 std::vector,析构函数被调用两次
- 函数优化传递
- 使用函数优化数组中的代码最大元素
- 变量的cplex约束函数
- 从Arduino约束函数端口
- C++11移动构造函数优化