GLIM
Loading...
Searching...
No Matches
points_selector.hpp
1#pragma once
2
3#include <spdlog/spdlog.h>
4#include <gtsam_points/util/vector3i_hash.hpp>
5#include <gtsam_points/segmentation/min_cut.hpp>
6#include <gtsam_points/segmentation/region_growing.hpp>
7#include <glim/viewer/editor/map_cell.hpp>
8
9#include <glk/pointcloud_buffer.hpp>
10
11namespace guik {
12class ModelControl;
13}
14
15namespace glim {
16
19public:
20 PointsSelector(std::shared_ptr<spdlog::logger> logger);
22
23 void clear();
24 void set_submaps(const std::vector<glim::SubMap::Ptr>& submaps);
25
26 void draw_ui();
27
28private:
29 std::vector<std::uint64_t> collect_neighbor_point_ids(const Eigen::Vector3d& point);
30 gtsam_points::PointCloudCPU::Ptr collect_submap_points(const std::vector<std::uint64_t>& point_ids);
31
32 void update_cells();
33 void remove_selected_points();
34
35 void select_points_tool();
36 void select_points_radius();
37 void select_outlier_points_radius();
38 void select_points_segmentation();
39
40private:
41 // Map data
42 std::vector<SubMap::Ptr> submaps;
43 std::vector<glk::PointCloudBuffer::Ptr> submap_drawables;
44
45 std::unordered_map<SubMap::ConstPtr, std::unordered_set<MapCell::Ptr>> cell_map;
46 std::unordered_map<Eigen::Vector3i, MapCell::Ptr, gtsam_points::Vector3iHash> map_cells;
47
48 // Selection data
49 std::vector<std::uint64_t> selected_point_ids;
50
51 Eigen::Vector3d picked_point;
52 std::unique_ptr<guik::ModelControl> model_control;
53
54 int num_threads;
55 float map_cell_resolution;
56 int cell_selection_window;
57
58 bool show_preferences_window;
59
60 bool show_picked_point;
61 bool show_selection_radius;
62
63 bool show_cells;
64 bool show_gizmo;
65 int selected_tool;
66
67 float select_radius;
68 float outlier_radius_offset;
69 int outliner_num_neighbors;
70 float outlier_stddev_thresh;
71
72 bool show_segmentation_radius;
73 int segmentation_method;
74 gtsam_points::MinCutParams min_cut_params;
75 gtsam_points::RegionGrowingParams region_growing_params;
76
77 // logging
78 std::shared_ptr<spdlog::logger> logger;
79};
80
81} // namespace glim
Definition loose_initial_state_estimation.hpp:9
Interactive point selection.
Definition points_selector.hpp:18