Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "edge_se2_pointxy_calib.h"
00018
00019 namespace g2o {
00020
00021 EdgeSE2PointXYCalib::EdgeSE2PointXYCalib() :
00022 BaseMultiEdge<2, Vector2d>()
00023 {
00024 resize(3);
00025 }
00026
00027 void EdgeSE2PointXYCalib::initialEstimate(const OptimizableGraph::VertexSet& from, OptimizableGraph::Vertex* )
00028 {
00029 assert(from.size() == 1 && from.count(_vertices[0]) == 1 && "Can not initialize VertexSE2 position by VertexPointXY");
00030
00031 if (from.count(_vertices[0]) != 1)
00032 return;
00033 VertexSE2* vi = static_cast<VertexSE2*>(_vertices[0]);
00034 VertexPointXY* vj = static_cast<VertexPointXY*>(_vertices[1]);
00035 vj->estimate() = vi->estimate() * _measurement;
00036 }
00037
00038 bool EdgeSE2PointXYCalib::read(std::istream& is)
00039 {
00040 is >> measurement()[0] >> measurement()[1];
00041 inverseMeasurement() = measurement() * -1;
00042 is >> information()(0,0) >> information()(0,1) >> information()(1,1);
00043 information()(1,0) = information()(0,1);
00044 return true;
00045 }
00046
00047 bool EdgeSE2PointXYCalib::write(std::ostream& os) const
00048 {
00049 os << measurement()[0] << " " << measurement()[1] << " ";
00050 os << information()(0,0) << " " << information()(0,1) << " " << information()(1,1);
00051 return os.good();
00052 }
00053
00054 }