MeVisLab Toolbox Reference
mlPCLCompare.h
Go to the documentation of this file.
1 // Copyright (c) Fraunhofer MEVIS, Germany. All rights reserved.
2 // **InsertLicense** code author="Wolf Spindler"
3 //----------------------------------------------------------------------------------
5 
12 //----------------------------------------------------------------------------------
13 #pragma once
14 
15 #include "MLPCLSupportSystem.h"
16 #include <mlPCLBaseObject.h>
17 #include <mlPCLModule.h>
18 
19 ML_START_NAMESPACE
20 
21 //----------------------------------------------------------------------------------
23 //----------------------------------------------------------------------------------
25 {
26 public:
30 
31 protected:
33  void activateAttachments() override;
34 
36  void handleNotification (Field* field) override;
37 
38 private:
40  void _postIfNecessary(const std::string &report);
41 
44  void _updateComparison(Field *field);
45 
48  void _compare();
49 
53  std::string _compareNonTyped(MLdouble epsilon,
54  const pcl::PCLHeader &header1,
55  const pcl::PCLHeader &header2,
56  MLPCLPointTypeEnumerators pointTypeEnum1,
57  MLPCLPointTypeEnumerators pointTypeEnum2,
58  uint32_t width1, uint32_t width2,
59  uint32_t height1, uint32_t height2,
60  bool isDense1, bool isDense2,
61  const Eigen::Vector4f &sorigin1,
62  const Eigen::Vector4f &sorigin2,
63  const Eigen::Quaternionf &sorientation1,
64  const Eigen::Quaternionf &sorientation2) const;
65 
70  template <typename POINT_CLOUD_TYPE1, typename POINT_CLOUD_TYPE2>
71  void _updateComparisonT(const POINT_CLOUD_TYPE1 &inputPointCloud1,
72  const POINT_CLOUD_TYPE2 &inputPointCloud2);
73 
76  template <typename POINT_CLOUD_TYPE0,
77  typename POINT_CLOUD_TYPE1>
78  std::string _comparePoints(const POINT_CLOUD_TYPE0 &inputPointCloud1,
79  const POINT_CLOUD_TYPE1 &inputPointCloud2,
80  double epsilon) const;
81 
83  StringField *_reportFld;
84 
87  BoolField *_postMLErrorFld;
88 
90  DoubleField *_epsilonFld;
91 
93  BoolField *_compareTypesFld;
95  BoolField *_compareNumPointsFld;
97  BoolField *_compareWidthsFld;
99  BoolField *_compareHeightFld;
101  BoolField *_compareHeaderSeqFld;
103  BoolField *_compareHeaderStampFld;
105  BoolField *_compareHeaderFrameIdFld;
107  BoolField *_compareIsDenseFld;
109  BoolField *_compareSensorOriginFld;
111  BoolField *_compareSensorOrientationFld;
113  BoolField *_comparePointsDataMemberFld;
115  BoolField *_comparePointsOtherMembersFld;
116 
120  BoolField *_testPassedFld;
121 
123  std::string _noDifferencesString;
124 
126  std::string _lastReport;
127 
130 
133 };
134 
135 ML_END_NAMESPACE
136 
Project global and OS specific declarations.
#define MLPCLSUPPORT_EXPORT
If included by external modules, exported symbols are declared as import symbols.
Field to encapsulate a boolean value.
Definition: mlFields.h:62
Field to encapsulate a double value.
Definition: mlFields.h:806
Base class for all fields used in the ML.
Definition: mlField.h:73
ML Module class to compare two PCL point clouds and optionally to post ML errors for testing purposes...
Definition: mlPCLCompare.h:25
void handleNotification(Field *field) override
Handles field changes of the field field.
PCLCompare()
Creates a PCLCompare module with two input connectors for two PCLBaseObjectPtr's pointing to point cl...
void activateAttachments() override
Updates internal state after changes of fields without field notifications.
ML Module base class for algorithms from the Point Cloud Library (PCL).
Definition: mlPCLModule.h:26
Field to encapsulate a string value.
Definition: mlFields.h:1000
#define ML_MODULE_CLASS_HEADER(className)
Like ML_CLASS_HEADER for the usage of derived classes from Module.
Base object containing pointers (as MLPCLObjectPtrsContainer) to objects from the Point Cloud Library...
ML Module base class for algorithms from the Point Cloud Library (PCL).
#define ML_PCL_TEST_INTERFACE(BASE_OBJECT_NAME)
Implements a dedicated interface for PCL related modules which is required in automatic tests.
double MLdouble
Definition: mlTypeDefs.h:223
MLPCLPointTypeEnumerators
Enumerator for the precompiled point types of the Point Cloud Library.
Definition: mlPCLTypes.h:35
TQuaternion< MLfloat > Quaternionf
A smaller Quaternion type as specialization from TQuaternion.
Definition: mlQuaternion.h:924
Tvec4< MLfloat > Vector4f
A vector with 4 components of type float.
Definition: mlVector4.h:156