23 #include "pcl/visualization/pcl_visualizer.h" 33 #include "modules/perception/lidar/lib/segmentation/ncut/proto/ncut_param.pb.h" 36 namespace perception {
51 std::string
Name()
const override {
return "NCutSegmentation"; }
55 remove_ground_ =
false;
59 bool Configure(std::string model_name);
61 void PartitionConnectedComponents(
63 std::vector<base::PointFCloudPtr>* out_clouds);
66 bool filter_pedestrian_only,
68 std::vector<base::ObjectPtr>* segments);
72 bool GetConfigs(std::string* ncut_file);
77 std::unique_ptr<BaseGroundDetector> ground_detector_;
79 std::unique_ptr<BaseROIFilter> roi_filter_;
83 std::shared_ptr<base::AttributePointCloud<base::PointF>> original_cloud_;
84 std::shared_ptr<base::AttributePointCloud<base::PointD>>
85 original_world_cloud_;
86 std::shared_ptr<base::AttributePointCloud<base::PointF>> roi_cloud_;
87 std::shared_ptr<base::AttributePointCloud<base::PointD>> roi_world_cloud_;
91 std::vector<std::shared_ptr<NCut>> _segmentors;
93 std::unique_ptr<std::vector<ObjectPtr>> _outliers;
94 float grid_radius_ = 100.0f;
95 float height_threshold_ = 2.5f;
96 float partition_cell_size_ = 1.0f;
97 float vehicle_filter_cell_size_ = 1.0f;
98 float pedestrian_filter_cell_size_ = 0.05f;
99 float outlier_length_ = 0.3f;
100 float outlier_width_ = 0.3f;
101 float outlier_height_ = 0.3f;
102 int outlier_min_num_points_ = 10;
103 bool remove_ground_ =
true;
104 bool remove_roi_ =
true;
105 bool do_classification_ =
true;
106 std::string ground_detector_str_;
107 std::string roi_filter_str_;
108 NCutParam ncut_param_;
111 pcl::visualization::PCLVisualizer::Ptr _viewer;
113 char _viewer_id[128];
116 void VisualizeSegments(
const std::vector<base::ObjectPtr>& segments);
117 void VisualizeComponents(
119 const std::vector<std::vector<int>>& component_points);
NCutSegmentation()=default
Definition: ncut_segmentation.h:41
Definition: base_segmentation.h:28
pcl::PointCloud< CPoint >::Ptr CPointCloudPtr
Definition: pcl_util.h:31
bool Segment(const SegmentationOptions &options, LidarFrame *frame) override
~NCutSegmentation()=default
void ByPassROIService()
Definition: ncut_segmentation.h:53
Definition: base_segmentation.h:34
Definition: base_segmentation.h:32
Definition: thread_worker.h:26
Definition: lidar_frame.h:33
std::shared_ptr< PointFCloud > PointFCloudPtr
Definition: point_cloud.h:472
bool Init(const SegmentationInitOptions &options=SegmentationInitOptions()) override
ObjectType
Definition: object_types.h:26
std::string Name() const override
Definition: ncut_segmentation.h:51
std::shared_ptr< Object > ObjectPtr
Definition: object.h:118