MRPT  1.9.9
mrpt::pbmap::PlaneInferredInfo Class Reference

Detailed Description

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

PbMapmPbMap
 

Constructor & Destructor Documentation

◆ PlaneInferredInfo()

mrpt::pbmap::PlaneInferredInfo::PlaneInferredInfo ( PbMap mPbM)
inline

Floor plane id

Definition at line 44 of file PlaneInferredInfo.h.

Member Function Documentation

◆ isFullExtent()

void PlaneInferredInfo::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

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().

◆ isPlaneCutbyImage()

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.

◆ isSurroundingBackground()

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 dir, mrpt::pbmap::getVector3fromPointXYZ(), mrpt::pbmap::Plane::outerPolygonPtr, mrpt::pbmap::Plane::polygonContourPtr, mrpt::pbmap::Plane::v3center, and mrpt::pbmap::Plane::v3normal.

◆ searchTheFloor()

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 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().

Member Data Documentation

◆ mPbMap

PbMap& mrpt::pbmap::PlaneInferredInfo::mPbMap
private

Definition at line 82 of file PlaneInferredInfo.h.




Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 7d5e6d718 Fri Aug 24 01:51:28 2018 +0200 at lun nov 2 08:35:50 CET 2020