PrimitiveExtractionParameterTuning.h
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @package VisionX::ArmarXObjects::PrimitiveExtractionParameterTuning
17  * @author Peter Kaiser ( peter dot kaiser at kit dot edu )
18  * @date 2017
19  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20  * GNU General Public License
21  */
22 
23 #pragma once
24 
25 #include <pcl/io/pcd_io.h>
26 #include <pcl/point_types.h>
27 
29 
31 #include <VisionX/interface/components/FakePointCloudProviderInterface.h>
32 #include <VisionX/interface/components/PointCloudSegmenter.h>
33 #include <VisionX/interface/components/PrimitiveMapper.h>
34 
35 namespace armarx
36 {
37  /**
38  * @class PrimitiveExtractionParameterTuningPropertyDefinitions
39  * @brief
40  */
43  {
44  public:
47  {
48  defineRequiredProperty<std::string>("SourcePointCloud",
49  "A XYZRGBA source truth point cloud");
50  defineRequiredProperty<std::string>("GroundTruthPointCloud",
51  "A XYZRGBL ground truth point cloud");
52  defineOptionalProperty<std::string>("PointCloudProviderName",
53  "FakePointCloudProvider",
54  "The name of the point cloud provider");
55  defineOptionalProperty<std::string>("PointCloudSegmenterName",
56  "PointCloudSegmenter",
57  "The name of the point cloud segmenter");
58  defineOptionalProperty<std::string>("PrimitiveExtractorName",
59  "PrimitiveExtractor",
60  "The name of the point cloud provider");
61  defineOptionalProperty<std::string>("PrimitivesProviderName",
62  "PrimitiveExtractorResult",
63  "The name of the primitive provider");
64  defineRequiredProperty<std::string>(
65  "ExportDirectory",
66  "The name of the directory to export point clouds and setup files");
67  }
68  };
69 
70  /**
71  * @defgroup Component-PrimitiveExtractionParameterTuning PrimitiveExtractionParameterTuning
72  * @ingroup VisionX-Components
73  * A description of the component PrimitiveExtractionParameterTuning.
74  *
75  * @class PrimitiveExtractionParameterTuning
76  * @ingroup Component-PrimitiveExtractionParameterTuning
77  * @brief Brief description of class PrimitiveExtractionParameterTuning.
78  *
79  * Detailed description of class PrimitiveExtractionParameterTuning.
80  */
82  {
83  public:
84  /**
85  * @see armarx::ManagedIceObject::getDefaultName()
86  */
87  std::string
88  getDefaultName() const override
89  {
90  return "PrimitiveExtractionParameterTuning";
91  }
92 
93  protected:
94  /**
95  * @see visionx::PointCloudProcessor::onInitPointCloudProcessor()
96  */
97  void onInitPointCloudProcessor() override;
98 
99  /**
100  * @see visionx::PointCloudProcessor::onConnectPointCloudProcessor()
101  */
102  void onConnectPointCloudProcessor() override;
103 
104  /**
105  * @see visionx::PointCloudProcessor::onDisconnectPointCloudProcessor()
106  */
107  void onDisconnectPointCloudProcessor() override;
108 
109  /**
110  * @see visionx::PointCloudProcessor::onExitPointCloudProcessor()
111  */
112  void onExitPointCloudProcessor() override;
113 
114  /**
115  * @see visionx::PointCloudProcessor::process()
116  */
117  void process() override;
118 
119  /**
120  * @see PropertyUser::createPropertyDefinitions()
121  */
123 
124  float compareLabeledPointClouds(const pcl::PointCloud<pcl::PointXYZL>::Ptr& labeled,
125  const pcl::PointCloud<pcl::PointXYZRGBL>::Ptr& reference);
127 
128  float sample(float current, const Eigen::Vector2f& bounds);
129  void exportBestSetup(const std::string& directory,
130  const pcl::PointCloud<pcl::PointXYZL>::Ptr& pointCloud,
131  const visionx::LccpParameters& lccp_prm,
132  const visionx::PrimitiveExtractorParameters& pe_prm);
133 
134  protected:
138  std::string exportDirectory;
139 
140  visionx::FakePointCloudProviderInterfacePrx pointCloudProvider;
141  visionx::PointCloudSegmenterInterfacePrx pointCloudSegmenter;
142  visionx::PrimitiveMapperInterfacePrx primitiveExtractor;
143 
144  pcl::PointCloud<pcl::PointXYZRGBL>::Ptr referencePointCloud;
145 
146  visionx::PrimitiveExtractorParameters extractionPrm;
147  visionx::LccpParameters segmentationPrm;
148 
149  visionx::PrimitiveExtractorParameters bestExtractionPrm;
150  visionx::LccpParameters bestSegmentationPrm;
151  float bestFitness;
152 
153  unsigned int iteration = 0;
154 
177  };
178 } // namespace armarx
armarx::PrimitiveExtractionParameterTuning::primitiveExtractor
visionx::PrimitiveMapperInterfacePrx primitiveExtractor
Definition: PrimitiveExtractionParameterTuning.h:142
armarx::PrimitiveExtractionParameterTuningPropertyDefinitions::PrimitiveExtractionParameterTuningPropertyDefinitions
PrimitiveExtractionParameterTuningPropertyDefinitions(std::string prefix)
Definition: PrimitiveExtractionParameterTuning.h:45
armarx::PrimitiveExtractionParameterTuning::bounds_primitives_voxelResolution
Eigen::Vector2f bounds_primitives_voxelResolution
Definition: PrimitiveExtractionParameterTuning.h:170
armarx::PrimitiveExtractionParameterTuning::compareLabeledPointClouds
float compareLabeledPointClouds(const pcl::PointCloud< pcl::PointXYZL >::Ptr &labeled, const pcl::PointCloud< pcl::PointXYZRGBL >::Ptr &reference)
Definition: PrimitiveExtractionParameterTuning.cpp:213
armarx::PrimitiveExtractionParameterTuning::onExitPointCloudProcessor
void onExitPointCloudProcessor() override
Definition: PrimitiveExtractionParameterTuning.cpp:160
armarx::PrimitiveExtractionParameterTuning::sourcePointCloudFilename
std::string sourcePointCloudFilename
Definition: PrimitiveExtractionParameterTuning.h:136
armarx::PrimitiveExtractionParameterTuning::bounds_primitives_concavityThreshold
Eigen::Vector2f bounds_primitives_concavityThreshold
Definition: PrimitiveExtractionParameterTuning.h:175
armarx::PrimitiveExtractionParameterTuningPropertyDefinitions
Definition: PrimitiveExtractionParameterTuning.h:41
armarx::PrimitiveExtractionParameterTuning::bestSegmentationPrm
visionx::LccpParameters bestSegmentationPrm
Definition: PrimitiveExtractionParameterTuning.h:150
armarx::PropertyDefinitionContainer::prefix
std::string prefix
Prefix of the properties such as namespace, domain, component name, etc.
Definition: PropertyDefinitionContainer.h:345
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_maxSegmentSize
Eigen::Vector2f bounds_segmentation_maxSegmentSize
Definition: PrimitiveExtractionParameterTuning.h:156
armarx::PrimitiveExtractionParameterTuning::bounds_primitives_spatialImportance
Eigen::Vector2f bounds_primitives_spatialImportance
Definition: PrimitiveExtractionParameterTuning.h:173
armarx::PrimitiveExtractionParameterTuning::onInitPointCloudProcessor
void onInitPointCloudProcessor() override
Definition: PrimitiveExtractionParameterTuning.cpp:32
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_planeDistanceThreshold
Eigen::Vector2f bounds_segmentation_planeDistanceThreshold
Definition: PrimitiveExtractionParameterTuning.h:160
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_minSegmentSize
Eigen::Vector2f bounds_segmentation_minSegmentSize
Definition: PrimitiveExtractionParameterTuning.h:155
armarx::PrimitiveExtractionParameterTuning::exportBestSetup
void exportBestSetup(const std::string &directory, const pcl::PointCloud< pcl::PointXYZL >::Ptr &pointCloud, const visionx::LccpParameters &lccp_prm, const visionx::PrimitiveExtractorParameters &pe_prm)
Definition: PrimitiveExtractionParameterTuning.cpp:376
armarx::PrimitiveExtractionParameterTuning::bounds_primitives_colorImportance
Eigen::Vector2f bounds_primitives_colorImportance
Definition: PrimitiveExtractionParameterTuning.h:172
armarx::PrimitiveExtractionParameterTuning::exportDirectory
std::string exportDirectory
Definition: PrimitiveExtractionParameterTuning.h:138
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_sphereMaxIterations
Eigen::Vector2f bounds_segmentation_sphereMaxIterations
Definition: PrimitiveExtractionParameterTuning.h:165
armarx::PrimitiveExtractionParameterTuning::process
void process() override
Definition: PrimitiveExtractionParameterTuning.cpp:165
armarx::PrimitiveExtractionParameterTuning::bounds_primitives_normalImportance
Eigen::Vector2f bounds_primitives_normalImportance
Definition: PrimitiveExtractionParameterTuning.h:174
visionx::PointCloudProcessor
The PointCloudProcessor class provides an interface for access to PointCloudProviders via Ice and sha...
Definition: PointCloudProcessor.h:177
armarx::PrimitiveExtractionParameterTuning::referencePointCloudFilename
std::string referencePointCloudFilename
Definition: PrimitiveExtractionParameterTuning.h:137
armarx::PrimitiveExtractionParameterTuning::pointCloudSegmenter
visionx::PointCloudSegmenterInterfacePrx pointCloudSegmenter
Definition: PrimitiveExtractionParameterTuning.h:141
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_outlierThreshold
Eigen::Vector2f bounds_segmentation_outlierThreshold
Definition: PrimitiveExtractionParameterTuning.h:158
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_euclideanClusteringTolerance
Eigen::Vector2f bounds_segmentation_euclideanClusteringTolerance
Definition: PrimitiveExtractionParameterTuning.h:157
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_sphereNormalDistance
Eigen::Vector2f bounds_segmentation_sphereNormalDistance
Definition: PrimitiveExtractionParameterTuning.h:167
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_cylinderRadiusLimit
Eigen::Vector2f bounds_segmentation_cylinderRadiusLimit
Definition: PrimitiveExtractionParameterTuning.h:164
PointCloudProcessor.h
armarx::PrimitiveExtractionParameterTuning::bounds_primitives_seedResolution
Eigen::Vector2f bounds_primitives_seedResolution
Definition: PrimitiveExtractionParameterTuning.h:171
armarx::PrimitiveExtractionParameterTuning::bounds_primitives_minSegmentSize
Eigen::Vector2f bounds_primitives_minSegmentSize
Definition: PrimitiveExtractionParameterTuning.h:169
armarx::PrimitiveExtractionParameterTuning::pointCloudProvider
visionx::FakePointCloudProviderInterfacePrx pointCloudProvider
Definition: PrimitiveExtractionParameterTuning.h:140
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_cylinderDistanceThreshold
Eigen::Vector2f bounds_segmentation_cylinderDistanceThreshold
Definition: PrimitiveExtractionParameterTuning.h:163
Component.h
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_sphereDistanceThreshold
Eigen::Vector2f bounds_segmentation_sphereDistanceThreshold
Definition: PrimitiveExtractionParameterTuning.h:166
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_planeNormalDistance
Eigen::Vector2f bounds_segmentation_planeNormalDistance
Definition: PrimitiveExtractionParameterTuning.h:161
armarx::PrimitiveExtractionParameterTuning::referencePointCloud
pcl::PointCloud< pcl::PointXYZRGBL >::Ptr referencePointCloud
Definition: PrimitiveExtractionParameterTuning.h:144
armarx::PrimitiveExtractionParameterTuning::bounds_primitives_smoothnessThreshold
Eigen::Vector2f bounds_primitives_smoothnessThreshold
Definition: PrimitiveExtractionParameterTuning.h:176
armarx::PrimitiveExtractionParameterTuning::generateNewParameterSet
void generateNewParameterSet()
Definition: PrimitiveExtractionParameterTuning.cpp:254
armarx::ComponentPropertyDefinitions
Default component property definition container.
Definition: Component.h:69
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_planeMaxIterations
Eigen::Vector2f bounds_segmentation_planeMaxIterations
Definition: PrimitiveExtractionParameterTuning.h:159
armarx::PrimitiveExtractionParameterTuning::iteration
unsigned int iteration
Definition: PrimitiveExtractionParameterTuning.h:153
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::PrimitiveExtractionParameterTuning::onDisconnectPointCloudProcessor
void onDisconnectPointCloudProcessor() override
Definition: PrimitiveExtractionParameterTuning.cpp:155
armarx::PrimitiveExtractionParameterTuning::sample
float sample(float current, const Eigen::Vector2f &bounds)
Definition: PrimitiveExtractionParameterTuning.cpp:353
armarx::PrimitiveExtractionParameterTuning::createPropertyDefinitions
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
Definition: PrimitiveExtractionParameterTuning.cpp:206
armarx::PrimitiveExtractionParameterTuning
Brief description of class PrimitiveExtractionParameterTuning.
Definition: PrimitiveExtractionParameterTuning.h:81
armarx::PrimitiveExtractionParameterTuning::primitivesProviderName
std::string primitivesProviderName
Definition: PrimitiveExtractionParameterTuning.h:135
armarx::PrimitiveExtractionParameterTuning::bestFitness
float bestFitness
Definition: PrimitiveExtractionParameterTuning.h:151
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_circularDistanceThreshold
Eigen::Vector2f bounds_segmentation_circularDistanceThreshold
Definition: PrimitiveExtractionParameterTuning.h:168
armarx::PrimitiveExtractionParameterTuning::onConnectPointCloudProcessor
void onConnectPointCloudProcessor() override
Definition: PrimitiveExtractionParameterTuning.cpp:119
armarx::PrimitiveExtractionParameterTuning::extractionPrm
visionx::PrimitiveExtractorParameters extractionPrm
Definition: PrimitiveExtractionParameterTuning.h:146
armarx::PrimitiveExtractionParameterTuning::segmentationPrm
visionx::LccpParameters segmentationPrm
Definition: PrimitiveExtractionParameterTuning.h:147
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::PrimitiveExtractionParameterTuning::bestExtractionPrm
visionx::PrimitiveExtractorParameters bestExtractionPrm
Definition: PrimitiveExtractionParameterTuning.h:149
armarx::PrimitiveExtractionParameterTuning::getDefaultName
std::string getDefaultName() const override
Definition: PrimitiveExtractionParameterTuning.h:88
armarx::PrimitiveExtractionParameterTuning::bounds_segmentation_cylinderMaxIterations
Eigen::Vector2f bounds_segmentation_cylinderMaxIterations
Definition: PrimitiveExtractionParameterTuning.h:162