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.h" 00018 #ifdef __APPLE__ 00019 #include <OpenGL/gl.h> 00020 #else 00021 #include <GL/gl.h> 00022 #endif 00023 00024 namespace g2o { 00025 namespace tutorial { 00026 00027 EdgeSE2::EdgeSE2() : 00028 BaseBinaryEdge<3, SE2, VertexSE2, VertexSE2>() 00029 { 00030 } 00031 00032 bool EdgeSE2::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 EdgeSE2::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 00058 } // end namespace