edge_se2_pointxy_calib.cpp
Go to the documentation of this file.
00001 // g2o - General Graph Optimization
00002 // Copyright (C) 2011 R. Kuemmerle, G. Grisetti, W. Burgard
00003 // 
00004 // g2o is free software: you can redistribute it and/or modify
00005 // it under the terms of the GNU Lesser General Public License as published
00006 // by the Free Software Foundation, either version 3 of the License, or
00007 // (at your option) any later version.
00008 // 
00009 // g2o is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 // GNU Lesser General Public License for more details.
00013 // 
00014 // You should have received a copy of the GNU Lesser General Public License
00015 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
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* /*to*/)
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 } // end namespace


re_vision
Author(s): Dorian Galvez-Lopez
autogenerated on Sun Jan 5 2014 11:31:02