oh_my_loam/oh_my_loam/extractor/extractor.h

55 lines
1.4 KiB
C
Raw Normal View History

2021-01-04 21:26:09 +08:00
#pragma once
#include "common/common.h"
2021-01-05 14:33:42 +08:00
#include "oh_my_loam/base/feature.h"
#include "oh_my_loam/base/helper.h"
#include "oh_my_loam/base/types.h"
#include "oh_my_loam/visualizer/extractor_visualizer.h"
2021-01-04 21:26:09 +08:00
namespace oh_my_loam {
class Extractor {
public:
Extractor() = default;
virtual ~Extractor() = default;
bool Init();
void Process(const common::PointCloudConstPtr& cloud, Feature* const feature);
int num_scans() const { return num_scans_; }
protected:
2021-01-05 02:09:40 +08:00
virtual int GetScanID(const common::Point& pt) const = 0;
2021-01-04 21:26:09 +08:00
YAML::Node config_;
virtual void SplitScan(const common::PointCloud& cloud,
std::vector<TCTPointCloud>* const scans) const;
virtual void ComputeCurvature(TCTPointCloud* const scan) const;
virtual void AssignType(TCTPointCloud* const scan) const;
virtual void GenerateFeature(const TCTPointCloud& scan,
Feature* const feature) const;
int num_scans_ = 0;
std::unique_ptr<ExtractorVisualizer> visualizer_{nullptr};
bool verbose_ = false;
private:
2021-01-05 14:33:42 +08:00
void Visualize(const common::PointCloud& cloud, const Feature& feature,
double timestamp = 0.0);
2021-01-04 21:26:09 +08:00
void SetNeighborsPicked(const TCTPointCloud& scan, size_t ix,
std::vector<bool>* const picked) const;
bool is_vis_ = false;
DISALLOW_COPY_AND_ASSIGN(Extractor);
};
} // namespace oh_my_loam