Jafar
|
00001 /* $Id$ */ 00002 00003 #ifndef _MERGE_MAP_STRATEGY_HPP_ 00004 #define _MERGE_MAP_STRATEGY_HPP_ 00005 00006 #include <kernel/dataLog.hpp> 00007 #include <geom/t3dEuler.hpp> 00008 #include <slam/slamEkf.hpp> 00009 #include <slam/robot.hpp> 00010 #include <slam/baseSlam.hpp> 00011 #include <slam/MapManagerFactory.hpp> 00012 00013 #include "slammm/StartNewMapStrategy.hpp" 00014 00015 namespace jafar { 00016 namespace slammm { 00017 class StartNewMapStrategy; 00018 class MultiMapsSlam; 00019 class MapsPoseManager; 00020 00025 class MergeMapsStrategy { 00026 public: 00027 MergeMapsStrategy(); 00028 virtual ~MergeMapsStrategy(); 00033 void setMultiMapsSlam( MultiMapsSlam* ); 00037 MultiMapsSlam* multiMapsSlam(); 00042 virtual void decideMergeMap( unsigned int currentMapId, slam::SlamEkf* currentMap ) = 0; 00043 private: 00044 MultiMapsSlam* m_multiMapsSlam; 00045 }; 00046 00052 class AlwaysMergeMapsStrategy : public MergeMapsStrategy{ 00053 public: 00058 AlwaysMergeMapsStrategy( int minimalOverlapingFeaturesNumber ); 00059 virtual void decideMergeMap( unsigned int currentMapId, slam::SlamEkf* currentMap ); 00060 private: 00061 void getFeatureCov( slam::BaseFeature& baseFeature, jblas::vec& point, jblas::sym_mat& cov ); 00062 void getFeatureSegCov( slam::BaseFeature& baseFeature, jblas::vec& line, jblas::sym_mat& cov ); 00063 private: 00064 unsigned int m_minimalOverlapingFeaturesNumber; 00065 struct DMMInfoPoint; 00066 struct DMMInfoSegment; 00067 }; 00068 } 00069 } 00070 00071 #endif
Generated on Wed Oct 15 2014 00:37:28 for Jafar by doxygen 1.7.6.1 |