00001 /********************************************************************** 00002 * 00003 * This source code is part of the Tree-based Network Optimizer (TORO) 00004 * 00005 * TORO Copyright (c) 2007 Giorgio Grisetti, Cyrill Stachniss, 00006 * Slawomir Grzonka and Wolfram Burgard 00007 * 00008 * TORO is licences under the Common Creative License, 00009 * Attribution-NonCommercial-ShareAlike 3.0 00010 * 00011 * You are free: 00012 * - to Share - to copy, distribute and transmit the work 00013 * - to Remix - to adapt the work 00014 * 00015 * Under the following conditions: 00016 * 00017 * - Attribution. You must attribute the work in the manner specified 00018 * by the author or licensor (but not in any way that suggests that 00019 * they endorse you or your use of the work). 00020 * 00021 * - Noncommercial. You may not use this work for commercial purposes. 00022 * 00023 * - Share Alike. If you alter, transform, or build upon this work, 00024 * you may distribute the resulting work only under the same or 00025 * similar license to this one. 00026 * 00027 * Any of the above conditions can be waived if you get permission 00028 * from the copyright holder. Nothing in this license impairs or 00029 * restricts the author's moral rights. 00030 * 00031 * TORO is distributed in the hope that it will be useful, 00032 * but WITHOUT ANY WARRANTY; without even the implied 00033 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00034 * PURPOSE. 00035 **********************************************************************/ 00036 00043 #ifndef _POSEGRAPH2_HH_ 00044 #define _POSEGRAPH2_HH_ 00045 00046 #include "posegraph.hh" 00047 #include "transformation2.hh" 00048 #include <iostream> 00049 #include <vector> 00050 00051 namespace AISNavigation { 00052 00053 00054 00057 struct TreePoseGraph2: public TreePoseGraph< Operations2D<double> >{ 00058 00059 typedef Operations2D<double>::PoseType Pose; 00060 typedef Operations2D<double>::RotationType Rotation; 00061 typedef Operations2D<double>::TranslationType Translation; 00062 typedef Operations2D<double>::TransformationType Transformation; 00063 typedef Operations2D<double>::CovarianceType CovarianceMatrix; 00064 typedef Operations2D<double>::InformationType InformationMatrix; 00065 00070 bool load( const char* filename, bool overrideCovariances=false); 00071 00073 bool loadEquivalences( const char* filename); 00074 00076 bool save( const char* filename); 00077 00079 bool saveGnuplot( const char* filename); 00080 00082 void printDepth( std::ostream& os ); 00083 00085 void printWidth( std::ostream& os ); 00086 00088 void printEdgesStat( std::ostream& os); 00089 00090 void initializeOnTree(); 00091 00093 virtual void revertEdgeInfo(Edge* e); 00094 00095 virtual void initializeFromParentEdge(Vertex* v); 00096 00100 virtual void collapseEdge(Edge* e); 00101 00103 int verboseLevel; 00104 }; 00105 00106 }; //namespace AISNavigation 00107 #endif 00108 00109 00110