Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef OPTIMIZERG2O_H_
00029 #define OPTIMIZERG2O_H_
00030
00031 #include "rtabmap/core/RtabmapExp.h"
00032
00033 #include <rtabmap/core/Optimizer.h>
00034
00035 namespace rtabmap {
00036
00037 class RTABMAP_EXP OptimizerG2O : public Optimizer
00038 {
00039 public:
00040 static bool available();
00041 static bool isCSparseAvailable();
00042 static bool isCholmodAvailable();
00043 static bool saveGraph(
00044 const std::string & fileName,
00045 const std::map<int, Transform> & poses,
00046 const std::multimap<int, Link> & edgeConstraints,
00047 bool useRobustConstraints = false);
00048
00049 public:
00050 OptimizerG2O(const ParametersMap & parameters = ParametersMap()) :
00051 Optimizer(parameters),
00052 solver_(Parameters::defaultg2oSolver()),
00053 optimizer_(Parameters::defaultg2oOptimizer()),
00054 pixelVariance_(Parameters::defaultg2oPixelVariance())
00055 {
00056 parseParameters(parameters);
00057 }
00058 virtual ~OptimizerG2O() {}
00059
00060 virtual Type type() const {return kTypeG2O;}
00061
00062 virtual void parseParameters(const ParametersMap & parameters);
00063
00064 virtual std::map<int, Transform> optimize(
00065 int rootId,
00066 const std::map<int, Transform> & poses,
00067 const std::multimap<int, Link> & edgeConstraints,
00068 std::list<std::map<int, Transform> > * intermediateGraphes = 0,
00069 double * finalError = 0,
00070 int * iterationsDone = 0);
00071
00072 virtual std::map<int, Transform> optimizeBA(
00073 int rootId,
00074 const std::map<int, Transform> & poses,
00075 const std::multimap<int, Link> & links,
00076 const std::map<int, Signature> & signatures);
00077
00078 private:
00079 int solver_;
00080 int optimizer_;
00081 double pixelVariance_;
00082 };
00083
00084 }
00085 #endif