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 36 of file PlaneInferredInfo.h.
#include <mrpt/pbmap/PlaneInferredInfo.h>
Public Member Functions | |
PlaneInferredInfo (PbMap &mPbM) | |
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 |
|
inline |
Floor plane id
Definition at line 45 of file PlaneInferredInfo.h.
! 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 188 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 77 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 98 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.
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 32 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 72 of file PlaneInferredInfo.h.
Page generated by Doxygen 1.8.14 for MRPT 1.5.7 Git: 5902e14cc Wed Apr 24 15:04:01 2019 +0200 at lun oct 28 01:39:17 CET 2019 |