treeoptimizer2.hh
Go to the documentation of this file.
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 
00044 #ifndef _TREEOPTIMIZER2_HH_
00045 #define _TREEOPTIMIZER2_HH_
00046 
00047 #include "posegraph2.hh"
00048 
00049 namespace AISNavigation {
00050 
00052 struct TreeOptimizer2: public TreePoseGraph2{
00053   typedef std::vector<Pose> PoseVector;
00054 
00056   TreeOptimizer2();
00057 
00059   virtual ~TreeOptimizer2();
00060 
00062   void initializeTreeParameters();
00063 
00065   void initializeOptimization();
00066 
00068   void initializeOnlineOptimization();
00069   
00071   void iterate(TreePoseGraph2::EdgeSet* eset=0);
00072 
00074   double error() const;
00075 
00076 protected:
00078   void computePreconditioner();
00079 
00081   void propagateErrors();
00082 
00085   void updatePoseChain(Vertex* v, Vertex* top);
00086 
00089   Pose getPose(Vertex*v, Vertex* top);
00090 
00092   double error(const Edge* e) const;
00093 
00095   int iteration;
00096 
00098   double gamma[3];
00099 
00102   PoseVector M;
00103 
00104 };
00105 
00106 }; //namespace AISNavigation
00107 #endif


rtabmap
Author(s): Mathieu Labbe
autogenerated on Fri Aug 28 2015 12:51:42