27 #ifndef G2O_BASE_BINARY_EDGE_H 28 #define G2O_BASE_BINARY_EDGE_H 35 #include "g2o/config.h" 39 template <
int D,
typename E,
typename VertexXi,
typename VertexXj>
47 static const int Di = VertexXiType::Dimension;
48 static const int Dj = VertexXjType::Dimension;
52 typedef typename Eigen::Matrix<double, D, Di, D==1?Eigen::RowMajor:Eigen::ColMajor>::AlignedMapType
JacobianXiOplusType;
53 typedef typename Eigen::Matrix<double, D, Dj, D==1?Eigen::RowMajor:Eigen::ColMajor>::AlignedMapType
JacobianXjOplusType;
57 typedef Eigen::Map<Eigen::Matrix<double, Di, Dj, Di==1?Eigen::RowMajor:Eigen::ColMajor>,
58 Eigen::Matrix<double, Di, Dj, Di==1?Eigen::RowMajor:Eigen::ColMajor>::Flags & Eigen::AlignedBit ? Eigen::Aligned : Eigen::Unaligned >
HessianBlockType;
59 typedef Eigen::Map<Eigen::Matrix<double, Dj, Di, Dj==1?Eigen::RowMajor:Eigen::ColMajor>,
60 Eigen::Matrix<double, Dj, Di, Dj==1?Eigen::RowMajor:Eigen::ColMajor>::Flags & Eigen::AlignedBit ? Eigen::Aligned : Eigen::Unaligned >
HessianBlockTransposedType;
64 _hessian(0, VertexXiType::Dimension, VertexXjType::Dimension),
75 virtual void resize(
size_t size);
113 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
virtual OptimizableGraph::Vertex * createVertex(int i)
const JacobianXjOplusType & jacobianOplusXj() const
returns the result of the linearization in the manifold space for the node xj
Eigen::Matrix< double, D, Dj, D==1?Eigen::RowMajor:Eigen::ColMajor >::AlignedMapType JacobianXjOplusType
virtual void linearizeOplus()
Eigen::Map< Eigen::Matrix< double, Di, Dj, Di==1?Eigen::RowMajor:Eigen::ColMajor >, Eigen::Matrix< double, Di, Dj, Di==1?Eigen::RowMajor:Eigen::ColMajor >::Flags &Eigen::AlignedBit?Eigen::Aligned:Eigen::Unaligned > HessianBlockType
virtual void constructQuadraticForm()
Eigen::Matrix< double, D, D, Eigen::ColMajor > InformationType
BaseEdge< D, E >::ErrorVector ErrorVector
virtual OptimizableGraph::Vertex * createFrom()
BaseEdge< D, E >::Measurement Measurement
virtual bool allVerticesFixed() const
JacobianXiOplusType _jacobianOplusXi
Eigen::Matrix< double, D, 1, Eigen::ColMajor > ErrorVector
Eigen::Matrix< double, D, Di, D==1?Eigen::RowMajor:Eigen::ColMajor >::AlignedMapType JacobianXiOplusType
static const int Dimension
Eigen::Map< Eigen::Matrix< double, Dj, Di, Dj==1?Eigen::RowMajor:Eigen::ColMajor >, Eigen::Matrix< double, Dj, Di, Dj==1?Eigen::RowMajor:Eigen::ColMajor >::Flags &Eigen::AlignedBit?Eigen::Aligned:Eigen::Unaligned > HessianBlockTransposedType
A general case Vertex for optimization.
virtual void resize(size_t size)
BaseEdge< D, E >::InformationType InformationType
virtual void mapHessianMemory(double *d, int i, int j, bool rowMajor)
HessianBlockTransposedType _hessianTransposed
JacobianXjOplusType _jacobianOplusXj
HessianBlockType _hessian
provide memory workspace for computing the Jacobians
const JacobianXiOplusType & jacobianOplusXi() const
returns the result of the linearization in the manifold space for the node xi
virtual OptimizableGraph::Vertex * createTo()
VertexContainer _vertices