20 const mrpt::containers::yaml& params)
25 mrpt::containers::yaml p = params;
26 if (!p.has(
"allowMatchAlreadyMatchedGlobalPoints"))
27 p[
"allowMatchAlreadyMatchedGlobalPoints"] =
true;
34 const mrpt::poses::CPose3D& localPose,
35 [[maybe_unused]]
const Pairings& pairingsFromICP)
const 41 matcher_.
match(pcGlobal, pcLocal, localPose, {}, ms, pairings);
45 size_t nEffectiveLocalPoints = 0;
56 for (
const auto& kv : p.second)
58 const auto& localLayerName = kv.first;
59 nEffectiveLocalPoints +=
65 ASSERT_(nEffectiveLocalPoints != 0);
67 return pairings.
size() / double(nEffectiveLocalPoints);
Matcher_Points_DistanceThreshold matcher_
Generic container of pointcloud(s), extracted features and other maps.
double evaluate(const metric_map_t &pcGlobal, const metric_map_t &pcLocal, const mrpt::poses::CPose3D &localPose, const Pairings &pairingsFromICP) const override
void initialize(const mrpt::containers::yaml ¶ms) override
virtual bool match(const metric_map_t &pcGlobal, const metric_map_t &pcLocal, const mrpt::poses::CPose3D &localPose, const MatchContext &mc, MatchState &ms, Pairings &out) const
virtual size_t size_points_only() const
virtual size_t size() const
IMPLEMENTS_MRPT_OBJECT(metric_map_t, mrpt::serialization::CSerializable, mp2p_icp) using namespace mp2p_icp
void initialize(const mrpt::containers::yaml ¶ms) override
mrpt::maps::CPointsMap::Ptr point_layer(const layer_name_t &name) const
std::map< std::string, std::map< std::string, double > > weight_pt2pt_layers
Matching quality evaluator: simple ratio [0,1] of paired entities.