53 while (!
task->isStopped())
63 std::this_thread::sleep_for(std::chrono::milliseconds(1));
75 template <
typename Po
intT>
79 typename pcl::PointCloud<PointT>::Ptr pc(
new pcl::PointCloud<PointT>());
86 ARMARX_INFO <<
"Visualizing point cloud from provider '" << providerName <<
"'";
104 new armarx::DebugDrawer24BitColoredPointCloud);
107 visualizations[providerName][visionx::eColoredPoints] = dd_pc_colors;
114 new armarx::DebugDrawer24BitColoredPointCloud);
117 visualizations[providerName][visionx::eLabeledPoints] = dd_pc_labels;
129 case visionx::ePoints:
133 case visionx::eColoredPoints:
137 case visionx::eLabeledPoints:
141 case visionx::eColoredLabeledPoints:
146 ARMARX_WARNING <<
"Could not visualize point cloud: Unknown format";
157 PointCloudProviderVisualizationInfoList
160 PointCloudProviderVisualizationInfoList result;
164 PointCloudProviderVisualizationInfo p;
175 PointContentType type,
177 const Ice::Current&
c)
190 <<
"Enabling visualization for " << providerName <<
" with type "
192 <<
", which has not been created yet (no point cloud reported so far?)";
199 PointCloudVisualizationInfo
201 const Ice::Current&
c)
225 (std::find(initiallyDisabled.begin(), initiallyDisabled.end(), providerName) ==
226 initiallyDisabled.end());
263 handler.second->stop();
290 std::string oldLayerName, currentLayerName, entityName;
299 oldLayerName =
getName() +
"_" + providerName +
"_" +
300 std::to_string((visualizationIteration + 1) % 2);
302 getName() +
"_" + providerName +
"_" + std::to_string(visualizationIteration % 2);
303 entityName =
"PointCloud_" + std::to_string(visualizationIteration % 2);
308 PointContentType visualizationType =
317 visualizationType = visionx::ePoints;
322 ARMARX_INFO <<
"Visualizing " << providerName <<
" as "
330 catch (
const std::exception& e)
333 <<
", but no point cloud arrived yet";
357 case visionx::ePoints:
360 case visionx::eColoredPoints:
363 case visionx::eLabeledPoints:
374 std::transform(text.begin(), text.end(), text.begin(), ::tolower);
377 return visionx::ePoints;
379 else if (text ==
"colors")
381 return visionx::eColoredPoints;
383 else if (text ==
"labels")
385 return visionx::eLabeledPoints;
387 return visionx::ePoints;
393 return "PointCloudVisualization";
#define ARMARX_REGISTER_COMPONENT_EXECUTABLE(ComponentT, applicationName)
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
static std::string GetDefaultName()
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::string getDefaultName() const override
Retrieve default name of component.
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