46 using namespace Eigen;
56 odomParamsVertex->setToOrigin();
57 odomParamsVertex->
setId(Gm2dlIO::ID_ODOMCALIB);
61 for (SparseOptimizer::EdgeSet::const_iterator it = optimizer.
edges().begin(); it != optimizer.
edges().end(); ++it) {
68 if (r2->
id() - r1->
id() != 1) {
78 cerr <<
"strange egde " << r1->
id() <<
" <-> " << r2->
id() << endl;
99 odomCalibEdges.insert(e);
103 for (SparseOptimizer::EdgeSet::iterator it = odomCalibEdges.begin(); it != odomCalibEdges.end(); ++it)
104 optimizer.
addEdge(dynamic_cast<OptimizableGraph::Edge*>(*it));
113 SclamLinearSolver* linearSolver =
new SclamLinearSolver();
114 linearSolver->setBlockOrdering(
false);
115 SclamBlockSolver* blockSolver =
new SclamBlockSolver(linearSolver);
const SE2 & odomPose() const
int id() const
returns the id
const Data * userData() const
the user data associated with this vertex
scanmatch measurement that also calibrates an offset for the laser
Implementation of the Levenberg Algorithm.
laser measurement obtained by a robot
traits to summarize the properties of the fixed size optimization problem
virtual void setMeasurement(const Measurement &m)
2D pose Vertex, (x,y,theta)
virtual void setId(int newId)
Implementation of the Gauss Newton Algorithm.
std::set< Edge * > EdgeSet
const VertexContainer & vertices() const
const Eigen::Rotation2Dd & rotation() const
rotational component
linear solver which uses CSparse
const EdgeSet & edges() const
void setAlgorithm(OptimizationAlgorithm *algorithm)
A 2D odometry measurement expressed as a transformation.
void addOdometryCalibLinksDifferential(SparseOptimizer &optimizer, const DataQueue &odomData)
static const double INFORMATION_SCALING_ODOMETRY
a simple queue to store data and retrieve based on a timestamp
abstract Vertex, your types must derive from that one
EIGEN_STRONG_INLINE const InformationType & information() const
information matrix of the constraint
void allocateSolverForSclam(SparseOptimizer &optimizer, bool levenberg)
Implementation of a solver operating on the blocks of the Hessian.
SE2 inverse() const
invert :-)
Generic interface for a non-linear solver operating on a graph.
RobotData * findClosestData(double timestamp) const
const Vector2D & translation() const
translational component
virtual bool addEdge(HyperGraph::Edge *e)
virtual bool addVertex(HyperGraph::Vertex *v, Data *userData)