51 while (!
task->isStopped())
61 std::this_thread::sleep_for(std::chrono::milliseconds(1));
73 template <
typename Po
intT>
77 typename pcl::PointCloud<PointT>::Ptr pc(
new pcl::PointCloud<PointT>());
84 ARMARX_INFO <<
"Visualizing point cloud from provider '" << providerName <<
"'";
102 new armarx::DebugDrawer24BitColoredPointCloud);
105 visualizations[providerName][visionx::eColoredPoints] = dd_pc_colors;
112 new armarx::DebugDrawer24BitColoredPointCloud);
115 visualizations[providerName][visionx::eLabeledPoints] = dd_pc_labels;
127 case visionx::ePoints:
131 case visionx::eColoredPoints:
135 case visionx::eLabeledPoints:
139 case visionx::eColoredLabeledPoints:
144 ARMARX_WARNING <<
"Could not visualize point cloud: Unknown format";
155 PointCloudProviderVisualizationInfoList
158 PointCloudProviderVisualizationInfoList result;
162 PointCloudProviderVisualizationInfo p;
173 PointContentType type,
175 const Ice::Current&
c)
188 <<
"Enabling visualization for " << providerName <<
" with type "
190 <<
", which has not been created yet (no point cloud reported so far?)";
197 PointCloudVisualizationInfo
199 const Ice::Current&
c)
223 (std::find(initiallyDisabled.begin(), initiallyDisabled.end(), providerName) ==
224 initiallyDisabled.end());
261 handler.second->stop();
288 std::string oldLayerName, currentLayerName, entityName;
297 oldLayerName =
getName() +
"_" + providerName +
"_" +
298 std::to_string((visualizationIteration + 1) % 2);
300 getName() +
"_" + providerName +
"_" + std::to_string(visualizationIteration % 2);
301 entityName =
"PointCloud_" + std::to_string(visualizationIteration % 2);
306 PointContentType visualizationType =
315 visualizationType = visionx::ePoints;
320 ARMARX_INFO <<
"Visualizing " << providerName <<
" as "
328 catch (
const std::exception& e)
331 <<
", but no point cloud arrived yet";
355 case visionx::ePoints:
358 case visionx::eColoredPoints:
361 case visionx::eLabeledPoints:
372 std::transform(text.begin(), text.end(), text.begin(), ::tolower);
375 return visionx::ePoints;
377 else if (text ==
"colors")
379 return visionx::eColoredPoints;
381 else if (text ==
"labels")
383 return visionx::eLabeledPoints;
385 return visionx::ePoints;
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
Property< PropertyType > getProperty(const std::string &name)
void offeringTopic(const std::string &name)
Registers a topic for retrival after initialization.
TopicProxyType getTopic(const std::string &name)
Returns a proxy of the specified topic.
std::string getName() const
Retrieve name of object.
int getPointClouds(const PointCloudPtrT &pointCloudPtr)
Poll PointClouds from provider.
MetaPointCloudFormatPtr getPointCloudFormat(std::string providerName)
void usingPointCloudProvider(std::string providerName)
Registers a delayed topic subscription and a delayed provider proxy retrieval which will be available...
bool waitForPointClouds(int milliseconds=1000)
Wait for new PointClouds.
PointCloudVisualization * component
void processPointCloudProvider()
armarx::RunningTask< PointCloudVisualizationHandler >::pointer_type task
PointCloudVisualizationHandler(PointCloudVisualization *component, const std::string &providerName)
~PointCloudVisualizationHandler()
Brief description of class PointCloudVisualization.
std::map< std::string, visionx::MetaPointCloudFormatPtr > pointCloudFormats
bool waitForNewPointCloud(const std::string &providerName)
std::map< std::string, PointCloudVisualizationCollection > visualizations
std::string pointCloudTypeToText(visionx::PointContentType type)
std::map< std::string, PointCloudVisualizationHandlerPtr > providerHandlers
PointCloudProviderVisualizationInfoList getAvailableProviders(const Ice::Current &c=Ice::emptyCurrent) override
std::vector< std::string > providerNames
std::map< std::string, int > debugDrawerVisualizationIteration
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
void enablePointCloudVisualization(const std::string &providerName, visionx::PointContentType type, bool enable, const Ice::Current &c=Ice::emptyCurrent) override
void onExitPointCloudProcessor() override
std::map< std::string, bool > enabledFlags
void updateVisualization(const std::string &providerName)
void onConnectPointCloudProcessor() override
armarx::DebugDrawerInterfacePrx debugDrawerTopicPrx
void onDisconnectPointCloudProcessor() override
visionx::PointContentType pointCloudTextToType(std::string text)
std::map< std::string, visionx::PointContentType > visualizationTypes
void processPointCloudProvider(const std::string &providerName)
void processPointCloud(const std::string &providerName)
void onInitPointCloudProcessor() override
std::mutex pointCloudMutex
PointCloudVisualizationInfo getCurrentPointCloudVisualizationInfo(const std::string &providerName, const Ice::Current &c=Ice::emptyCurrent) override
#define ARMARX_INFO
The normal logging level.
#define ARMARX_ERROR
The logging level for unexpected behaviour, that must be fixed.
#define ARMARX_WARNING
The logging level for unexpected behaviour, but not a serious problem.
std::vector< std::string > Split(const std::string &source, const std::string &splitBy, bool trimElements=false, bool removeEmptyElements=false)
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
std::shared_ptr< armarx::DebugDrawer24BitColoredPointCloud > DebugDrawerPointCloudPtr
std::shared_ptr< PointCloudVisualizationHandler > PointCloudVisualizationHandlerPtr