- 顶点的定义:
- 继承BaseVertex<定点byte数,顶点结构体>类
- 实现setToRiginImpl()函数,里面给_estimate成员函数赋初值
- _estimate的类型就是模板里指定的顶点结构体
- 实现:oplusImpl(const double * update_)。update_是指向跟新值得指针,使用前需要转换成真实的结构类型。不一定是顶点类型。比如update_可以是李代数,但顶点类型是李群。
- 可以使用esitimate()函数得到顶点的值,类型同上面的顶点结构体。
- 边的定义:
- 继承BaseBinaryEdge<观察值byte数,观察值结构体,第一个顶点的类型,第二个顶点的类型>(两个顶点的边)
- 或继承BaseUnaryEdge<观察值byte数,观察值结构体,顶点的类型>(一个顶点的边)
- 实现函数computeError(),函数里面需要计算_error的值,其他顶点和测量值的成员变量参考其他例子。
- 实现linearizeOplus(),单顶点的计算_jacobianOplusXi矩阵,双顶点的还要计算_jacobianOplusXj矩阵
- SE3Quat
- 使用map函数来变换一个3d点
- SparseOptimizer
- 这个应该是总的流程和数据管理器
- setAlgorithm设置具体计算更新值得算法
- addVertex加入顶点
- addEdge()
- addParameter()可以传入一些超参
- initializeOptimization()给顶点填入初始值
- optimize()启动优化流程
- 调用所
G2O使用要点总结
最新推荐文章于 2025-04-28 17:47:50 发布