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_multi.h" 00018 00019 namespace g2o { 00020 00021 EdgeSE2Multi::EdgeSE2Multi() : 00022 BaseMultiEdge<3, SE2>() 00023 { 00024 } 00025 00026 bool EdgeSE2Multi::read(std::istream& is) 00027 { 00028 Eigen::Vector3d p; 00029 is >> p[0] >> p[1] >> p[2]; 00030 measurement().fromVector(p); 00031 inverseMeasurement() = measurement().inverse(); 00032 for (int i = 0; i < 3; ++i) 00033 for (int j = i; j < 3; ++j) { 00034 is >> information()(i, j); 00035 if (i != j) 00036 information()(j, i) = information()(i, j); 00037 } 00038 return true; 00039 } 00040 00041 bool EdgeSE2Multi::write(std::ostream& os) const 00042 { 00043 Vector3d p = measurement().toVector(); 00044 os << p.x() << " " << p.y() << " " << p.z(); 00045 for (int i = 0; i < 3; ++i) 00046 for (int j = i; j < 3; ++j) 00047 os << " " << information()(i, j); 00048 return os.good(); 00049 } 00050 00051 }