27 #ifndef G2O_BASE_MULTI_EDGE_H 28 #define G2O_BASE_MULTI_EDGE_H 34 #include <Eigen/StdVector> 38 #include "g2o/config.h" 48 template <
int D,
typename E>
67 typedef Eigen::Map<MatrixXD, MatrixXD::Flags & Eigen::AlignedBit ? Eigen::Aligned : Eigen::Unaligned >
HessianBlockType;
81 virtual void resize(
size_t size);
99 std::vector<JacobianType, Eigen::aligned_allocator<JacobianType> >
_jacobianOplus;
104 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
110 template <
typename E>
129 typedef Eigen::Map<MatrixXD, MatrixXD::Flags & Eigen::AlignedBit ? Eigen::Aligned : Eigen::Unaligned >
HessianBlockType;
144 virtual void resize(
size_t size);
162 std::vector<JacobianType, Eigen::aligned_allocator<JacobianType> >
_jacobianOplus;
Eigen::Map< MatrixXD > matrix
the mapped memory
std::vector< JacobianType, Eigen::aligned_allocator< JacobianType > > _jacobianOplus
jacobians of the edge (w.r.t. oplus)
bool transposed
the block has to be transposed
Eigen::Matrix< double, Eigen::Dynamic, 1, Eigen::ColMajor > ErrorVector
Eigen::Map< MatrixXD > matrix
the mapped memory
std::vector< HessianHelper > _hessian
virtual bool allVerticesFixed() const
Eigen::Matrix< double, D, D, Eigen::ColMajor > InformationType
virtual void constructQuadraticForm()
InformationType _information
void computeQuadraticForm(const InformationType &omega, const ErrorVector &weightedError)
BaseEdge<-1, E >::Measurement Measurement
Eigen::Matrix< double, D, 1, Eigen::ColMajor > ErrorVector
MatrixXD::MapType JacobianType
bool transposed
the block has to be transposed
Eigen::Map< MatrixXD, MatrixXD::Flags &Eigen::AlignedBit?Eigen::Aligned:Eigen::Unaligned > HessianBlockType
virtual void computeError()=0
BaseEdge< D, E >::Measurement Measurement
BaseEdge< D, E >::ErrorVector ErrorVector
base class to represent an edge connecting an arbitrary number of nodes
BaseEdge<-1, E >::ErrorVector ErrorVector
virtual void mapHessianMemory(double *d, int i, int j, bool rowMajor)
static const int Dimension
virtual void resize(size_t size)
helper for mapping the Hessian memory of the upper triangular block
BaseEdge< D, E >::InformationType InformationType
Eigen::Map< MatrixXD, MatrixXD::Flags &Eigen::AlignedBit?Eigen::Aligned:Eigen::Unaligned > HessianBlockType
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor > InformationType
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
provide memory workspace for computing the Jacobians
BaseEdge<-1, E >::InformationType InformationType
MatrixXD::MapType JacobianType
std::vector< JacobianType, Eigen::aligned_allocator< JacobianType > > _jacobianOplus
jacobians of the edge (w.r.t. oplus)
virtual void linearizeOplus()
VertexContainer _vertices