213 virtual public visionx::PrimitiveMapperInterface,
223 return "PrimitiveExtractor";
255 armarx::TimestampBasePtr
258 void setParameters(
const visionx::PrimitiveExtractorParameters& parameters,
259 const Ice::Current&
c = Ice::emptyCurrent)
override;
261 const Ice::Current&
c = Ice::emptyCurrent)
override;
263 visionx::PrimitiveExtractorParameters
264 getParameters(
const Ice::Current&
c = Ice::emptyCurrent)
override;
272 void fusePrimitives(std::vector<memoryx::EntityBasePtr>& newPrimitives,
long timestamp);
274 void extractPrimitives();
275 float getGraspPointInlierRatio(memoryx::EnvironmentalPrimitiveBasePtr leftPrimitive,
276 memoryx::EnvironmentalPrimitiveBasePtr rightPrimitive);
278 void pushPrimitivesToMemory(IceUtil::Int64 originalTimestamp);
279 void pushPrimitivesToMemoryAffordanceKit(IceUtil::Int64 originalTimestamp);
284 bool isConnectedtoExtractor;
285 double minSegmentSize;
286 double maxSegmentSize;
297 float euclideanClusteringTolerance;
298 float outlierThreshold;
299 float circleDistThres;
302 pcl::PointCloud<pcl::PointXYZL>::Ptr labeledCloudPtr;
303 pcl::PointCloud<pcl::PointXYZL>::Ptr inliersCloudPtr;
304 pcl::PointCloud<pcl::PointXYZL>::Ptr graspCloudPtr;
306 std::mutex mutexPushing;
307 std::mutex pointCloudMutex;
308 std::mutex enableMutex;
310 std::mutex timestampMutex;
311 long lastProcessedTimestamp;
313 bool isConnectedtoSegmenter;
315 std::string providerName;
317 memoryx::WorkingMemoryInterfacePrx workingMemory;
318 memoryx::EnvironmentalPrimitiveSegmentBasePrx environmentalPrimitiveSegment;
319 visionx::PointCloudSegmentationListenerPrx pointCloudSegmentationPrx;
321 std::string sourceFrameName;
322 std::string agentName;
329 bool enablePrimitiveFusion;
338 float spatialSamplingDistance;
339 int numOrientationalSamplings;