CoreWrapper.cpp: Moved map generation stuff in MapsManager class (that reduces a little the memory used for the compilation of CoreWrapper.cpp).

This commit is contained in:
Mathieu Labbe
2015-05-14 02:16:19 -04:00
parent 550655c887
commit 927c80d356
5 changed files with 739 additions and 647 deletions
+90
View File
@@ -0,0 +1,90 @@
/*
* MapsManager.h
*
* Created on: 2015-05-14
* Author: mathieu
*/
#ifndef MAPSMANAGER_H_
#define MAPSMANAGER_H_
#include <rtabmap/core/Signature.h>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <ros/time.h>
#include <ros/publisher.h>
namespace octomap{
class OcTree;
}
namespace rtabmap {
class Memory;
} // namespace rtabmap
class MapsManager {
public:
MapsManager();
virtual ~MapsManager();
void clear();
std::map<int, rtabmap::Transform> getFilteredPoses(
const std::map<int, rtabmap::Transform> & poses);
std::map<int, rtabmap::Transform> updateMapCaches(
const std::map<int, rtabmap::Transform> & poses,
const rtabmap::Memory * memory,
bool updateCloud,
bool updateProj,
bool updateGrid,
const std::map<int, rtabmap::Signature> & signatures = std::map<int, rtabmap::Signature>());
void publishMaps(
const std::map<int, rtabmap::Transform> & poses,
const ros::Time & stamp,
const std::string & mapFrameId);
cv::Mat generateProjMap(
const std::map<int, rtabmap::Transform> & filteredPoses,
float & xMin,
float & yMin,
float & gridCellSize);
cv::Mat generateGridMap(
const std::map<int, rtabmap::Transform> & filteredPoses,
float & xMin,
float & yMin,
float & gridCellSize);
#ifdef WITH_OCTOMAP
octomap::OcTree * createOctomap(const std::map<int, rtabmap::Transform> & poses);
#endif
private:
// mapping stuff
int cloudDecimation_;
double cloudMaxDepth_;
double cloudVoxelSize_;
bool cloudOutputVoxelized_;
double projMaxGroundAngle_;
int projMinClusterSize_;
double projMaxHeight_;
double gridCellSize_;
double gridSize_;
bool gridEroded_;
double mapFilterRadius_;
double mapFilterAngle_;
bool mapCacheCleanup_;
ros::Publisher cloudMapPub_;
ros::Publisher projMapPub_;
ros::Publisher gridMapPub_;
std::map<int, pcl::PointCloud<pcl::PointXYZRGB>::Ptr > clouds_;
std::map<int, std::pair<cv::Mat, cv::Mat> > projMaps_; // <ground, obstacles>
std::map<int, std::pair<cv::Mat, cv::Mat> > gridMaps_; // <ground, obstacles>
};
#endif /* MAPSMANAGER_H_ */