Parameters.cpp
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  * ------------------------------------------------------------------------- */
6 
7 #include <mp2p_icp/Parameters.h>
8 #include <mrpt/core/get_env.h>
9 #include <mrpt/serialization/CArchive.h>
10 #include <mrpt/serialization/stl_serialization.h>
11 #include <mrpt/version.h>
12 
13 IMPLEMENTS_MRPT_OBJECT(Parameters, mrpt::serialization::CSerializable, mp2p_icp)
14 
15 using namespace mp2p_icp;
16 
17 // this env var can be used to enforce generating files despite the actual
18 // parameter files.
20  mrpt::get_env<bool>("MP2P_ICP_GENERATE_DEBUG_FILES", false);
21 
22 // Implementation of the CSerializable virtual interface:
23 uint8_t Parameters::serializeGetVersion() const { return 2; }
24 void Parameters::serializeTo(mrpt::serialization::CArchive& out) const
25 {
31 }
32 void Parameters::serializeFrom(mrpt::serialization::CArchive& in, uint8_t version)
33 {
34  *this = Parameters();
35 
36  switch (version)
37  {
38  case 0:
39  case 1:
40  case 2:
41  {
45  if (version >= 1) in >> decimationDebugFiles;
46  if (version >= 2) in >> saveIterationDetails >> decimationIterationDetails;
47  }
48  break;
49  default:
50  MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(version);
51  };
52 
54 }
55 
56 void Parameters::load_from(const mrpt::containers::yaml& p)
57 {
58  MCP_LOAD_REQ(p, maxIterations);
59  MCP_LOAD_OPT(p, minAbsStep_trans);
60  MCP_LOAD_OPT(p, minAbsStep_rot);
61  MCP_LOAD_OPT(p, generateDebugFiles);
62  MCP_LOAD_OPT(p, debugFileNameFormat);
63  MCP_LOAD_OPT(p, debugPrintIterationProgress);
64  MCP_LOAD_OPT(p, decimationDebugFiles);
65  MCP_LOAD_OPT(p, saveIterationDetails);
66  MCP_LOAD_OPT(p, decimationIterationDetails);
67 
68  if (p.has("quality_checkpoints"))
69  {
70  ASSERT_(
71  p["quality_checkpoints"].isSequence() &&
72 #if MRPT_VERSION >= 0x020d00
73  !p["quality_checkpoints"].asSequenceRange().empty()
74 #else
75  !p["quality_checkpoints"].asSequence().empty()
76 #endif
77  );
78 
79  quality_checkpoints.clear();
80 #if MRPT_VERSION >= 0x020d00
81  for (const auto& e : p["quality_checkpoints"].asSequenceRange())
82 #else
83  for (const auto& e : p["quality_checkpoints"].asSequence())
84 #endif
85 
86  {
87  ASSERTMSG_(
88  e.isMap(),
89  "Entries within 'quality_checkpoints' must be a Map. See "
90  "mp2p_icp::Parameters docs.");
91 
92  quality_checkpoints.emplace(
93  e.asMap().at("iteration").as<size_t>(),
94  e.asMap().at("minimum_quality").as<double>());
95  }
96  }
97 
99 }
100 
101 void Parameters::save_to(mrpt::containers::yaml& p) const
102 {
103  MCP_SAVE(p, maxIterations);
104  MCP_SAVE(p, minAbsStep_trans);
105  MCP_SAVE(p, minAbsStep_rot);
106  MCP_SAVE(p, generateDebugFiles);
107  MCP_SAVE(p, debugFileNameFormat);
108  MCP_SAVE(p, debugPrintIterationProgress);
109  MCP_SAVE(p, decimationDebugFiles);
110  MCP_SAVE(p, saveIterationDetails);
111  MCP_SAVE(p, decimationIterationDetails);
112 }
mp2p_icp
Definition: covariance.h:17
mp2p_icp::Parameters::save_to
void save_to(mrpt::containers::yaml &p) const
Definition: Parameters.cpp:101
mp2p_icp::Parameters::saveIterationDetails
bool saveIterationDetails
Definition: Parameters.h:64
mp2p_icp::Parameters::minAbsStep_trans
double minAbsStep_trans
Definition: Parameters.h:39
Parameters
PM::Parameters Parameters
Definition: filterProfiler.cpp:20
mp2p_icp::Parameters::generateDebugFiles
bool generateDebugFiles
Definition: Parameters.h:58
mp2p_icp::Parameters::debugFileNameFormat
std::string debugFileNameFormat
Definition: Parameters.h:78
Parameters.h
IMPLEMENTS_MRPT_OBJECT
IMPLEMENTS_MRPT_OBJECT(FilterDecimateVoxelsQuadratic, mp2p_icp_filters::FilterBase, mp2p_icp_filters) using namespace mp2p_icp_filters
mp2p_icp::Parameters::maxIterations
uint32_t maxIterations
Definition: Parameters.h:34
kitti-batch-convert.out
string out
Definition: kitti-batch-convert.py:7
mp2p_icp::Parameters::decimationDebugFiles
uint32_t decimationDebugFiles
Definition: Parameters.h:75
mp2p_icp::Parameters::decimationIterationDetails
uint32_t decimationIterationDetails
Definition: Parameters.h:70
mp2p_icp::Parameters::minAbsStep_rot
double minAbsStep_rot
Definition: Parameters.h:44
mp2p_icp::Parameters::load_from
void load_from(const mrpt::containers::yaml &p)
Definition: Parameters.cpp:56
mp2p_icp::Parameters::quality_checkpoints
std::map< uint32_t, double > quality_checkpoints
Definition: Parameters.h:92
MP2P_ICP_GENERATE_DEBUG_FILES
const bool MP2P_ICP_GENERATE_DEBUG_FILES
Definition: Parameters.cpp:19
mp2p_icp::Parameters::debugPrintIterationProgress
bool debugPrintIterationProgress
Definition: Parameters.h:88
mp2p_icp::Parameters
Definition: Parameters.h:26


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