g2o使用bug总结

g2o进行3d2d优化的时候,设置优化图的边时,注意setVertex()中顶点的顺序。

void setVertex(size_t i, Vertex* v) { assert(i < _vertices.size() && "index out of bounds"); _vertices[i]=v;}

        p_Edge_SE3XYZ->setVertex(1, dynamic_cast<g2o::OptimizableGraph::Vertex*>(optimizer.vertex(0)));
        p_Edge_SE3XYZ->setVertex(0, dynamic_cast<g2o::OptimizableGraph::Vertex*>(optimizer.vertex(idx2)));

第0类参数应为3D点,第1类参数应为相机位姿,顺序不能错,否则会报错:

buildSystem(): NaN within Jacobian for edge 0x8bd4f0 for vertex 0。

posted on 2017-05-11 16:36  defe_feath  阅读(1277)  评论(0编辑  收藏  举报