edge_se2_prior.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_prior.h"
00018 
00019 namespace g2o {
00020 
00021   EdgeSE2Prior::EdgeSE2Prior() : BaseUnaryEdge<3, SE2, VertexSE2>()
00022   {
00023   }
00024 
00025   void EdgeSE2Prior::initialEstimate(const OptimizableGraph::VertexSet& from, OptimizableGraph::Vertex* to)
00026   {
00027     assert(from.size() == 0); (void) from; (void) to;
00028     VertexSE2* v1 = static_cast<VertexSE2*>(_vertices[0]);
00029     v1->estimate() = _measurement;
00030   }
00031 
00032   bool EdgeSE2Prior::read(std::istream& is)
00033   {
00034     Vector3d p;
00035     is >> p[0] >> p[1] >> p[2];
00036     measurement().fromVector(p);
00037     inverseMeasurement() = measurement().inverse();
00038     for (int i = 0; i < 3; ++i)
00039       for (int j = i; j < 3; ++j) {
00040         is >> information()(i, j);
00041         if (i != j)
00042           information()(j, i) = information()(i, j);
00043       }
00044     return true;
00045   }
00046 
00047   bool EdgeSE2Prior::write(std::ostream& os) const
00048   {
00049     Vector3d p = measurement().toVector();
00050     os << p.x() << " " << p.y() << " " << p.z();
00051     for (int i = 0; i < 3; ++i)
00052       for (int j = i; j < 3; ++j)
00053         os << " " << information()(i, j);
00054     return os.good();
00055   }
00056 
00057 } // end namespace


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