80 lines
2.3 KiB
C++
80 lines
2.3 KiB
C++
#ifndef MANAGED_SCAN_H
|
|
#define MANAGED_SCAN_H
|
|
|
|
#include "scan.h"
|
|
#include "scanserver/sharedScan.h"
|
|
|
|
|
|
|
|
class ManagedScan : public Scan {
|
|
public:
|
|
static void openDirectory(const std::string& path, IOType type,
|
|
int start, int end = -1);
|
|
static void closeDirectory();
|
|
|
|
static std::size_t getMemorySize();
|
|
|
|
virtual ~ManagedScan();
|
|
|
|
virtual void setRangeFilter(double max, double min);
|
|
virtual void setHeightFilter(double top, double bottom);
|
|
virtual void setRangeMutation(double range);
|
|
|
|
virtual void setReductionParameter(double voxelSize, int nrpts = 0,
|
|
PointType pointtype = PointType());
|
|
void setShowReductionParameter(double voxelSize, int nrpts = 0,
|
|
PointType pointtype = PointType());
|
|
virtual void setOcttreeParameter(double reduction_voxelSize,
|
|
double octtree_voxelSize, PointType pointtype,
|
|
bool loadOct, bool saveOct);
|
|
|
|
virtual const char* getIdentifier() const { return m_shared_scan->getIdentifier(); }
|
|
|
|
virtual DataPointer get(const std::string& identifier);
|
|
virtual void get(unsigned int types);
|
|
virtual DataPointer create(const std::string& identifier, unsigned int size);
|
|
virtual void clear(const std::string& identifier);
|
|
|
|
virtual unsigned int readFrames();
|
|
virtual void saveFrames();
|
|
virtual unsigned int getFrameCount();
|
|
virtual void getFrame(unsigned int i, const double*& pose_matrix, AlgoType& type);
|
|
|
|
protected:
|
|
virtual void createSearchTreePrivate();
|
|
virtual void calcReducedOnDemandPrivate();
|
|
virtual void addFrame(AlgoType type);
|
|
|
|
private:
|
|
//! Reference to the shared scan
|
|
SharedScan* m_shared_scan;
|
|
|
|
//! SharedScan vector to be deleted on closeDirectory
|
|
static SharedScanVector* shared_scans;
|
|
|
|
//! Flag to keep track of whether we have to update/create reduced points at the start
|
|
bool m_reduced_ready;
|
|
|
|
//! Flag to reset the persistent frames on write actions in slam to avoid a clear call
|
|
bool m_reset_frames_on_write;
|
|
|
|
//! Voxelsize of the octtree used for reduction
|
|
double show_reduction_voxelSize;
|
|
|
|
//! Which point to take out of the reduction octtree, 0 for center
|
|
int show_reduction_nrpts;
|
|
|
|
//! Pointtype used for the reduction octtree
|
|
PointType show_reduction_pointtype;
|
|
|
|
|
|
ManagedScan(SharedScan* shared_scan);
|
|
|
|
//! Create reduced points for show
|
|
void calcReducedShow();
|
|
|
|
//! Create Octtree for show
|
|
void createOcttree();
|
|
};
|
|
|
|
#endif //MANAGED_SCAN_H
|