14 #include <mrpt/core/exceptions.h> 28 const mrpt::poses::CPose3D& localPose,
const MatchContext& mc,
34 return impl_match(pcGlobal, pcLocal, localPose, mc, ms, out);
39 const metric_map_t& pcLocal,
const mrpt::poses::CPose3D& local_wrt_global,
41 const mrpt::optional_ref<MatchState>& userProvidedMS)
47 std::optional<MatchState> localMS;
49 if (userProvidedMS.has_value())
52 ms = &userProvidedMS.value().get();
57 localMS.emplace(pcGlobal, pcLocal);
58 ms = &localMS.value();
63 for (
const auto& matcher : matchers)
68 matcher->match(pcGlobal, pcLocal, local_wrt_global, mc, *ms, pc);
69 anyRun = anyRun || hasRun;
75 std::cerr <<
"[mp2p_icp::run_matchers] WARNING: No active matcher " 76 "actually ran on the two maps." Pointcloud matching generic base class.
std::vector< mp2p_icp::Matcher::Ptr > matcher_list_t
Generic container of pointcloud(s), extracted features and other maps.
uint32_t runUpToIteration
0: no limit
uint32_t icpIteration
The ICP iteration number we are in:
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
uint32_t runFromIteration
virtual bool impl_match(const metric_map_t &pcGlobal, const metric_map_t &pcLocal, const mrpt::poses::CPose3D &localPose, const MatchContext &mc, MatchState &ms, Pairings &out) const =0
virtual void push_back(const Pairings &o)
Pairings run_matchers(const matcher_list_t &matchers, const metric_map_t &pcGlobal, const metric_map_t &pcLocal, const mrpt::poses::CPose3D &local_wrt_global, const MatchContext &mc, const mrpt::optional_ref< MatchState > &userProvidedMS=std::nullopt)
IMPLEMENTS_VIRTUAL_MRPT_OBJECT(FilterBase, mrpt::rtti::CObject, mp2p_icp_filters) using namespace mp2p_icp_filters
virtual void initialize(const mrpt::containers::yaml ¶ms)