A class used to infer some semantic meaning to the planes of a PbMap.
This knowledge is inferred through some heristics to determine if a plane correspond to the floor, or to a wall ("structural plane") or if instead it is a contextual plane (e.g. TV, worktop).
Definition at line 38 of file PlaneInferredInfo.h.
#include <mrpt/pbmap/PlaneInferredInfo.h>
Public Member Functions | |
bool | searchTheFloor (Eigen::Matrix4f &poseSensor, Plane &plane) |
! Check if the input plane correpond to the floor. More... | |
bool | isPlaneCutbyImage (std::vector< int > &planeIndices, unsigned &widthSampledImage, unsigned &heightSampledImage, unsigned threshold) |
! Check if the input plane has points too close to the image limits. More... | |
bool | isSurroundingBackground (Plane &plane, pcl::PointCloud< pcl::PointXYZRGBA >::Ptr &frame, std::vector< int > &planeIndices, unsigned threshold) |
! Check if the surrounding points of the input plane in the input frame are behind the plane More... | |
void | isFullExtent (Plane &plane, double newArea) |
! Check if the area of input plane is stable and bounded (e.g < 1 m2) along the last keyframes that observe it More... | |
Private Attributes | |
PbMap & | mPbMap |
! Check if the area of input plane is stable and bounded (e.g < 1 m2) along the last keyframes that observe it
Check if the input plane represents completely a 3D planar surface. It uses some heuristics to mark a plane as "Complete" when its area does not grow after subsequent observations.
Definition at line 239 of file PlaneInferredInfo.cpp.
References mrpt::pbmap::Plane::areaVoxels, mrpt::pbmap::Plane::bFullExtent, and mrpt::pbmap::Plane::nFramesAreaIsStable.
Referenced by mrpt::pbmap::PbMapMaker::mergePlanes().
bool PlaneInferredInfo::isPlaneCutbyImage | ( | std::vector< int > & | planeIndices, |
unsigned & | widthSampledImage, | ||
unsigned & | heightSampledImage, | ||
unsigned | threshold | ||
) |
! Check if the input plane has points too close to the image limits.
Check if the input planar patch (after segmentation) is cut by the image. It checks that the inliers "planeIndices" fulfill a minimum distance "threshold" with the border of the image, whose size is defined by "widthSampledImage" x "heightSampledImage"
Assume squared cells downsampling Check that the convex hull vertex are 'dist_threshold' away from the image limits.
Definition at line 85 of file PlaneInferredInfo.cpp.
bool PlaneInferredInfo::isSurroundingBackground | ( | Plane & | plane, |
pcl::PointCloud< pcl::PointXYZRGBA >::Ptr & | frame, | ||
std::vector< int > & | planeIndices, | ||
unsigned | threshold | ||
) |
! Check if the surrounding points of the input plane in the input frame are behind the plane
Check if the input planar patch (after segmentation) is cut by the image. It checks that the nearer 3D points to the plane's convex hull are behind the plane
Definition at line 114 of file PlaneInferredInfo.cpp.
References mrpt::pbmap::getVector3fromPointXYZ(), mrpt::pbmap::Plane::outerPolygonPtr, mrpt::pbmap::Plane::polygonContourPtr, mrpt::pbmap::Plane::v3center, and mrpt::pbmap::Plane::v3normal.
bool PlaneInferredInfo::searchTheFloor | ( | Eigen::Matrix4f & | poseSensor, |
Plane & | plane | ||
) |
! Check if the input plane correpond to the floor.
Floor plane id*/ int FloorPlaneMap;
Constructor PlaneInferredInfo(PbMap& mPbM) : mPbMap(mPbM){};
/*!Check if the input plane fulfill some heuristics and so we can infer some knowledge, e.g. the plane correspond to the floor, a wall, the ceiling, in the world. It also makes use of the current sensor pose to verify some assumptions. // Modificar con un define esto ultimo
For that we assume that: a) the vertical axis of the sensor's reference frame and the gravity axis are simmilarly oriented, b) the sensor is placed between 0.5 and 2 m above the floor plane c) the input plane is big enough > 5m2. d) we are not checking this now Most of the map planes are above the floor plane
Definition at line 35 of file PlaneInferredInfo.cpp.
References mrpt::pbmap::Plane::areaVoxels, mrpt::pbmap::Plane::bFromStructure, mrpt::format(), mrpt::pbmap::Plane::id, mrpt::pbmap::Plane::label, mrpt::pbmap::Plane::v3center, and mrpt::pbmap::Plane::v3normal.
Referenced by mrpt::pbmap::PbMapMaker::detectPlanesCloud().
|
private |
Definition at line 84 of file PlaneInferredInfo.h.
Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST |