00001 #ifndef COLOR_OCTOMAP_SERVER_RGBDSLAM 00002 #define COLOR_OCTOMAP_SERVER_RGBDSLAM 00003 00004 #include "parameter_server.h" 00005 //#include <octomap/ColorVoxelMap.h> 00006 #include <octomap/ColorOcTree.h> 00007 #include <octomap/Pointcloud.h> 00008 #include <octomap/octomap.h> 00009 #include <qtconcurrentrun.h> 00010 #include <memory> 00011 #include <boost/shared_ptr.hpp> 00012 #include "renderable.h" 00013 00014 class ColorOctomapServer : public Renderable { 00015 public: 00016 ColorOctomapServer(); 00017 virtual ~ColorOctomapServer(); 00018 void reset(); 00019 bool save(const char* filename) const; 00022 virtual void insertCloudCallback(const pointcloud_type::ConstPtr cloud, double max_range = -1.0); 00023 00027 virtual void insertCloudCallbackCommon(boost::shared_ptr<octomap::Pointcloud> cloud, 00028 pointcloud_type::ConstPtr colors, 00029 const octomap::point3d& origin, double max_range = -1.0); 00030 00032 void occupancyFilter(pointcloud_type::ConstPtr input, 00033 pointcloud_type::Ptr output, 00034 double occupancy_threshold); 00035 00036 virtual void render(); 00037 protected: 00038 octomap::ColorOcTree m_octoMap; 00039 //octomap::OctomapROS<octomap::ColorOcTree> m_octoMap; 00040 mutable QFuture<void> rendering; //Mutable is a hack, otherwise waitforfinished cannot be called in const function 00041 }; 00042 00043 #endif 00044