Main MRPT website > C++ reference for MRPT 1.9.9
PlaneInferredInfo.h
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2017, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 /* Plane-based Map (PbMap) library
11  * Construction of plane-based maps and localization in it from RGBD Images.
12  * Writen by Eduardo Fernandez-Moral. See docs for <a
13  * href="group__mrpt__pbmap__grp.html" >mrpt-pbmap</a>
14  */
15 
16 #ifndef __PlaneInferredInfo_H
17 #define __PlaneInferredInfo_H
18 
19 #include <mrpt/config.h>
20 #if MRPT_HAS_PCL
21 
22 #include <mrpt/utils/utils_defs.h>
23 
24 #include <mrpt/pbmap/PbMap.h>
25 #include <mrpt/pbmap/Plane.h>
26 
27 namespace mrpt
28 {
29 namespace pbmap
30 {
31 /** A class used to infer some semantic meaning to the planes of a PbMap. This
32  * knowledge
33  * is inferred through some heristics to determine if a plane correspond to the
34  * floor, or
35  * to a wall ("structural plane") or if instead it is a contextual plane (e.g.
36  * TV, worktop).
37  *
38  * \ingroup mrpt_pbmap_grp
39  */
41 {
42  public:
43  // Context-Planes recognition functions:
44  ///*!Floor plane id*/
45  // int FloorPlaneMap;
46 
47  // Constructor
48  PlaneInferredInfo(PbMap& mPbM) : mPbMap(mPbM){};
49 
50  /*!Check if the input plane fulfill some heuristics and so we can infer some
51  knowledge, e.g. the plane correspond to the floor,
52  a wall, the ceiling, in the world. It also makes use of the current
53  sensor pose to verify some assumptions. // Modificar con un define esto
54  ultimo
55  */
56  bool searchTheFloor(Eigen::Matrix4f& poseSensor, Plane& plane);
57 
58  // Functions to check if a plane has been fully seen. We use heuristics that
59  // are likely but not sure to give the correct result
60  /*!Check if the input planar patch (after segmentation) is cut by the image.
61  It checks that the inliers "planeIndices" fulfill a minimum distance
62  "threshold" with the border
63  of the image, whose size is defined by "widthSampledImage" x
64  "heightSampledImage"
65  */
66  bool isPlaneCutbyImage(
67  std::vector<int>& planeIndices, unsigned& widthSampledImage,
68  unsigned& heightSampledImage, unsigned threshold);
69 
70  /*!Check if the input planar patch (after segmentation) is cut by the image.
71  * It checks that the nearer 3D points to the plane's convex hull are behind
72  * the plane
73  */
75  Plane& plane, pcl::PointCloud<pcl::PointXYZRGBA>::Ptr& frame,
76  std::vector<int>& planeIndices, unsigned threshold);
77 
78  /*!Check if the input plane represents completely a 3D planar surface. It
79  uses some heuristics to mark a plane as "Complete" when its area does not
80  grow after
81  subsequent observations.
82  */
83  void isFullExtent(Plane& plane, double newArea);
84 
85  private:
87 };
88 }
89 } // End of namespaces
90 
91 #endif
92 
93 #endif
A class used to store a planar feature (Plane for short).
Definition: Plane.h:48
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.
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 ...
A class used to infer some semantic meaning to the planes of a PbMap.
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 o...
bool searchTheFloor(Eigen::Matrix4f &poseSensor, Plane &plane)
! Check if the input plane correpond to the floor.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
A class used to store a Plane-based Map (PbMap).
Definition: pbmap/PbMap.h:49



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: ae4571287 Thu Nov 23 00:06:53 2017 +0100 at dom oct 27 23:51:55 CET 2019