Go to the documentation of this file.
15 #include <mrpt/core/exceptions.h>
16 #include <mrpt/core/round.h>
17 #include <mrpt/version.h>
25 mrpt::system::COutputLogger::setLoggerName(
"Matcher_Point2Plane");
35 const mrpt::maps::CMetricMap& pcGlobalMap,
const mrpt::maps::CPointsMap& pcLocal,
36 const mrpt::poses::CPose3D& localPose,
MatchState& ms,
47 out.potential_pairings += pcLocal.size();
50 if (pcGlobalMap.isEmpty() || pcLocal.empty())
return;
56 if (!pcGlobalMap.boundingBox().intersection(
57 {tl.localMin, tl.localMax},
62 out.paired_pt2pl.reserve(
out.paired_pt2pl.size() + pcLocal.size() / 10);
68 const auto& lxs = pcLocal.getPointsBufferRef_x();
69 const auto& lys = pcLocal.getPointsBufferRef_y();
70 const auto& lzs = pcLocal.getPointsBufferRef_z();
72 for (
size_t i = 0; i < tl.
x_locals.size(); i++)
74 const size_t localIdx = tl.
idxs.has_value() ? (*tl.
idxs)[i] : i;
97 auto& p =
out.paired_pt2pl.emplace_back();
98 p.pt_local = {lxs[localIdx], lys[localIdx], lzs[localIdx]};
99 p.pl_global = np.
pairing->pl_global;
void initialize(const mrpt::containers::yaml ¶ms) override
void checkAllParametersAreRealized() const
double bounding_box_intersection_check_epsilon_
bool allowMatchAlreadyMatchedPoints_
float distance
Absolute value of plane-point distance, if a pairing is found:
#define DECLARE_PARAMETER_REQ(__yaml, __variable)
IMPLEMENTS_MRPT_OBJECT(FilterDecimateVoxelsQuadratic, mp2p_icp_filters::FilterBase, mp2p_icp_filters) using namespace mp2p_icp_filters
void initialize(const mrpt::containers::yaml ¶ms) override
uint64_t localPointsSampleSeed_
void implMatchOneLayer(const mrpt::maps::CMetricMap &pcGlobal, const mrpt::maps::CPointsMap &pcLocal, const mrpt::poses::CPose3D &localPose, MatchState &ms, const layer_name_t &globalName, const layer_name_t &localName, Pairings &out) const override
std::map< layer_name_t, DenseOrSparseBitField > point_layers
std::optional< point_plane_pair_t > pairing
Found pairing:
uint64_t maxLocalPointsPerLayer_
pointcloud_bitfield_t localPairedBitField
virtual NearestPlaneResult nn_search_pt2pl(const mrpt::math::TPoint3Df &point, const float max_search_distance) const =0
Calculate eigenvectors and eigenvalues from a set of points.
static TransformedLocalPointCloud transform_local_to_global(const mrpt::maps::CPointsMap &pcLocal, const mrpt::poses::CPose3D &localPose, const std::size_t maxLocalPoints=0, const uint64_t localPointsSampleSeed=0)
Pointcloud matcher: point to plane-fit of nearby points.
const mp2p_icp::NearestPlaneCapable * MapToNP(const mrpt::maps::CMetricMap &map, bool throwIfNotImplemented)
mp2p_icp
Author(s):
autogenerated on Mon May 26 2025 02:45:49