PointCloudVisualization.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::PointCloudVisualization
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 <memory>
26 #include <mutex>
27 
30 
31 #include <RobotAPI/interface/visualization/DebugDrawerInterface.h>
32 
34 #include <VisionX/interface/components/PointCloudVisualization.h>
35 #include <VisionX/interface/core/DataTypes.h>
36 #include <VisionX/interface/core/PointCloudProviderInterface.h>
37 
38 namespace visionx
39 {
40  class PointCloudVisualization;
41 
42  // Wrapper object used to monitor one provider and call a parameterized callback in the main component
44  {
45  public:
47  const std::string& providerName);
49 
51  void stop();
52 
53  protected:
54  std::string providerName;
57  };
58 
59  using PointCloudVisualizationHandlerPtr = std::shared_ptr<PointCloudVisualizationHandler>;
60 
61  /**
62  * @class PointCloudVisualizationPropertyDefinitions
63  * @brief
64  */
66  {
67  public:
70  {
71  defineOptionalProperty<std::string>(
72  "PointCloudProviders", "", "Comma-separated list of point cloud provider names");
73  defineOptionalProperty<std::string>("InitiallyDisabledVisualizations",
74  "",
75  "Comma-separated list of point cloud provider "
76  "names, which should not be visualized by default");
77  defineOptionalProperty<std::string>(
78  "DebugDrawerTopicName", "DebugDrawerUpdates", "Name of the debug drawer topic");
79  defineOptionalProperty<std::string>(
80  "DefaultVisualizationType", "Plain", "Default point cloud visualization type.");
81  }
82  };
83 
84  using DebugDrawerPointCloudPtr = std::shared_ptr<armarx::DebugDrawer24BitColoredPointCloud>;
86  std::map<visionx::PointContentType, DebugDrawerPointCloudPtr>;
87 
88  /**
89  * @defgroup Component-PointCloudVisualization PointCloudVisualization
90  * @ingroup VisionX-Components
91  * A description of the component PointCloudVisualization.
92  *
93  * @class PointCloudVisualization
94  * @ingroup Component-PointCloudVisualization
95  * @brief Brief description of class PointCloudVisualization.
96  *
97  * Detailed description of class PointCloudVisualization.
98  */
100  virtual public PointCloudVisualizationInterface,
101  virtual public PointCloudProcessor
102  {
103  public:
104  /**
105  * @see armarx::ManagedIceObject::getDefaultName()
106  */
107  std::string
108  getDefaultName() const override
109  {
110  return "PointCloudVisualization";
111  }
112 
113  void processPointCloudProvider(const std::string& providerName);
114 
115  template <typename PointT>
116  void processPointCloud(const std::string& providerName);
117 
118  bool waitForNewPointCloud(const std::string& providerName);
119 
120  PointCloudProviderVisualizationInfoList
121  getAvailableProviders(const Ice::Current& c = Ice::emptyCurrent) override;
122  void enablePointCloudVisualization(const std::string& providerName,
123  visionx::PointContentType type,
124  bool enable,
125  const Ice::Current& c = Ice::emptyCurrent) override;
126  PointCloudVisualizationInfo
127  getCurrentPointCloudVisualizationInfo(const std::string& providerName,
128  const Ice::Current& c = Ice::emptyCurrent) override;
129 
130  protected:
131  /**
132  * @see visionx::PointCloudProcessor::onInitPointCloudProcessor()
133  */
134  void onInitPointCloudProcessor() override;
135 
136  /**
137  * @see visionx::PointCloudProcessor::onConnectPointCloudProcessor()
138  */
139  void onConnectPointCloudProcessor() override;
140 
141  /**
142  * @see visionx::PointCloudProcessor::onDisconnectPointCloudProcessor()
143  */
144  void onDisconnectPointCloudProcessor() override;
145 
146  /**
147  * @see visionx::PointCloudProcessor::onExitPointCloudProcessor()
148  */
149  void onExitPointCloudProcessor() override;
150 
151  /**
152  * @see visionx::PointCloudProcessor::process()
153  */
154  void process() override;
155 
156  /**
157  * @see PropertyUser::createPropertyDefinitions()
158  */
160 
161  protected:
162  void updateVisualization(const std::string& providerName);
163  void clearAllLayers();
164  std::string pointCloudTypeToText(visionx::PointContentType type);
165  visionx::PointContentType pointCloudTextToType(std::string text);
166 
167  protected:
169 
170  std::vector<std::string> providerNames;
171  std::map<std::string, visionx::MetaPointCloudFormatPtr> pointCloudFormats;
172  std::map<std::string, PointCloudVisualizationHandlerPtr> providerHandlers;
173  std::map<std::string, visionx::PointContentType> visualizationTypes;
174  std::map<std::string, bool> enabledFlags;
175 
176  std::map<std::string, PointCloudVisualizationCollection> visualizations;
177 
178  std::map<std::string, int> debugDrawerVisualizationIteration;
179 
180  std::mutex pointCloudMutex;
181  };
182 } // namespace visionx
visionx::PointCloudVisualization::visualizations
std::map< std::string, PointCloudVisualizationCollection > visualizations
Definition: PointCloudVisualization.h:176
visionx::PointCloudVisualization::processPointCloud
void processPointCloud(const std::string &providerName)
Definition: PointCloudVisualization.cpp:75
visionx
ArmarX headers.
Definition: OpenPoseStressTest.h:38
visionx::PointCloudVisualizationPropertyDefinitions::PointCloudVisualizationPropertyDefinitions
PointCloudVisualizationPropertyDefinitions(std::string prefix)
Definition: PointCloudVisualization.h:68
visionx::PointCloudVisualization::debugDrawerVisualizationIteration
std::map< std::string, int > debugDrawerVisualizationIteration
Definition: PointCloudVisualization.h:178
visionx::DebugDrawerPointCloudPtr
std::shared_ptr< armarx::DebugDrawer24BitColoredPointCloud > DebugDrawerPointCloudPtr
Definition: PointCloudVisualization.h:84
visionx::PointCloudVisualizationHandler::processPointCloudProvider
void processPointCloudProvider()
Definition: PointCloudVisualization.cpp:47
visionx::PointCloudVisualizationCollection
std::map< visionx::PointContentType, DebugDrawerPointCloudPtr > PointCloudVisualizationCollection
Definition: PointCloudVisualization.h:86
armarx::PropertyDefinitionContainer::prefix
std::string prefix
Prefix of the properties such as namespace, domain, component name, etc.
Definition: PropertyDefinitionContainer.h:345
visionx::PointCloudVisualization
Brief description of class PointCloudVisualization.
Definition: PointCloudVisualization.h:99
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:46
visionx::PointCloudVisualization::processPointCloudProvider
void processPointCloudProvider(const std::string &providerName)
Definition: PointCloudVisualization.cpp:123
visionx::PointCloudVisualizationHandler::providerName
std::string providerName
Definition: PointCloudVisualization.h:54
RunningTask.h
visionx::PointCloudVisualization::pointCloudTypeToText
std::string pointCloudTypeToText(visionx::PointContentType type)
Definition: PointCloudVisualization.cpp:351
visionx::PointCloudVisualization::onConnectPointCloudProcessor
void onConnectPointCloudProcessor() override
Definition: PointCloudVisualization.cpp:229
visionx::PointCloudVisualization::pointCloudMutex
std::mutex pointCloudMutex
Definition: PointCloudVisualization.h:180
visionx::PointCloudVisualizationHandler::PointCloudVisualizationHandler
PointCloudVisualizationHandler(PointCloudVisualization *component, const std::string &providerName)
Definition: PointCloudVisualization.cpp:31
visionx::PointCloudVisualizationHandler::task
armarx::RunningTask< PointCloudVisualizationHandler >::pointer_type task
Definition: PointCloudVisualization.h:56
visionx::PointCloudVisualization::getAvailableProviders
PointCloudProviderVisualizationInfoList getAvailableProviders(const Ice::Current &c=Ice::emptyCurrent) override
Definition: PointCloudVisualization.cpp:156
visionx::PointCloudProcessor
The PointCloudProcessor class provides an interface for access to PointCloudProviders via Ice and sha...
Definition: PointCloudProcessor.h:177
visionx::PointCloudVisualization::pointCloudTextToType
visionx::PointContentType pointCloudTextToType(std::string text)
Definition: PointCloudVisualization.cpp:370
visionx::PointCloudVisualization::enabledFlags
std::map< std::string, bool > enabledFlags
Definition: PointCloudVisualization.h:174
visionx::PointCloudVisualizationHandlerPtr
std::shared_ptr< PointCloudVisualizationHandler > PointCloudVisualizationHandlerPtr
Definition: PointCloudVisualization.h:59
visionx::PointCloudVisualizationHandler
Definition: PointCloudVisualization.h:43
visionx::PointCloudVisualization::updateVisualization
void updateVisualization(const std::string &providerName)
Definition: PointCloudVisualization.cpp:286
visionx::PointCloudVisualization::onExitPointCloudProcessor
void onExitPointCloudProcessor() override
Definition: PointCloudVisualization.cpp:268
visionx::PointCloudVisualization::clearAllLayers
void clearAllLayers()
Definition: PointCloudVisualization.cpp:341
PointCloudProcessor.h
visionx::PointCloudVisualizationPropertyDefinitions
Definition: PointCloudVisualization.h:65
visionx::PointCloudVisualizationHandler::~PointCloudVisualizationHandler
~PointCloudVisualizationHandler()
Definition: PointCloudVisualization.cpp:41
visionx::PointCloudVisualization::onInitPointCloudProcessor
void onInitPointCloudProcessor() override
Definition: PointCloudVisualization.cpp:206
visionx::PointCloudVisualization::enablePointCloudVisualization
void enablePointCloudVisualization(const std::string &providerName, visionx::PointContentType type, bool enable, const Ice::Current &c=Ice::emptyCurrent) override
Definition: PointCloudVisualization.cpp:172
visionx::PointCloudVisualizationHandler::stop
void stop()
Definition: PointCloudVisualization.cpp:68
Component.h
visionx::PointCloudVisualization::waitForNewPointCloud
bool waitForNewPointCloud(const std::string &providerName)
Definition: PointCloudVisualization.cpp:150
armarx::ComponentPropertyDefinitions
Default component property definition container.
Definition: Component.h:69
visionx::PointCloudVisualizationHandler::component
PointCloudVisualization * component
Definition: PointCloudVisualization.h:55
visionx::PointCloudVisualization::debugDrawerTopicPrx
armarx::DebugDrawerInterfacePrx debugDrawerTopicPrx
Definition: PointCloudVisualization.h:168
IceUtil::Handle
Definition: forward_declarations.h:30
visionx::PointCloudVisualization::getCurrentPointCloudVisualizationInfo
PointCloudVisualizationInfo getCurrentPointCloudVisualizationInfo(const std::string &providerName, const Ice::Current &c=Ice::emptyCurrent) override
Definition: PointCloudVisualization.cpp:198
IceInternal::ProxyHandle<::IceProxy::armarx::DebugDrawerInterface >
visionx::PointCloudVisualization::providerHandlers
std::map< std::string, PointCloudVisualizationHandlerPtr > providerHandlers
Definition: PointCloudVisualization.h:172
visionx::PointCloudVisualization::pointCloudFormats
std::map< std::string, visionx::MetaPointCloudFormatPtr > pointCloudFormats
Definition: PointCloudVisualization.h:171
armarx::ComponentPropertyDefinitions::ComponentPropertyDefinitions
ComponentPropertyDefinitions(std::string prefix, bool hasObjectNameParameter=true)
Definition: Component.cpp:35
visionx::PointCloudVisualization::providerNames
std::vector< std::string > providerNames
Definition: PointCloudVisualization.h:170
visionx::PointCloudVisualization::process
void process() override
Definition: PointCloudVisualization.cpp:273
visionx::PointCloudVisualization::createPropertyDefinitions
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
Definition: PointCloudVisualization.cpp:279
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
visionx::PointCloudVisualization::visualizationTypes
std::map< std::string, visionx::PointContentType > visualizationTypes
Definition: PointCloudVisualization.h:173
visionx::PointCloudVisualization::getDefaultName
std::string getDefaultName() const override
Definition: PointCloudVisualization.h:108
visionx::PointCloudVisualization::onDisconnectPointCloudProcessor
void onDisconnectPointCloudProcessor() override
Definition: PointCloudVisualization.cpp:257