MRPT  1.9.9
mrpt::pbmap::Plane Class Reference

## Detailed Description

A class used to store a planar feature (Plane for short).

It is described with geometric features representing the shape and relative location of the patch (area, normal vector, elongation, 3D-convex hull, etc.) and radiometric features (the most representative color).

Definition at line 43 of file Plane.h.

`#include <mrpt/pbmap/Plane.h>`

Inheritance diagram for mrpt::pbmap::Plane:

## Public Member Functions

Plane ()

void forcePtsLayOnPlane ()

void calcConvexHull (pcl::PointCloud< pcl::PointXYZRGBA >::Ptr &pointCloud, std::vector< size_t > &indices=DEFAULT_VECTOR)
! Calculate the plane's convex hull with the monotone chain algorithm. More...

void calcConvexHullandParams (pcl::PointCloud< pcl::PointXYZRGBA >::Ptr &pointCloud, std::vector< size_t > &indices=DEFAULT_VECTOR)

float compute2DPolygonalArea ()
Compute the area of a 2D planar polygon patch - using a given normal. More...

void computeMassCenterAndArea ()
Compute the patch's convex-hull area and mass center. More...

void calcElongationAndPpalDir ()

bool isPlaneNearby (Plane &plane, const float distThreshold)

bool isSamePlane (Plane &plane, const float &cosAngleThreshold, const float &distThreshold, const float &proxThreshold)

bool isSamePlane (Eigen::Matrix4f &Rt, Plane &plane_, const float &cosAngleThreshold, const float &distThreshold, const float &proxThreshold)

bool hasSimilarDominantColor (Plane &plane, const float colorThreshold)

void mergePlane (Plane &plane)

void mergePlane2 (Plane &plane)

void transform (Eigen::Matrix4f &Rt)

void calcMainColor ()

void calcMainColor2 ()

void calcPlaneHistH ()

virtual mxArraywriteToMatlab () const
Introduces a pure virtual method responsible for writing to a `mxArray` Matlab object, typically a MATLAB `struct` whose contents are documented in each derived class. More...

RTTI classes and functions for polymorphic hierarchies
mrpt::rtti::CObject::Ptr duplicateGetSmartPtr () const
Makes a deep copy of the object and returns a smart pointer to it. More...

## Public Attributes

unsigned id
! Parameters to allow the plane-based representation of the map by a graph More...

unsigned numObservations

unsigned semanticGroup

std::set< unsigned > nearbyPlanes

std::map< unsigned, unsigned > neighborPlanes

std::string label

std::string label_object

std::string label_context

Eigen::Vector3f v3center
! Geometric description More...

Eigen::Vector3f v3normal

float d

Eigen::Matrix4f information

float curvature

Eigen::Vector3f v3PpalDir

float elongation

float areaVoxels

float areaHull

bool bFullExtent

bool bFromStructure

unsigned nFramesAreaIsStable

Eigen::Vector3f v3colorNrgb

float dominantIntensity

bool bDominantColor

Eigen::Vector3f v3colorNrgbDev

Eigen::Vector3f v3colorC1C2C3

std::vector< float > hist_H

std::vector< double > prog_area

std::vector< double > prog_elongation

std::vector< Eigen::Vector3f > prog_C1C2C3

std::vector< Eigen::Vector3f > prog_Nrgb

std::vector< float > prog_intensity

std::vector< std::vector< float > > prog_hist_H

std::vector< int32_tinliers
! Convex Hull More...

pcl::PointCloud< pcl::PointXYZRGBA >::Ptr polygonContourPtr

pcl::PointCloud< pcl::PointXYZRGBA >::Ptr outerPolygonPtr

pcl::PointCloud< pcl::PointXYZRGBA >::Ptr planePointCloudPtr

## Protected Member Functions

CSerializable virtual methods
uint8_t serializeGetVersion () const override
*---------------------------------------------------———— More...

void serializeTo (mrpt::serialization::CArchive &out) const override
Pure virtual method for writing (serializing) to an abstract archive. More...

void serializeFrom (mrpt::serialization::CArchive &in, uint8_t serial_version) override
Pure virtual method for reading (deserializing) from an abstract archive. More...

CSerializable virtual methods
virtual void serializeTo (CSchemeArchiveBase &out) const
Virtual method for writing (serializing) to an abstract schema based archive. More...

virtual void serializeFrom (CSchemeArchiveBase &in)
Virtual method for reading (deserializing) from an abstract schema based archive. More...

## Private Member Functions

void getPlaneNrgb ()

void getPlaneC1C2C3 ()

## Private Attributes

std::vector< float > r

std::vector< float > g

std::vector< float > b

std::vector< float > intensity

std::vector< float > c1

std::vector< float > c2

std::vector< float > c3

## RTTI stuff

using Ptr = std::shared_ptr< Plane >

using ConstPtr = std::shared_ptr< const Plane >

using UniquePtr = std::unique_ptr< Plane >

using ConstUniquePtr = std::unique_ptr< const Plane >

static const mrpt::rtti::TRuntimeClassId runtimeClassId

static constexpr const char * className = "Plane"

static const mrpt::rtti::TRuntimeClassId_GetBaseClass ()

static constexpr auto getClassName ()

static const mrpt::rtti::TRuntimeClassIdGetRuntimeClassIdStatic ()

static std::shared_ptr< CObjectCreateObject ()

template<typename... Args>
static Ptr Create (Args &&... args)

template<typename Alloc , typename... Args>
static Ptr CreateAlloc (const Alloc &alloc, Args &&... args)

template<typename... Args>
static UniquePtr CreateUnique (Args &&... args)

virtual const mrpt::rtti::TRuntimeClassIdGetRuntimeClass () const override
Returns information about the class of an object in runtime. More...

virtual mrpt::rtti::CObjectclone () const override
Returns a deep copy (clone) of the object, indepently of its class. More...

## ◆ ConstPtr

 using mrpt::pbmap::Plane::ConstPtr = std::shared_ptr

Definition at line 45 of file Plane.h.

## ◆ ConstUniquePtr

 using mrpt::pbmap::Plane::ConstUniquePtr = std::unique_ptr

Definition at line 45 of file Plane.h.

## ◆ Ptr

 using mrpt::pbmap::Plane::Ptr = std::shared_ptr< Plane >

A type for the associated smart pointer

Definition at line 45 of file Plane.h.

## ◆ UniquePtr

 using mrpt::pbmap::Plane::UniquePtr = std::unique_ptr< Plane >

Definition at line 45 of file Plane.h.

## ◆ Plane()

 mrpt::pbmap::Plane::Plane ( )
inline

Definition at line 48 of file Plane.h.

## ◆ _GetBaseClass()

 static const mrpt::rtti::TRuntimeClassId* mrpt::pbmap::Plane::_GetBaseClass ( )
staticprotected

## ◆ calcConvexHull()

 void Plane::calcConvexHull ( pcl::PointCloud< pcl::PointXYZRGBA >::Ptr & pointCloud, std::vector< size_t > & indices = `DEFAULT_VECTOR` )

! Calculate the plane's convex hull with the monotone chain algorithm.

Definition at line 761 of file Plane.cpp.

References cross().

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ calcConvexHullandParams()

 void Plane::calcConvexHullandParams ( pcl::PointCloud< pcl::PointXYZRGBA >::Ptr & pointCloud, std::vector< size_t > & indices = `DEFAULT_VECTOR` )

Definition at line 829 of file Plane.cpp.

References cross(), and mrpt::math::norm().

Here is the call graph for this function:

## ◆ calcElongationAndPpalDir()

 void Plane::calcElongationAndPpalDir ( )

Calculate plane's elongation and principal direction

Definition at line 331 of file Plane.cpp.

Referenced by mrpt::pbmap::PbMapMaker::detectPlanesCloud().

Here is the caller graph for this function:

## ◆ calcMainColor()

 void Plane::calcMainColor ( )

Calculate plane's main color using "MeanShift" method

dominantIntensity = getHistogramMeanShift(intensity, 767.0, v3colorNrgbDev(2));
cout << "c1c2c3 in " << (getColorEnd - getColorStart)*1000000 << " us\n";

Definition at line 603 of file Plane.cpp.

References mrpt::pbmap::getHistogramMeanShift().

Referenced by mrpt::pbmap::PbMapMaker::detectPlanesCloud().

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ calcMainColor2()

 void Plane::calcMainColor2 ( )

Definition at line 532 of file Plane.cpp.

References concentrationThreshold, and mrpt::pbmap::getMultiDimMeanShift_color().

Here is the call graph for this function:

## ◆ calcPlaneHistH()

 void Plane::calcPlaneHistH ( )

Definition at line 406 of file Plane.cpp.

## ◆ clone()

 virtual mrpt::rtti::CObject* mrpt::pbmap::Plane::clone ( ) const
overridevirtual

Returns a deep copy (clone) of the object, indepently of its class.

Implements mrpt::rtti::CObject.

## ◆ compute2DPolygonalArea()

 float Plane::compute2DPolygonalArea ( )

Compute the area of a 2D planar polygon patch - using a given normal.

Compute the area of a 2D planar polygon patch.

Parameters
 polygonContourPtr the point cloud (planar) normal the plane normal

Definition at line 249 of file Plane.cpp.

Referenced by mrpt::pbmap::PbMapMaker::detectPlanesCloud().

Here is the caller graph for this function:

## ◆ computeMassCenterAndArea()

 void Plane::computeMassCenterAndArea ( )

Compute the patch's convex-hull area and mass center.

Definition at line 285 of file Plane.cpp.

Here is the caller graph for this function:

## ◆ Create()

template<typename... Args>
 static Ptr mrpt::pbmap::Plane::Create ( Args &&... args )
inlinestatic

Definition at line 45 of file Plane.h.

## ◆ CreateAlloc()

template<typename Alloc , typename... Args>
 static Ptr mrpt::pbmap::Plane::CreateAlloc ( const Alloc & alloc, Args &&... args )
inlinestatic

Definition at line 45 of file Plane.h.

## ◆ CreateObject()

 static std::shared_ptr mrpt::pbmap::Plane::CreateObject ( )
static

## ◆ CreateUnique()

template<typename... Args>
 static UniquePtr mrpt::pbmap::Plane::CreateUnique ( Args &&... args )
inlinestatic

Definition at line 45 of file Plane.h.

## ◆ duplicateGetSmartPtr()

 mrpt::rtti::CObject::Ptr CObject::duplicateGetSmartPtr ( ) const
inlineinherited

Makes a deep copy of the object and returns a smart pointer to it.

Definition at line 191 of file CObject.h.

References mrpt::rtti::CObject::clone().

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ forcePtsLayOnPlane()

 void Plane::forcePtsLayOnPlane ( )

Force the plane inliers to lay on the plane

Definition at line 220 of file Plane.cpp.

Referenced by mrpt::pbmap::PbMapMaker::mergePlanes().

Here is the caller graph for this function:

## ◆ getClassName()

 static constexpr auto mrpt::pbmap::Plane::getClassName ( )
inlinestatic

Definition at line 45 of file Plane.h.

## ◆ getPlaneC1C2C3()

 void Plane::getPlaneC1C2C3 ( )
private

Definition at line 380 of file Plane.cpp.

## ◆ getPlaneNrgb()

 void Plane::getPlaneNrgb ( )
private

Calculate plane's main color in normalized rgb space

Definition at line 349 of file Plane.cpp.

## ◆ GetRuntimeClass()

 virtual const mrpt::rtti::TRuntimeClassId* mrpt::pbmap::Plane::GetRuntimeClass ( ) const
overridevirtual

Returns information about the class of an object in runtime.

Reimplemented from mrpt::serialization::CSerializable.

## ◆ GetRuntimeClassIdStatic()

 static const mrpt::rtti::TRuntimeClassId& mrpt::pbmap::Plane::GetRuntimeClassIdStatic ( )
static

## ◆ hasSimilarDominantColor()

 bool Plane::hasSimilarDominantColor ( Plane & plane, const float colorThreshold )

Definition at line 1068 of file Plane.cpp.

References bDominantColor, and v3colorNrgb.

## ◆ isPlaneNearby()

 bool Plane::isPlaneNearby ( Plane & plane_nearby, const float distThreshold )

Returns true when the closest distance between the patches "this" and "plane" is under distThreshold.

Returns true when the closest distance between the patches "this" and the input "plane_nearby" is under distThreshold. This function is approximated

Definition at line 960 of file Plane.cpp.

Here is the call graph for this function:

## ◆ isSamePlane() [1/2]

 bool Plane::isSamePlane ( Plane & plane_nearby, const float & cosAngleThreshold, const float & parallelDistThres, const float & proxThreshold )

Returns true if the two input planes represent the same physical surface for some given angle and distance thresholds. If the planes are the same they are merged in this and the function returns true. Otherwise it returns false.

Definition at line 1011 of file Plane.cpp.

References v3center, and v3normal.

## ◆ isSamePlane() [2/2]

 bool Plane::isSamePlane ( Eigen::Matrix4f & Rt, Plane & plane_, const float & cosAngleThreshold, const float & parallelDistThres, const float & proxThreshold )

Check if the the input plane is the same than this plane for some given angle and distance thresholds. If the planes are the same they are merged in this and the function returns true. Otherwise it returns false.

if(fabs(dist_normal) > parallelDistThres ) // Avoid matching different parallel planes

Definition at line 1034 of file Plane.cpp.

References d, polygonContourPtr, v3center, and v3normal.

## ◆ mergePlane()

 void Plane::mergePlane ( Plane & same_plane_patch )

Merge the two input patches into "updatePlane". Recalculate center, normal vector, area, inlier points (filtered), convex hull, etc.

Merge the input "same_plane_patch" into "this". Recalculate center, normal vector, area, inlier points (filtered), convex hull, etc.

Definition at line 1082 of file Plane.cpp.

References inliers, planePointCloudPtr, polygonContourPtr, and v3normal.

## ◆ mergePlane2()

 void Plane::mergePlane2 ( Plane & plane )

Definition at line 1135 of file Plane.cpp.

References hist_H, inliers, planePointCloudPtr, polygonContourPtr, and v3normal.

## ◆ serializeFrom() [1/2]

 void Plane::serializeFrom ( mrpt::serialization::CArchive & in, uint8_t serial_version )
overrideprotectedvirtual

Pure virtual method for reading (deserializing) from an abstract archive.

Users don't call this method directly. Instead, use `stream >> object;`.

Parameters
 in The input binary stream where the object data must read from. version The version of the object stored in the stream: use this version number in your code to know how to read the incoming data.
Exceptions
 std::exception On any I/O error

in >> v3colorNrgbDev(0) >> v3colorNrgbDev(1) >> v3colorNrgbDev(2);

Implements mrpt::serialization::CSerializable.

Definition at line 172 of file Plane.cpp.

References MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION.

## ◆ serializeFrom() [2/2]

 virtual void mrpt::serialization::CSerializable::serializeFrom ( CSchemeArchiveBase & in )
inlineprotectedvirtualinherited

Virtual method for reading (deserializing) from an abstract schema based archive.

Definition at line 74 of file CSerializable.h.

Here is the call graph for this function:

## ◆ serializeGetVersion()

 uint8_t Plane::serializeGetVersion ( ) const
overrideprotectedvirtual

*---------------------------------------------------————

Implements mrpt::serialization::CSerializable.

Definition at line 136 of file Plane.cpp.

## ◆ serializeTo() [1/2]

 void Plane::serializeTo ( mrpt::serialization::CArchive & out ) const
overrideprotectedvirtual

Pure virtual method for writing (serializing) to an abstract archive.

Users don't call this method directly. Instead, use `stream << object;`.

Exceptions
 std::exception On any I/O error

out << v3colorNrgbDev(0) << v3colorNrgbDev(1) << v3colorNrgbDev(2);

Implements mrpt::serialization::CSerializable.

Definition at line 137 of file Plane.cpp.

## ◆ serializeTo() [2/2]

 virtual void mrpt::serialization::CSerializable::serializeTo ( CSchemeArchiveBase & out ) const
inlineprotectedvirtualinherited

Virtual method for writing (serializing) to an abstract schema based archive.

Definition at line 64 of file CSerializable.h.

Here is the call graph for this function:

## ◆ transform()

 void Plane::transform ( Eigen::Matrix4f & Rt )

Definition at line 1179 of file Plane.cpp.

## ◆ writeToMatlab()

 virtual mxArray* mrpt::serialization::CSerializable::writeToMatlab ( ) const
inlinevirtualinherited

Introduces a pure virtual method responsible for writing to a `mxArray` Matlab object, typically a MATLAB `struct` whose contents are documented in each derived class.

Returns
A new `mxArray` (caller is responsible of memory freeing) or nullptr is class does not support conversion to MATLAB.

Definition at line 90 of file CSerializable.h.

## ◆ areaHull

 float mrpt::pbmap::Plane::areaHull

## ◆ areaVoxels

 float mrpt::pbmap::Plane::areaVoxels

## ◆ b

 std::vector mrpt::pbmap::Plane::b
private

Definition at line 199 of file Plane.h.

## ◆ bDominantColor

 bool mrpt::pbmap::Plane::bDominantColor

Definition at line 158 of file Plane.h.

Referenced by hasSimilarDominantColor().

## ◆ bFromStructure

 bool mrpt::pbmap::Plane::bFromStructure

## ◆ bFullExtent

 bool mrpt::pbmap::Plane::bFullExtent

## ◆ c1

 std::vector mrpt::pbmap::Plane::c1
private

Calculate plane's main color in C1C2C3 representation

Definition at line 206 of file Plane.h.

## ◆ c2

 std::vector mrpt::pbmap::Plane::c2
private

Definition at line 207 of file Plane.h.

## ◆ c3

 std::vector mrpt::pbmap::Plane::c3
private

Definition at line 208 of file Plane.h.

## ◆ className

 constexpr const char* mrpt::pbmap::Plane::className = "Plane"
static

Definition at line 45 of file Plane.h.

## ◆ curvature

 float mrpt::pbmap::Plane::curvature

Definition at line 143 of file Plane.h.

## ◆ d

 float mrpt::pbmap::Plane::d

Definition at line 140 of file Plane.h.

## ◆ dominantIntensity

 float mrpt::pbmap::Plane::dominantIntensity

Definition at line 157 of file Plane.h.

Referenced by mrpt::pbmap::PbMapMaker::viz_cb().

## ◆ elongation

 float mrpt::pbmap::Plane::elongation

## ◆ g

 std::vector mrpt::pbmap::Plane::g
private

Definition at line 198 of file Plane.h.

## ◆ hist_H

 std::vector mrpt::pbmap::Plane::hist_H

## ◆ id

 unsigned mrpt::pbmap::Plane::id

! Parameters to allow the plane-based representation of the map by a graph

Definition at line 124 of file Plane.h.

## ◆ information

 Eigen::Matrix4f mrpt::pbmap::Plane::information

Definition at line 141 of file Plane.h.

## ◆ inliers

 std::vector mrpt::pbmap::Plane::inliers

! Convex Hull

Definition at line 178 of file Plane.h.

Referenced by mergePlane(), and mergePlane2().

## ◆ intensity

 std::vector mrpt::pbmap::Plane::intensity
private

Definition at line 200 of file Plane.h.

## ◆ label

 std::string mrpt::pbmap::Plane::label

Labels to store semantic attributes

Definition at line 131 of file Plane.h.

Referenced by mrpt::pbmap::PlaneInferredInfo::searchTheFloor().

## ◆ label_context

 std::string mrpt::pbmap::Plane::label_context

Definition at line 133 of file Plane.h.

## ◆ label_object

 std::string mrpt::pbmap::Plane::label_object

Definition at line 132 of file Plane.h.

## ◆ nearbyPlanes

 std::set mrpt::pbmap::Plane::nearbyPlanes

Definition at line 127 of file Plane.h.

## ◆ neighborPlanes

 std::map mrpt::pbmap::Plane::neighborPlanes

Definition at line 128 of file Plane.h.

Referenced by mrpt::pbmap::PbMapLocaliser::searchPlaneContext().

## ◆ nFramesAreaIsStable

 unsigned mrpt::pbmap::Plane::nFramesAreaIsStable

Definition at line 151 of file Plane.h.

Referenced by mrpt::pbmap::PlaneInferredInfo::isFullExtent().

## ◆ numObservations

 unsigned mrpt::pbmap::Plane::numObservations

Definition at line 125 of file Plane.h.

## ◆ outerPolygonPtr

 pcl::PointCloud::Ptr mrpt::pbmap::Plane::outerPolygonPtr

Definition at line 181 of file Plane.h.

## ◆ planePointCloudPtr

 pcl::PointCloud::Ptr mrpt::pbmap::Plane::planePointCloudPtr

Definition at line 183 of file Plane.h.

## ◆ polygonContourPtr

 pcl::PointCloud::Ptr mrpt::pbmap::Plane::polygonContourPtr

## ◆ prog_area

 std::vector mrpt::pbmap::Plane::prog_area

Definition at line 165 of file Plane.h.

## ◆ prog_C1C2C3

 std::vector mrpt::pbmap::Plane::prog_C1C2C3

Definition at line 169 of file Plane.h.

## ◆ prog_elongation

 std::vector mrpt::pbmap::Plane::prog_elongation

Definition at line 166 of file Plane.h.

## ◆ prog_hist_H

 std::vector > mrpt::pbmap::Plane::prog_hist_H

Definition at line 172 of file Plane.h.

## ◆ prog_intensity

 std::vector mrpt::pbmap::Plane::prog_intensity

Definition at line 171 of file Plane.h.

## ◆ prog_Nrgb

 std::vector mrpt::pbmap::Plane::prog_Nrgb

Definition at line 170 of file Plane.h.

## ◆ r

 std::vector mrpt::pbmap::Plane::r
private

Definition at line 197 of file Plane.h.

## ◆ runtimeClassId

 const mrpt::rtti::TRuntimeClassId mrpt::pbmap::Plane::runtimeClassId
staticprotected

Definition at line 45 of file Plane.h.

## ◆ semanticGroup

 unsigned mrpt::pbmap::Plane::semanticGroup

Definition at line 126 of file Plane.h.

## ◆ v3center

 Eigen::Vector3f mrpt::pbmap::Plane::v3center

## ◆ v3colorC1C2C3

 Eigen::Vector3f mrpt::pbmap::Plane::v3colorC1C2C3

Definition at line 161 of file Plane.h.

## ◆ v3colorNrgb

 Eigen::Vector3f mrpt::pbmap::Plane::v3colorNrgb

Definition at line 156 of file Plane.h.

## ◆ v3colorNrgbDev

 Eigen::Vector3f mrpt::pbmap::Plane::v3colorNrgbDev

Definition at line 159 of file Plane.h.

## ◆ v3PpalDir

 Eigen::Vector3f mrpt::pbmap::Plane::v3PpalDir

Definition at line 144 of file Plane.h.

Referenced by mrpt::pbmap::PbMap::MergeWith().

 Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 1de0e027c Sat Sep 14 16:15:22 2019 +0200 at sáb sep 14 16:20:14 CEST 2019