g2o
Loading...
Searching...
No Matches
g2o::OptimizableGraph::Edge Class Referenceabstract

#include <optimizable_graph.h>

Inheritance diagram for g2o::OptimizableGraph::Edge:
Collaboration diagram for g2o::OptimizableGraph::Edge:

Public Member Functions

 Edge ()
virtual ~Edge ()
virtual bool allVerticesFixed () const =0
virtual void computeError ()=0
virtual bool setMeasurementData (const double *m)
virtual bool getMeasurementData (double *m) const
virtual int measurementDimension () const
virtual bool setMeasurementFromState ()
RobustKernel * robustKernel () const
 if NOT NULL, error of this edge will be robustifed with the kernel
void setRobustKernel (RobustKernel *ptr)
virtual const double * errorData () const =0
 returns the error vector cached after calling the computeError;
virtual double * errorData ()=0
virtual const double * informationData () const =0
virtual double * informationData ()=0
virtual double chi2 () const =0
virtual void constructQuadraticForm ()=0
virtual void mapHessianMemory (double *d, int i, int j, bool rowMajor)=0
virtual void linearizeOplus (JacobianWorkspace &jacobianWorkspace)=0
virtual void initialEstimate (const OptimizableGraph::VertexSet &from, OptimizableGraph::Vertex *to)=0
virtual double initialEstimatePossible (const OptimizableGraph::VertexSet &from, OptimizableGraph::Vertex *to)
int level () const
 returns the level of the edge
void setLevel (int l)
 sets the level of the edge
int dimension () const
 returns the dimensions of the error function
 G2O_ATTRIBUTE_DEPRECATED (virtual Vertex *createFrom())
 G2O_ATTRIBUTE_DEPRECATED (virtual Vertex *createTo())
virtual Vertex * createVertex (int)
virtual bool read (std::istream &is)=0
 read the vertex from a stream, i.e., the internal state of the vertex
virtual bool write (std::ostream &os) const =0
 write the vertex to a stream
long long internalId () const
 the internal ID of the edge
OptimizableGraph * graph ()
const OptimizableGraph * graph () const
bool setParameterId (int argNum, int paramId)
const Parameter * parameter (int argNo) const
size_t numParameters () const
void resizeParameters (size_t newSize)
Public Member Functions inherited from g2o::HyperGraph::Edge
 Edge (int id=InvalidId)
 creates and empty edge with no vertices
virtual void resize (size_t size)
const VertexContainer & vertices () const
VertexContainer & vertices ()
const Vertex * vertex (size_t i) const
Vertex * vertex (size_t i)
void setVertex (size_t i, Vertex *v)
int id () const
void setId (int id)
virtual HyperGraphElementType elementType () const
int numUndefinedVertices () const
Public Member Functions inherited from g2o::HyperGraph::HyperGraphElement
virtual ~HyperGraphElement ()
Public Member Functions inherited from g2o::HyperGraph::DataContainer
 DataContainer ()
virtual ~DataContainer ()
const Data * userData () const
 the user data associated with this vertex
Data * userData ()
void setUserData (Data *obs)
void addUserData (Data *obs)

Protected Member Functions

template<typename ParameterType>
bool installParameter (ParameterType *&p, size_t argNo, int paramId=-1)
template<typename CacheType>
void resolveCache (CacheType *&cache, OptimizableGraph::Vertex *, const std::string &_type, const ParameterVector &parameters)
bool resolveParameters ()
virtual bool resolveCaches ()

Protected Attributes

int _dimension
int _level
RobustKernel * _robustKernel
long long _internalId
std::vector< int > _cacheIds
std::vector< std::string > _parameterTypes
std::vector< Parameter ** > _parameters
std::vector< int > _parameterIds
Protected Attributes inherited from g2o::HyperGraph::Edge
VertexContainer _vertices
int _id
 unique id
Protected Attributes inherited from g2o::HyperGraph::DataContainer
Data * _userData

Friends

struct OptimizableGraph

Detailed Description

Definition at line 416 of file optimizable_graph.h.

Constructor & Destructor Documentation

◆ Edge()

◆ ~Edge()

g2o::OptimizableGraph::Edge::~Edge ( )
virtual

Reimplemented from g2o::HyperGraph::Edge.

Definition at line 108 of file optimizable_graph.cpp.

void release(T *obj)
Definition ownership.h:8

References _robustKernel, and g2o::release().

Member Function Documentation

◆ allVerticesFixed()

virtual bool g2o::OptimizableGraph::Edge::allVerticesFixed ( ) const
pure virtual

Implemented in g2o::BaseFixedSizedEdge< D, E, VertexTypes >, g2o::BaseFixedSizedEdge< 2, Vector2, VertexPointXYZ, VertexSE3Expmap, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< 3, SE2, VertexSE2, VertexSE2, VertexSE2 >, g2o::BaseFixedSizedEdge< 3, VelocityMeasurement, VertexSE2, VertexSE2, VertexOdomDifferentialParams >, g2o::BaseFixedSizedEdge< D, double, PolynomialCoefficientVertex >, g2o::BaseFixedSizedEdge< D, double, VertexCam, VertexCam >, g2o::BaseFixedSizedEdge< D, double, VertexLine2D, VertexPointXY >, g2o::BaseFixedSizedEdge< D, double, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, E, VertexXi >, g2o::BaseFixedSizedEdge< D, E, VertexXi, VertexXj >, g2o::BaseFixedSizedEdge< D, EdgeGICP, VertexSE3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexCircle >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexParams >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPosition3D >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPositionVelocity3D >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPositionVelocity3D, VertexPositionVelocity3D >, g2o::BaseFixedSizedEdge< D, Eigen::VectorXd, FPolynomialCoefficientVertex, PPolynomialCoefficientVertex >, g2o::BaseFixedSizedEdge< D, g2o::Vector2, VertexCameraBAL, VertexPointBAL >, g2o::BaseFixedSizedEdge< D, Isometry3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Isometry3, VertexSE3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Line2D, VertexLine2D, VertexLine2D >, g2o::BaseFixedSizedEdge< D, Line2D, VertexSE2, VertexLine2D >, g2o::BaseFixedSizedEdge< D, Line3D, VertexSE3, VertexLine3D >, g2o::BaseFixedSizedEdge< D, OdomAndLaserMotion, VertexSE2, VertexBaseline >, g2o::BaseFixedSizedEdge< D, OdomAndLaserMotion, VertexSE2, VertexOdomDifferentialParams >, g2o::BaseFixedSizedEdge< D, SE2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, SE2, VertexSE2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, SE3Quat, VertexCam, VertexCam >, g2o::BaseFixedSizedEdge< D, SE3Quat, VertexSE3Expmap, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Sim3, VertexSim3Expmap, VertexSim3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXY, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexCam >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexSim3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2, VertexSegment2D >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexCam >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexSCam >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE2, VertexSegment2D >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector4, VertexPlane, VertexPlane >, g2o::BaseFixedSizedEdge< D, Vector4, VertexSE2, VertexSegment2D >, g2o::BaseVariableSizedEdge< D, E >, g2o::BaseVariableSizedEdge< 2, Vector2 >, g2o::BaseVariableSizedEdge< 3, Plane3D >, g2o::BaseVariableSizedEdge< 4, Vector4 >, g2o::BaseVariableSizedEdge< 6, Isometry3 >, and g2o::BaseVariableSizedEdge<-1, VectorX >.

Referenced by g2o::SparseOptimizer::initializeOptimization(), and g2o::SparseOptimizer::updateInitialization().

◆ chi2()

◆ computeError()

virtual void g2o::OptimizableGraph::Edge::computeError ( )
pure virtual

Implemented in EdgeCalib, g2o::Edge_V_V_GICP, g2o::Edge_XYZ_VSC, g2o::EdgeInverseSim3ProjectXYZ, g2o::EdgeLine2D, g2o::EdgeLine2DPointXY, g2o::EdgePlane, g2o::EdgePointXY, g2o::EdgePointXYZ, g2o::EdgeProjectP2MC, g2o::EdgeProjectP2SC, g2o::EdgeProjectPSI2UV, g2o::EdgeProjectXYZ2UV, g2o::EdgeProjectXYZ2UVU, g2o::EdgeSBACam, g2o::EdgeSBAScale, g2o::EdgeSE2, g2o::EdgeSE2Line2D, g2o::EdgeSE2LotsOfXY, g2o::EdgeSE2OdomDifferentialCalib, g2o::EdgeSE2Offset, g2o::EdgeSE2PointXY, g2o::EdgeSE2PointXYBearing, g2o::EdgeSE2PointXYCalib, g2o::EdgeSE2PointXYOffset, g2o::EdgeSE2Prior, g2o::EdgeSE2PureCalib, g2o::EdgeSE2Segment2D, g2o::EdgeSE2Segment2DLine, g2o::EdgeSE2Segment2DPointLine, g2o::EdgeSE2SensorCalib, g2o::EdgeSE2TwoPointsXY, g2o::EdgeSE2XYPrior, g2o::EdgeSE3, g2o::EdgeSE3Calib, g2o::EdgeSE3Expmap, g2o::EdgeSE3Line3D, g2o::EdgeSE3LotsOfXYZ, g2o::EdgeSE3Offset, g2o::EdgeSE3PlaneSensorCalib, g2o::EdgeSE3PointXYZ, g2o::EdgeSE3PointXYZDepth, g2o::EdgeSE3PointXYZDisparity, g2o::EdgeSE3Prior, g2o::EdgeSE3ProjectXYZ, g2o::EdgeSE3ProjectXYZOnlyPose, g2o::EdgeSE3XYZPrior, g2o::EdgeSim3, g2o::EdgeSim3ProjectXYZ, g2o::EdgeStereoSE3ProjectXYZ, g2o::EdgeStereoSE3ProjectXYZOnlyPose, g2o::EdgeXYPrior, g2o::EdgeXYZPrior, g2o::tutorial::EdgeSE2, g2o::tutorial::EdgeSE2PointXY, GPSObservationEdgePositionVelocity3D, GPSObservationPosition3DEdge, MultipleValueEdge, PolynomialSingleValueEdge, and TargetOdometry3DEdge.

References getMeasurementData(), measurementDimension(), setMeasurementData(), and setMeasurementFromState().

Referenced by g2o::StructureOnlySolver< PointDoF >::calc(), g2o::SparseOptimizer::computeActiveErrors(), gnudump_edges(), gnudump_features(), g2o::EdgeLabeler::labelEdge(), g2o::BaseFixedSizedEdge< D, OdomAndLaserMotion, VertexSE2, VertexBaseline >::linearizeOplusN(), main(), g2o::BaseFixedSizedEdge< D, OdomAndLaserMotion, VertexSE2, VertexBaseline >::mapHessianMemory(), g2o::BaseVariableSizedEdge<-1, VectorX >::mapHessianMemory(), InvChi2CostFunction::operator()(), g2o::SparseOptimizerOnline::optimize(), and g2o::SparseOptimizerIncremental::updateInitialization().

◆ constructQuadraticForm()

virtual void g2o::OptimizableGraph::Edge::constructQuadraticForm ( )
pure virtual

Linearizes the constraint in the edge. Makes side effect on the vertices of the graph by changing the parameter vector b and the hessian blocks ii and jj. The off diagoinal block is accessed via _hessian.

Implemented in g2o::BaseFixedSizedEdge< D, E, VertexTypes >, g2o::BaseFixedSizedEdge< 2, Vector2, VertexPointXYZ, VertexSE3Expmap, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< 3, SE2, VertexSE2, VertexSE2, VertexSE2 >, g2o::BaseFixedSizedEdge< 3, VelocityMeasurement, VertexSE2, VertexSE2, VertexOdomDifferentialParams >, g2o::BaseFixedSizedEdge< D, double, PolynomialCoefficientVertex >, g2o::BaseFixedSizedEdge< D, double, VertexCam, VertexCam >, g2o::BaseFixedSizedEdge< D, double, VertexLine2D, VertexPointXY >, g2o::BaseFixedSizedEdge< D, double, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, E, VertexXi >, g2o::BaseFixedSizedEdge< D, E, VertexXi, VertexXj >, g2o::BaseFixedSizedEdge< D, EdgeGICP, VertexSE3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexCircle >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexParams >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPosition3D >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPositionVelocity3D >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPositionVelocity3D, VertexPositionVelocity3D >, g2o::BaseFixedSizedEdge< D, Eigen::VectorXd, FPolynomialCoefficientVertex, PPolynomialCoefficientVertex >, g2o::BaseFixedSizedEdge< D, g2o::Vector2, VertexCameraBAL, VertexPointBAL >, g2o::BaseFixedSizedEdge< D, Isometry3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Isometry3, VertexSE3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Line2D, VertexLine2D, VertexLine2D >, g2o::BaseFixedSizedEdge< D, Line2D, VertexSE2, VertexLine2D >, g2o::BaseFixedSizedEdge< D, Line3D, VertexSE3, VertexLine3D >, g2o::BaseFixedSizedEdge< D, OdomAndLaserMotion, VertexSE2, VertexBaseline >, g2o::BaseFixedSizedEdge< D, OdomAndLaserMotion, VertexSE2, VertexOdomDifferentialParams >, g2o::BaseFixedSizedEdge< D, SE2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, SE2, VertexSE2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, SE3Quat, VertexCam, VertexCam >, g2o::BaseFixedSizedEdge< D, SE3Quat, VertexSE3Expmap, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Sim3, VertexSim3Expmap, VertexSim3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXY, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexCam >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexSim3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2, VertexSegment2D >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexCam >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexSCam >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE2, VertexSegment2D >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector4, VertexPlane, VertexPlane >, g2o::BaseFixedSizedEdge< D, Vector4, VertexSE2, VertexSegment2D >, g2o::BaseVariableSizedEdge< D, E >, g2o::BaseVariableSizedEdge< 2, Vector2 >, g2o::BaseVariableSizedEdge< 3, Plane3D >, g2o::BaseVariableSizedEdge< 4, Vector4 >, g2o::BaseVariableSizedEdge< 6, Isometry3 >, and g2o::BaseVariableSizedEdge<-1, VectorX >.

Referenced by g2o::BlockSolver< Traits >::buildSystem(), g2o::StructureOnlySolver< PointDoF >::calc(), g2o::SparseOptimizerOnline::optimize(), and g2o::SparseOptimizerIncremental::updateInitialization().

◆ createVertex()

virtual Vertex * g2o::OptimizableGraph::Edge::createVertex ( int )
inlinevirtual

Definition at line 522 of file optimizable_graph.h.

522{ return nullptr; }

◆ dimension()

◆ errorData() [1/2]

◆ errorData() [2/2]

virtual double * g2o::OptimizableGraph::Edge::errorData ( )
pure virtual

◆ G2O_ATTRIBUTE_DEPRECATED() [1/2]

g2o::OptimizableGraph::Edge::G2O_ATTRIBUTE_DEPRECATED ( virtual Vertex * createFrom())
inline

Definition at line 520 of file optimizable_graph.h.

520{ return nullptr; }

◆ G2O_ATTRIBUTE_DEPRECATED() [2/2]

g2o::OptimizableGraph::Edge::G2O_ATTRIBUTE_DEPRECATED ( virtual Vertex * createTo())
inline

Definition at line 521 of file optimizable_graph.h.

521{ return nullptr; }

◆ getMeasurementData()

◆ graph() [1/2]

OptimizableGraph * g2o::OptimizableGraph::Edge::graph ( )

Definition at line 110 of file optimizable_graph.cpp.

110 {
111 if (!_vertices.size()) return nullptr;
113 if (!v) return nullptr;
114 return v->graph();
115}
VertexContainer _vertices
class G2O_CORE_API Vertex

References g2o::HyperGraph::Edge::_vertices, g2o::OptimizableGraph::Vertex::graph(), and OptimizableGraph.

Referenced by g2o::OptimizableGraph::addEdge(), and resolveParameters().

◆ graph() [2/2]

const OptimizableGraph * g2o::OptimizableGraph::Edge::graph ( ) const

Definition at line 117 of file optimizable_graph.cpp.

117 {
118 if (!_vertices.size()) return nullptr;
119 const OptimizableGraph::Vertex* v =
121 if (!v) return nullptr;
122 return v->graph();
123}

References g2o::HyperGraph::Edge::_vertices, g2o::OptimizableGraph::Vertex::graph(), and OptimizableGraph.

◆ informationData() [1/2]

◆ informationData() [2/2]

virtual double * g2o::OptimizableGraph::Edge::informationData ( )
pure virtual

◆ initialEstimate()

virtual void g2o::OptimizableGraph::Edge::initialEstimate ( const OptimizableGraph::VertexSet & from,
OptimizableGraph::Vertex * to )
pure virtual

◆ initialEstimatePossible()

virtual double g2o::OptimizableGraph::Edge::initialEstimatePossible ( const OptimizableGraph::VertexSet & from,
OptimizableGraph::Vertex * to )
inlinevirtual

◆ installParameter()

◆ internalId()

long long g2o::OptimizableGraph::Edge::internalId ( ) const
inline

the internal ID of the edge

Definition at line 530 of file optimizable_graph.h.

530{ return _internalId; }

References _internalId.

Referenced by g2o::OptimizableGraph::EdgeIDCompare::operator()().

◆ level()

int g2o::OptimizableGraph::Edge::level ( ) const
inline

returns the level of the edge

Definition at line 513 of file optimizable_graph.h.

513{ return _level; }

References _level.

Referenced by g2o::BackBoneTreeAction::init(), main(), and g2o::EdgeTypesCostFunction::operator()().

◆ linearizeOplus()

virtual void g2o::OptimizableGraph::Edge::linearizeOplus ( JacobianWorkspace & jacobianWorkspace)
pure virtual

Linearizes the constraint in the edge in the manifold space, and store the result in the given workspace

Implemented in g2o::BaseFixedSizedEdge< D, E, VertexTypes >, g2o::BaseFixedSizedEdge< 2, Vector2, VertexPointXYZ, VertexSE3Expmap, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< 3, SE2, VertexSE2, VertexSE2, VertexSE2 >, g2o::BaseFixedSizedEdge< 3, VelocityMeasurement, VertexSE2, VertexSE2, VertexOdomDifferentialParams >, g2o::BaseFixedSizedEdge< D, double, PolynomialCoefficientVertex >, g2o::BaseFixedSizedEdge< D, double, VertexCam, VertexCam >, g2o::BaseFixedSizedEdge< D, double, VertexLine2D, VertexPointXY >, g2o::BaseFixedSizedEdge< D, double, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, E, VertexXi >, g2o::BaseFixedSizedEdge< D, E, VertexXi, VertexXj >, g2o::BaseFixedSizedEdge< D, EdgeGICP, VertexSE3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexCircle >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexParams >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPosition3D >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPositionVelocity3D >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPositionVelocity3D, VertexPositionVelocity3D >, g2o::BaseFixedSizedEdge< D, Eigen::VectorXd, FPolynomialCoefficientVertex, PPolynomialCoefficientVertex >, g2o::BaseFixedSizedEdge< D, g2o::Vector2, VertexCameraBAL, VertexPointBAL >, g2o::BaseFixedSizedEdge< D, Isometry3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Isometry3, VertexSE3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Line2D, VertexLine2D, VertexLine2D >, g2o::BaseFixedSizedEdge< D, Line2D, VertexSE2, VertexLine2D >, g2o::BaseFixedSizedEdge< D, Line3D, VertexSE3, VertexLine3D >, g2o::BaseFixedSizedEdge< D, OdomAndLaserMotion, VertexSE2, VertexBaseline >, g2o::BaseFixedSizedEdge< D, OdomAndLaserMotion, VertexSE2, VertexOdomDifferentialParams >, g2o::BaseFixedSizedEdge< D, SE2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, SE2, VertexSE2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, SE3Quat, VertexCam, VertexCam >, g2o::BaseFixedSizedEdge< D, SE3Quat, VertexSE3Expmap, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Sim3, VertexSim3Expmap, VertexSim3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXY, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexCam >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexSim3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2, VertexSegment2D >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexCam >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexSCam >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE2, VertexSegment2D >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector4, VertexPlane, VertexPlane >, g2o::BaseFixedSizedEdge< D, Vector4, VertexSE2, VertexSegment2D >, g2o::BaseVariableSizedEdge< D, E >, g2o::BaseVariableSizedEdge< 2, Vector2 >, g2o::BaseVariableSizedEdge< 3, Plane3D >, g2o::BaseVariableSizedEdge< 4, Vector4 >, g2o::BaseVariableSizedEdge< 6, Isometry3 >, and g2o::BaseVariableSizedEdge<-1, VectorX >.

References g2o::OptimizableGraph::jacobianWorkspace().

Referenced by g2o::BlockSolver< Traits >::buildSystem(), g2o::StructureOnlySolver< PointDoF >::calc(), g2o::SparseOptimizerOnline::optimize(), and g2o::SparseOptimizerIncremental::updateInitialization().

◆ mapHessianMemory()

virtual void g2o::OptimizableGraph::Edge::mapHessianMemory ( double * d,
int i,
int j,
bool rowMajor )
pure virtual

maps the internal matrix to some external memory location, you need to provide the memory before calling constructQuadraticForm

Parameters
dthe memory location to which we map
iindex of the vertex i
jindex of the vertex j (j > i, upper triangular fashion)
rowMajorif true, will write in rowMajor order to the block. Since EIGEN is columnMajor by default, this results in writing the transposed

Implemented in g2o::BaseFixedSizedEdge< D, E, VertexTypes >, g2o::BaseFixedSizedEdge< 2, Vector2, VertexPointXYZ, VertexSE3Expmap, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< 3, SE2, VertexSE2, VertexSE2, VertexSE2 >, g2o::BaseFixedSizedEdge< 3, VelocityMeasurement, VertexSE2, VertexSE2, VertexOdomDifferentialParams >, g2o::BaseFixedSizedEdge< D, double, PolynomialCoefficientVertex >, g2o::BaseFixedSizedEdge< D, double, VertexCam, VertexCam >, g2o::BaseFixedSizedEdge< D, double, VertexLine2D, VertexPointXY >, g2o::BaseFixedSizedEdge< D, double, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, E, VertexXi >, g2o::BaseFixedSizedEdge< D, E, VertexXi, VertexXj >, g2o::BaseFixedSizedEdge< D, EdgeGICP, VertexSE3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexCircle >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexParams >, g2o::BaseFixedSizedEdge< D, Eigen::Vector2d, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPosition3D >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPositionVelocity3D >, g2o::BaseFixedSizedEdge< D, Eigen::Vector3d, VertexPositionVelocity3D, VertexPositionVelocity3D >, g2o::BaseFixedSizedEdge< D, Eigen::VectorXd, FPolynomialCoefficientVertex, PPolynomialCoefficientVertex >, g2o::BaseFixedSizedEdge< D, g2o::Vector2, VertexCameraBAL, VertexPointBAL >, g2o::BaseFixedSizedEdge< D, Isometry3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Isometry3, VertexSE3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Line2D, VertexLine2D, VertexLine2D >, g2o::BaseFixedSizedEdge< D, Line2D, VertexSE2, VertexLine2D >, g2o::BaseFixedSizedEdge< D, Line3D, VertexSE3, VertexLine3D >, g2o::BaseFixedSizedEdge< D, OdomAndLaserMotion, VertexSE2, VertexBaseline >, g2o::BaseFixedSizedEdge< D, OdomAndLaserMotion, VertexSE2, VertexOdomDifferentialParams >, g2o::BaseFixedSizedEdge< D, SE2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, SE2, VertexSE2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, SE3Quat, VertexCam, VertexCam >, g2o::BaseFixedSizedEdge< D, SE3Quat, VertexSE3Expmap, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Sim3, VertexSim3Expmap, VertexSim3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXY, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexCam >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexPointXYZ, VertexSim3Expmap >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2 >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2, VertexPointXY >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE2, VertexSegment2D >, g2o::BaseFixedSizedEdge< D, Vector2, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexCam >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexSCam >, g2o::BaseFixedSizedEdge< D, Vector3, VertexPointXYZ, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE2, VertexSegment2D >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3 >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3, VertexPointXYZ >, g2o::BaseFixedSizedEdge< D, Vector3, VertexSE3Expmap >, g2o::BaseFixedSizedEdge< D, Vector4, VertexPlane, VertexPlane >, g2o::BaseFixedSizedEdge< D, Vector4, VertexSE2, VertexSegment2D >, g2o::BaseVariableSizedEdge< D, E >, g2o::BaseVariableSizedEdge< 2, Vector2 >, g2o::BaseVariableSizedEdge< 3, Plane3D >, g2o::BaseVariableSizedEdge< 4, Vector4 >, g2o::BaseVariableSizedEdge< 6, Isometry3 >, and g2o::BaseVariableSizedEdge<-1, VectorX >.

Referenced by g2o::BlockSolver< Traits >::buildStructure(), g2o::SparseOptimizerIncremental::updateInitialization(), and g2o::BlockSolver< Traits >::updateStructure().

◆ measurementDimension()

◆ numParameters()

size_t g2o::OptimizableGraph::Edge::numParameters ( ) const
inline

Definition at line 539 of file optimizable_graph.h.

539{ return _parameters.size(); }

References _parameters.

Referenced by g2o::EdgeCreator::createEdge(), and g2o::Measurement< D, E >::readParamIds().

◆ parameter()

const Parameter * g2o::OptimizableGraph::Edge::parameter ( int argNo) const
inline

◆ read()

virtual bool g2o::OptimizableGraph::Edge::read ( std::istream & is)
pure virtual

read the vertex from a stream, i.e., the internal state of the vertex

Implemented in EdgeCalib, EdgeObservationBAL, EdgePointOnCircle, EdgePointOnCurve, g2o::Edge_V_V_GICP, g2o::Edge_XYZ_VSC, g2o::EdgeInverseSim3ProjectXYZ, g2o::EdgeLine2D, g2o::EdgeLine2DPointXY, g2o::EdgePlane, g2o::EdgePointXY, g2o::EdgePointXYZ, g2o::EdgeProjectP2MC, g2o::EdgeProjectP2SC, g2o::EdgeProjectPSI2UV, g2o::EdgeProjectXYZ2UV, g2o::EdgeProjectXYZ2UVU, g2o::EdgeSBACam, g2o::EdgeSBAScale, g2o::EdgeSE2, g2o::EdgeSE2Line2D, g2o::EdgeSE2LotsOfXY, g2o::EdgeSE2OdomDifferentialCalib, g2o::EdgeSE2Offset, g2o::EdgeSE2PointXY, g2o::EdgeSE2PointXYBearing, g2o::EdgeSE2PointXYCalib, g2o::EdgeSE2PointXYOffset, g2o::EdgeSE2Prior, g2o::EdgeSE2PureCalib, g2o::EdgeSE2Segment2D, g2o::EdgeSE2Segment2DLine, g2o::EdgeSE2Segment2DPointLine, g2o::EdgeSE2SensorCalib, g2o::EdgeSE2TwoPointsXY, g2o::EdgeSE2XYPrior, g2o::EdgeSE3, g2o::EdgeSE3Calib, g2o::EdgeSE3Euler, g2o::EdgeSE3Expmap, g2o::EdgeSE3Line3D, g2o::EdgeSE3LotsOfXYZ, g2o::EdgeSE3Offset, g2o::EdgeSE3PlaneSensorCalib, g2o::EdgeSE3PointXYZ, g2o::EdgeSE3PointXYZDepth, g2o::EdgeSE3PointXYZDisparity, g2o::EdgeSE3Prior, g2o::EdgeSE3ProjectXYZ, g2o::EdgeSE3ProjectXYZOnlyPose, g2o::EdgeSE3XYZPrior, g2o::EdgeSim3, g2o::EdgeSim3ProjectXYZ, g2o::EdgeStereoSE3ProjectXYZ, g2o::EdgeStereoSE3ProjectXYZOnlyPose, g2o::EdgeXYPrior, g2o::EdgeXYZPrior, g2o::tutorial::EdgeSE2, g2o::tutorial::EdgeSE2PointXY, GPSObservationEdgePositionVelocity3D, GPSObservationPosition3DEdge, MultipleValueEdge, PolynomialSingleValueEdge, and TargetOdometry3DEdge.

◆ resizeParameters()

◆ resolveCache()

template<typename CacheType>
void g2o::OptimizableGraph::Edge::resolveCache ( CacheType *& cache,
OptimizableGraph::Vertex * v,
const std::string & _type,
const ParameterVector & parameters )
protected

Definition at line 125 of file cache.h.

128 {
129 cache = 0;
130 CacheContainer* container = v->cacheContainer();
131 Cache::CacheKey key(type_, parameters_);
132 Cache* c = container->findCache(key);
133 if (!c) {
134 c = container->createCache(key);
135 }
136 if (c) {
137 cache = dynamic_cast<CacheType*>(c);
138 }
139}

References g2o::OptimizableGraph::Vertex::cacheContainer(), g2o::CacheContainer::createCache(), and g2o::CacheContainer::findCache().

Referenced by g2o::EdgeSE2Offset::resolveCaches(), g2o::EdgeSE2PointXYOffset::resolveCaches(), g2o::EdgeSE3Line3D::resolveCaches(), g2o::EdgeSE3Offset::resolveCaches(), g2o::EdgeSE3PointXYZ::resolveCaches(), g2o::EdgeSE3PointXYZDepth::resolveCaches(), g2o::EdgeSE3PointXYZDisparity::resolveCaches(), g2o::EdgeSE3Prior::resolveCaches(), g2o::EdgeSE3XYZPrior::resolveCaches(), and g2o::tutorial::EdgeSE2PointXY::resolveCaches().

◆ resolveCaches()

◆ resolveParameters()

bool g2o::OptimizableGraph::Edge::resolveParameters ( )
protected

Definition at line 133 of file optimizable_graph.cpp.

133 {
134 if (!graph()) {
135 G2O_ERROR("{}: edge not registered with a graph", __PRETTY_FUNCTION__);
136 return false;
137 }
138
139 assert(_parameters.size() == _parameterIds.size());
140 for (size_t i = 0; i < _parameters.size(); i++) {
141 int index = _parameterIds[i];
142 *_parameters[i] = graph()->parameter(index);
143 auto& aux = **_parameters[i];
144 if (typeid(aux).name() != _parameterTypes[i]) {
145 G2O_ERROR(
146 "{}: FATAL, parameter type mismatch - encountered {}; should be {}",
147 __PRETTY_FUNCTION__, typeid(aux).name(), _parameterTypes[i]);
148 }
149 if (!*_parameters[i]) {
150 G2O_ERROR("{}: FATAL, *_parameters[i] == 0", __PRETTY_FUNCTION__);
151 return false;
152 }
153 }
154 return true;
155}
#define G2O_ERROR(...)
#define __PRETTY_FUNCTION__
Definition macros.h:90
Parameter * parameter(int id)

References __PRETTY_FUNCTION__, _parameterIds, _parameters, _parameterTypes, G2O_ERROR, and graph().

Referenced by g2o::OptimizableGraph::addEdge(), and g2o::OptimizableGraph::setEdgeVertex().

◆ robustKernel()

RobustKernel * g2o::OptimizableGraph::Edge::robustKernel ( ) const
inline

if NOT NULL, error of this edge will be robustifed with the kernel

Definition at line 450 of file optimizable_graph.h.

450{ return _robustKernel; }

References _robustKernel.

Referenced by g2o::SparseOptimizer::activeRobustChi2(), g2o::StructureOnlySolver< PointDoF >::calc(), gnudump_edges(), gnudump_features(), main(), InvChi2CostFunction::operator()(), and MainWindow::setRobustKernel().

◆ setLevel()

void g2o::OptimizableGraph::Edge::setLevel ( int l)
inline

sets the level of the edge

Definition at line 515 of file optimizable_graph.h.

515{ _level = l; }

References _level.

Referenced by g2o::assignHierarchicalEdges(), and g2o::computeSimpleStars().

◆ setMeasurementData()

◆ setMeasurementFromState()

◆ setParameterId()

bool g2o::OptimizableGraph::Edge::setParameterId ( int argNum,
int paramId )

Definition at line 125 of file optimizable_graph.cpp.

125 {
126 if ((int)_parameters.size() <= argNum) return false;
127 if (argNum < 0) return false;
128 *_parameters[argNum] = 0;
129 _parameterIds[argNum] = paramId;
130 return true;
131}

References _parameterIds, and _parameters.

Referenced by g2o::EdgeCreator::createEdge(), main(), main(), main(), Robot::move(), g2o::EdgeSE2Offset::read(), g2o::EdgeSE2PointXYOffset::read(), g2o::tutorial::EdgeSE2PointXY::read(), g2o::Measurement< D, E >::readParamIds(), and LineSensor::sense().

◆ setRobustKernel()

void g2o::OptimizableGraph::Edge::setRobustKernel ( RobustKernel * ptr)

specify the robust kernel to be used in this edge

Definition at line 157 of file optimizable_graph.cpp.

157 {
159
160 _robustKernel = ptr;
161}

References _robustKernel, and g2o::release().

Referenced by main(), and MainWindow::setRobustKernel().

◆ write()

virtual bool g2o::OptimizableGraph::Edge::write ( std::ostream & os) const
pure virtual

write the vertex to a stream

Implemented in EdgeCalib, EdgeObservationBAL, EdgePointOnCircle, EdgePointOnCurve, g2o::Edge_V_V_GICP, g2o::Edge_XYZ_VSC, g2o::EdgeInverseSim3ProjectXYZ, g2o::EdgeLine2D, g2o::EdgeLine2DPointXY, g2o::EdgePlane, g2o::EdgePointXY, g2o::EdgePointXYZ, g2o::EdgeProjectP2MC, g2o::EdgeProjectP2SC, g2o::EdgeProjectPSI2UV, g2o::EdgeProjectXYZ2UV, g2o::EdgeProjectXYZ2UVU, g2o::EdgeSBACam, g2o::EdgeSBAScale, g2o::EdgeSE2, g2o::EdgeSE2Line2D, g2o::EdgeSE2LotsOfXY, g2o::EdgeSE2OdomDifferentialCalib, g2o::EdgeSE2Offset, g2o::EdgeSE2PointXY, g2o::EdgeSE2PointXYBearing, g2o::EdgeSE2PointXYCalib, g2o::EdgeSE2PointXYOffset, g2o::EdgeSE2Prior, g2o::EdgeSE2PureCalib, g2o::EdgeSE2Segment2D, g2o::EdgeSE2Segment2DLine, g2o::EdgeSE2Segment2DPointLine, g2o::EdgeSE2SensorCalib, g2o::EdgeSE2TwoPointsXY, g2o::EdgeSE2XYPrior, g2o::EdgeSE3, g2o::EdgeSE3Calib, g2o::EdgeSE3Euler, g2o::EdgeSE3Expmap, g2o::EdgeSE3Line3D, g2o::EdgeSE3LotsOfXYZ, g2o::EdgeSE3Offset, g2o::EdgeSE3PlaneSensorCalib, g2o::EdgeSE3PointXYZ, g2o::EdgeSE3PointXYZDepth, g2o::EdgeSE3PointXYZDisparity, g2o::EdgeSE3Prior, g2o::EdgeSE3ProjectXYZ, g2o::EdgeSE3ProjectXYZOnlyPose, g2o::EdgeSE3XYZPrior, g2o::EdgeSim3, g2o::EdgeSim3ProjectXYZ, g2o::EdgeStereoSE3ProjectXYZ, g2o::EdgeStereoSE3ProjectXYZOnlyPose, g2o::EdgeXYPrior, g2o::EdgeXYZPrior, g2o::tutorial::EdgeSE2, g2o::tutorial::EdgeSE2PointXY, GPSObservationEdgePositionVelocity3D, GPSObservationPosition3DEdge, MultipleValueEdge, PolynomialSingleValueEdge, and TargetOdometry3DEdge.

Referenced by g2o::OptimizableGraph::saveEdge().

◆ OptimizableGraph

friend struct OptimizableGraph
friend

Definition at line 419 of file optimizable_graph.h.

References Edge(), and OptimizableGraph.

Referenced by g2o::Measurement< D, E >::BaseEdge(), graph(), graph(), and OptimizableGraph.

Member Data Documentation

◆ _cacheIds

std::vector<int> g2o::OptimizableGraph::Edge::_cacheIds
protected

Definition at line 551 of file optimizable_graph.h.

◆ _dimension

◆ _internalId

long long g2o::OptimizableGraph::Edge::_internalId
protected

Definition at line 550 of file optimizable_graph.h.

Referenced by g2o::OptimizableGraph::addEdge(), and internalId().

◆ _level

int g2o::OptimizableGraph::Edge::_level
protected

Definition at line 548 of file optimizable_graph.h.

Referenced by Edge(), level(), and setLevel().

◆ _parameterIds

std::vector<int> g2o::OptimizableGraph::Edge::_parameterIds
protected

◆ _parameters

std::vector<Parameter**> g2o::OptimizableGraph::Edge::_parameters
protected

◆ _parameterTypes

std::vector<std::string> g2o::OptimizableGraph::Edge::_parameterTypes
protected

Definition at line 570 of file optimizable_graph.h.

Referenced by installParameter(), resizeParameters(), and resolveParameters().

◆ _robustKernel

RobustKernel* g2o::OptimizableGraph::Edge::_robustKernel
protected

Definition at line 549 of file optimizable_graph.h.

Referenced by Edge(), robustKernel(), setRobustKernel(), and ~Edge().


The documentation for this class was generated from the following files: