mp2p_icp_filters
src
FilterDeleteLayer.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
* ------------------------------------------------------------------------- */
13
#include <
mp2p_icp_filters/FilterDeleteLayer.h
>
14
#include <mrpt/containers/yaml.h>
15
16
IMPLEMENTS_MRPT_OBJECT
(
FilterDeleteLayer
,
mp2p_icp_filters::FilterBase
,
mp2p_icp_filters
)
17
18
using namespace
mp2p_icp_filters
;
19
20
void
FilterDeleteLayer::Parameters::load_from_yaml
(
const
mrpt::containers::yaml& c)
21
{
22
ASSERTMSG_(
23
c.has(
"pointcloud_layer_to_remove"
),
24
"YAML configuration must have an entry `pointcloud_layer_to_remove` "
25
"with a "
26
"scalar or sequence."
);
27
28
pointcloud_layer_to_remove
.clear();
29
30
auto
cfgIn = c[
"pointcloud_layer_to_remove"
];
31
if
(cfgIn.isScalar())
32
{
33
pointcloud_layer_to_remove
.push_back(cfgIn.as<
std::string
>());
34
}
35
else
36
{
37
ASSERTMSG_(
38
cfgIn.isSequence(),
39
"YAML configuration must have an entry "
40
"`pointcloud_layer_to_remove` "
41
"with a scalar or sequence."
);
42
43
for
(
const
auto
&
s
: cfgIn.asSequence())
44
pointcloud_layer_to_remove
.push_back(
s
.as<
std::string
>());
45
}
46
ASSERT_(!
pointcloud_layer_to_remove
.empty());
47
48
MCP_LOAD_OPT(c,
error_on_missing_input_layer
);
49
}
50
51
FilterDeleteLayer::FilterDeleteLayer
()
52
{
53
mrpt::system::COutputLogger::setLoggerName(
"FilterDeleteLayer"
);
54
}
55
56
void
FilterDeleteLayer::initialize
(
const
mrpt::containers::yaml& c)
57
{
58
MRPT_START
59
60
MRPT_LOG_DEBUG_STREAM(
"Loading these params:\n"
<< c);
61
params_
.
load_from_yaml
(c);
62
63
MRPT_END
64
}
65
66
void
FilterDeleteLayer::filter
(
mp2p_icp::metric_map_t
& inOut)
const
67
{
68
MRPT_START
69
70
for
(
const
auto
& layer :
params_
.
pointcloud_layer_to_remove
)
71
{
72
const
auto
nRemoved = inOut.
layers
.erase(layer);
73
74
if
(
params_
.
error_on_missing_input_layer
)
75
{
76
ASSERTMSG_(
77
nRemoved != 0,
78
mrpt::format(
"Point cloud layer '%s' was not found."
, layer.c_str()));
79
}
80
MRPT_LOG_DEBUG_STREAM(
"Deleted layer: '"
<< layer <<
"'"
);
81
}
82
MRPT_END
83
}
mp2p_icp_filters::FilterDeleteLayer::Parameters::error_on_missing_input_layer
bool error_on_missing_input_layer
Definition:
FilterDeleteLayer.h:47
mp2p_icp_filters::FilterDeleteLayer::initialize
void initialize(const mrpt::containers::yaml &c) override
Definition:
FilterDeleteLayer.cpp:56
FilterDeleteLayer.h
Removes a given point layer.
mp2p_icp_filters::FilterDeleteLayer::FilterDeleteLayer
FilterDeleteLayer()
Definition:
FilterDeleteLayer.cpp:51
s
XmlRpcServer s
mp2p_icp_filters::FilterDeleteLayer
Definition:
FilterDeleteLayer.h:25
testing::internal::string
::std::string string
Definition:
gtest.h:1979
IMPLEMENTS_MRPT_OBJECT
IMPLEMENTS_MRPT_OBJECT(FilterDecimateVoxelsQuadratic, mp2p_icp_filters::FilterBase, mp2p_icp_filters) using namespace mp2p_icp_filters
mp2p_icp_filters::FilterDeleteLayer::Parameters::load_from_yaml
void load_from_yaml(const mrpt::containers::yaml &c)
Definition:
FilterDeleteLayer.cpp:20
mp2p_icp_filters::FilterBase
Definition:
FilterBase.h:46
mp2p_icp_filters::FilterDeleteLayer::filter
void filter(mp2p_icp::metric_map_t &inOut) const override
Definition:
FilterDeleteLayer.cpp:66
mp2p_icp_filters::FilterDeleteLayer::params_
Parameters params_
Definition:
FilterDeleteLayer.h:51
mp2p_icp::metric_map_t
Generic container of pointcloud(s), extracted features and other maps.
Definition:
metricmap.h:55
mp2p_icp::metric_map_t::layers
std::map< layer_name_t, mrpt::maps::CMetricMap::Ptr > layers
Definition:
metricmap.h:82
mp2p_icp_filters
Definition:
FilterAdjustTimestamps.h:19
mp2p_icp_filters::FilterDeleteLayer::Parameters::pointcloud_layer_to_remove
std::vector< std::string > pointcloud_layer_to_remove
Definition:
FilterDeleteLayer.h:42
mp2p_icp
Author(s):
autogenerated on Mon May 26 2025 02:45:48