metricmap.h
Go to the documentation of this file.
1 /* -------------------------------------------------------------------------
2  * A repertory of multi primitive-to-primitive (MP2P) ICP algorithms in C++
3  * Copyright (C) 2018-2024 Jose Luis Blanco, University of Almeria
4  * See LICENSE for license information.
5  * ------------------------------------------------------------------------- */
12 #pragma once
13 
15 #include <mp2p_icp/layer_name_t.h>
16 #include <mp2p_icp/plane_patch.h>
17 #include <mp2p_icp/render_params.h>
18 #include <mrpt/maps/CPointsMap.h>
19 #include <mrpt/maps/NearestNeighborsCapable.h>
20 #include <mrpt/math/TLine3D.h>
21 #include <mrpt/math/TPoint3D.h>
22 #include <mrpt/math/geometry.h>
23 #include <mrpt/poses/CPose3DPDFGaussian.h>
24 #include <mrpt/serialization/CSerializable.h>
25 #include <mrpt/topography/data_types.h>
26 
27 #include <map>
28 #include <memory>
29 #include <optional>
30 #include <string>
31 #include <vector>
32 
35 {
36 class yaml;
37 }
38 
39 namespace mp2p_icp
40 {
55 class metric_map_t : public mrpt::serialization::CSerializable,
56  public std::enable_shared_from_this<metric_map_t>
57 {
58  DEFINE_SERIALIZABLE(metric_map_t, mp2p_icp)
59 
60  public:
64  constexpr static const char* PT_LAYER_RAW = "raw";
65  constexpr static const char* PT_LAYER_PLANE_CENTROIDS = "plane_centroids";
66 
82  std::map<layer_name_t, mrpt::maps::CMetricMap::Ptr> layers;
83 
85  std::vector<mrpt::math::TLine3D> lines;
86 
88  std::vector<plane_patch_t> planes;
89 
94  std::optional<uint64_t> id;
95 
101  std::optional<std::string> label;
102 
104  {
107  mrpt::topography::TGeodeticCoords geo_coord;
108 
114  mrpt::poses::CPose3DPDFGaussian T_enu_to_map;
115  };
116 
119  std::optional<Georeferencing> georeferencing;
120 
127  virtual bool empty() const;
128 
130  virtual size_t size() const;
131 
133  virtual size_t size_points_only() const;
134 
137  virtual std::string contents_summary() const;
138 
140  virtual void clear();
141 
146  bool save_to_file(const std::string& fileName) const;
147 
151  bool load_from_file(const std::string& fileName);
152 
162  mrpt::maps::CPointsMap::Ptr point_layer(const layer_name_t& name) const;
163 
173  virtual auto get_visualization(const render_params_t& p = render_params_t()) const
174  -> std::shared_ptr<mrpt::opengl::CSetOfObjects>;
175 
184  virtual void merge_with(
185  const metric_map_t& otherPc,
186  const std::optional<mrpt::math::TPose3D>& otherRelativePose = std::nullopt);
187 
190  mrpt::opengl::CSetOfObjects& o, const render_params_planes_t& p) const;
191 
194  mrpt::opengl::CSetOfObjects& o, const render_params_lines_t& p) const;
195 
198  mrpt::opengl::CSetOfObjects& o, const render_params_points_t& p) const;
199 
201  static void get_visualization_map_layer(
202  mrpt::opengl::CSetOfObjects& o, const render_params_point_layer_t& p,
203  const mrpt::maps::CMetricMap::Ptr& map);
204 
208  Ptr get_shared_from_this();
209 
214 
215  // const versions:
216  ConstPtr get_shared_from_this() const;
217  ConstPtr get_shared_from_this_or_clone() const;
218 
221  protected:
223  virtual void derivedSerializeTo([[maybe_unused]] mrpt::serialization::CArchive& out) const {}
224 
226  virtual void derivedSerializeFrom([[maybe_unused]] mrpt::serialization::CArchive& in) {}
227 };
228 
242 const mrpt::maps::CPointsMap* MapToPointsMap(const mrpt::maps::CMetricMap& map);
243 
245 mrpt::maps::CPointsMap* MapToPointsMap(mrpt::maps::CMetricMap& map);
246 
252 const mrpt::maps::NearestNeighborsCapable* MapToNN(
253  const mrpt::maps::CMetricMap& map, bool throwIfNotImplemented);
254 
261  const mrpt::maps::CMetricMap& map, bool throwIfNotImplemented);
262 
264 mrpt::serialization::CArchive& operator>>(
265  mrpt::serialization::CArchive& in, std::optional<metric_map_t::Georeferencing>& g);
267 mrpt::serialization::CArchive& operator<<(
268  mrpt::serialization::CArchive& out, const std::optional<metric_map_t::Georeferencing>& g);
269 
271 std::optional<metric_map_t::Georeferencing> FromYAML(const mrpt::containers::yaml& yaml_data);
272 
274 mrpt::containers::yaml ToYAML(const std::optional<metric_map_t::Georeferencing>& gref);
275 
278 } // namespace mp2p_icp
mp2p_icp
Definition: covariance.h:17
mp2p_icp::metric_map_t::empty
virtual bool empty() const
Definition: metricmap.cpp:364
mp2p_icp::operator>>
mrpt::serialization::CArchive & operator>>(mrpt::serialization::CArchive &in, Pairings &obj)
Definition: Pairings.cpp:53
mp2p_icp::metric_map_t::Georeferencing::geo_coord
mrpt::topography::TGeodeticCoords geo_coord
Definition: metricmap.h:107
mp2p_icp::metric_map_t::get_visualization_map_layer
static void get_visualization_map_layer(mrpt::opengl::CSetOfObjects &o, const render_params_point_layer_t &p, const mrpt::maps::CMetricMap::Ptr &map)
Definition: metricmap.cpp:220
mp2p_icp::metric_map_t::get_shared_from_this_or_clone
Ptr get_shared_from_this_or_clone()
Definition: metricmap.cpp:580
mp2p_icp::render_params_point_layer_t
Definition: render_params.h:115
mp2p_icp::layer_name_t
std::string layer_name_t
Definition: layer_name_t.h:22
render_params.h
Render parameters for the different geometric entities.
mp2p_icp::metric_map_t::get_shared_from_this
Ptr get_shared_from_this()
Definition: metricmap.cpp:567
mp2p_icp::metric_map_t::PT_LAYER_PLANE_CENTROIDS
constexpr static const char * PT_LAYER_PLANE_CENTROIDS
Definition: metricmap.h:65
mp2p_icp::metric_map_t::save_to_file
bool save_to_file(const std::string &fileName) const
Definition: metricmap.cpp:545
mp2p_icp::metric_map_t::get_visualization_points
void get_visualization_points(mrpt::opengl::CSetOfObjects &o, const render_params_points_t &p) const
Definition: metricmap.cpp:186
mp2p_icp::metric_map_t::derivedSerializeTo
virtual void derivedSerializeTo([[maybe_unused]] mrpt::serialization::CArchive &out) const
Definition: metricmap.h:223
mp2p_icp::metric_map_t::clear
virtual void clear()
Definition: metricmap.cpp:365
mrpt
Definition: LogRecord.h:100
plane_patch.h
Defines plane_patch_t.
mp2p_icp::render_params_planes_t
Definition: render_params.h:32
mp2p_icp::metric_map_t::PT_LAYER_RAW
constexpr static const char * PT_LAYER_RAW
Definition: metricmap.h:64
testing::internal::string
::std::string string
Definition: gtest.h:1979
mp2p_icp::metric_map_t::label
std::optional< std::string > label
Definition: metricmap.h:101
layer_name_t.h
kitti-batch-convert.out
string out
Definition: kitti-batch-convert.py:7
mp2p_icp::metric_map_t::derivedSerializeFrom
virtual void derivedSerializeFrom([[maybe_unused]] mrpt::serialization::CArchive &in)
Definition: metricmap.h:226
mp2p_icp::ToYAML
mrpt::containers::yaml ToYAML(const std::optional< metric_map_t::Georeferencing > &gref)
Serialization of geo-reference information as YAML.
Definition: metricmap.cpp:762
mp2p_icp::render_params_lines_t
Definition: render_params.h:50
mp2p_icp::metric_map_t::planes
std::vector< plane_patch_t > planes
Definition: metricmap.h:88
mp2p_icp::FromYAML
std::optional< metric_map_t::Georeferencing > FromYAML(const mrpt::containers::yaml &yaml_data)
Serialization of geo-reference information as YAML.
Definition: metricmap.cpp:731
mp2p_icp::MapToPointsMap
const mrpt::maps::CPointsMap * MapToPointsMap(const mrpt::maps::CMetricMap &map)
Definition: metricmap.cpp:624
mp2p_icp::metric_map_t::lines
std::vector< mrpt::math::TLine3D > lines
Definition: metricmap.h:85
mp2p_icp::metric_map_t::point_layer
mrpt::maps::CPointsMap::Ptr point_layer(const layer_name_t &name) const
Definition: metricmap.cpp:607
mp2p_icp::NearestPlaneCapable
Definition: NearestPlaneCapable.h:25
mp2p_icp::metric_map_t::merge_with
virtual void merge_with(const metric_map_t &otherPc, const std::optional< mrpt::math::TPose3D > &otherRelativePose=std::nullopt)
Definition: metricmap.cpp:369
mp2p_icp::metric_map_t::contents_summary
virtual std::string contents_summary() const
Definition: metricmap.cpp:481
mp2p_icp::render_params_t
Definition: render_params.h:167
mp2p_icp::metric_map_t::size
virtual size_t size() const
Definition: metricmap.cpp:458
mp2p_icp::metric_map_t::Georeferencing
Definition: metricmap.h:103
mp2p_icp::metric_map_t::get_visualization
virtual auto get_visualization(const render_params_t &p=render_params_t()) const -> std::shared_ptr< mrpt::opengl::CSetOfObjects >
Definition: metricmap.cpp:131
mp2p_icp::metric_map_t::get_visualization_lines
void get_visualization_lines(mrpt::opengl::CSetOfObjects &o, const render_params_lines_t &p) const
Definition: metricmap.cpp:166
mp2p_icp::metric_map_t::load_from_file
bool load_from_file(const std::string &fileName)
Definition: metricmap.cpp:556
mp2p_icp::metric_map_t::Georeferencing::T_enu_to_map
mrpt::poses::CPose3DPDFGaussian T_enu_to_map
Definition: metricmap.h:114
std
mp2p_icp::render_params_points_t
Definition: render_params.h:143
mp2p_icp::operator<<
mrpt::serialization::CArchive & operator<<(mrpt::serialization::CArchive &out, const Pairings &obj)
Definition: Pairings.cpp:46
NearestPlaneCapable.h
Defines a virtual interface for maps capable of finding pt-plane pairings.
mp2p_icp::metric_map_t
Generic container of pointcloud(s), extracted features and other maps.
Definition: metricmap.h:55
mp2p_icp::metric_map_t::get_visualization_planes
void get_visualization_planes(mrpt::opengl::CSetOfObjects &o, const render_params_planes_t &p) const
Definition: metricmap.cpp:145
mp2p_icp::metric_map_t::id
std::optional< uint64_t > id
Definition: metricmap.h:94
mp2p_icp::metric_map_t::georeferencing
std::optional< Georeferencing > georeferencing
Definition: metricmap.h:119
mp2p_icp::metric_map_t::size_points_only
virtual size_t size_points_only() const
Definition: metricmap.cpp:468
mp2p_icp::MapToNN
const mrpt::maps::NearestNeighborsCapable * MapToNN(const mrpt::maps::CMetricMap &map, bool throwIfNotImplemented)
Definition: metricmap.cpp:658
mp2p_icp::metric_map_t::layers
std::map< layer_name_t, mrpt::maps::CMetricMap::Ptr > layers
Definition: metricmap.h:82
mrpt::containers
Frwd declarations:
Definition: metricmap.h:34
mp2p_icp::MapToNP
const mp2p_icp::NearestPlaneCapable * MapToNP(const mrpt::maps::CMetricMap &map, bool throwIfNotImplemented)
Definition: metricmap.cpp:672


mp2p_icp
Author(s):
autogenerated on Mon May 26 2025 02:45:50