Main MRPT website > C++ reference for MRPT 1.5.6
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 href="group__mrpt__pbmap__grp.html" >mrpt-pbmap</a>
13  */
14 
15 #ifndef __PlaneInferredInfo_H
16 #define __PlaneInferredInfo_H
17 
18 #include <mrpt/config.h>
19 #if MRPT_HAS_PCL
20 
21 #include <mrpt/utils/utils_defs.h>
22 
23 #include <mrpt/pbmap/PbMap.h>
24 #include <mrpt/pbmap/Plane.h>
25 
26 namespace mrpt {
27 namespace pbmap {
28 
29 
30  /** A class used to infer some semantic meaning to the planes of a PbMap. This knowledge
31  * is inferred through some heristics to determine if a plane correspond to the floor, or
32  * to a wall ("structural plane") or if instead it is a contextual plane (e.g. TV, worktop).
33  *
34  * \ingroup mrpt_pbmap_grp
35  */
37  {
38  public:
39 
40  // Context-Planes recognition functions:
41  ///*!Floor plane id*/
42  // int FloorPlaneMap;
43 
44  // Constructor
46  mPbMap(mPbM)
47  {
48  };
49 
50  /*!Check if the input plane fulfill some heuristics and so we can infer some knowledge, e.g. the plane correspond to the floor,
51  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
52  */
53  bool searchTheFloor(Eigen::Matrix4f &poseSensor, Plane &plane);
54 
55  // Functions to check if a plane has been fully seen. We use heuristics that are likely but not sure to give the correct result
56  /*!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
57  of the image, whose size is defined by "widthSampledImage" x "heightSampledImage"
58  */
59  bool isPlaneCutbyImage(std::vector<int> &planeIndices, unsigned &widthSampledImage, unsigned &heightSampledImage, unsigned threshold);
60 
61  /*!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
62  */
63  bool isSurroundingBackground(Plane &plane, pcl::PointCloud<pcl::PointXYZRGBA>::Ptr &frame, std::vector<int> &planeIndices, unsigned threshold);
64 
65  /*!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
66  subsequent observations.
67  */
68  void isFullExtent(Plane &plane, double newArea);
69 
70  private:
71 
73 
74  };
75 
76 } } // End of namespaces
77 
78 #endif
79 
80 #endif
A class used to store a planar feature (Plane for short).
Definition: Plane.h:48
A class used to infer some semantic meaning to the planes of a PbMap.
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:45



Page generated by Doxygen 1.8.14 for MRPT 1.5.6 Git: 4c65e8431 Tue Apr 24 08:18:17 2018 +0200 at lun oct 28 01:35:26 CET 2019