44#include <VisionX/libraries/armem_human/aron/FaceRecognition.aron.generated.h>
45#include <VisionX/libraries/armem_human/aron/HumanPose.aron.generated.h>
46#include <VisionX/libraries/armem_human/aron/Person.aron.generated.h>
62 def->optional(properties.updateConsumer.maxFaceHeadDistance,
"maxFaceHeadDistance");
75 this->updateConsumer =
76 std::make_unique<UpdateConsumer>(
memoryNameSystem(), properties.updateConsumer);
78 registerMemorySubscriptions();
85 for (
auto& handle : subscriptionHandles)
90 this->updateConsumer.reset();
99 PersonInstanceUpdater::registerMemorySubscriptions()
112 auto faceRecognitionCallback =
114 faceRecognitionReader](
const std::vector<armem::MemoryID>& updatedSnapshotIDs)
128 armarx::human::arondto::FaceRecognition>& instance)
132 fromAron(instance.data(), faceRecognition);
135 updateConsumer->consumeFaceRecognitionUpdate(faceRecognition,
141 subscriptionHandles.push_back(
143 faceRecognitionCallback));
152 armem::client::Reader poseReader =
156 [
this, poseReader](
const std::vector<armem::MemoryID>& updatedSnapshotIDs)
160 if (updateConsumer->isBusy())
162 ARMARX_DEBUG <<
"Update consumer is currently processing data. To prevent data "
163 "accumulation, we skip this update.";
169 armem::client::QueryResult result = poseReader.
queryMemoryIDs(updatedSnapshotIDs);
179 armarx::armem::human::HumanPose humanPose;
183 updateConsumer->consumePoseUpdate(humanPose, instance.
id());
188 subscriptionHandles.push_back(
197 armem::client::Reader profileReader =
200 auto profileCallback =
201 [
this, profileReader](
const std::vector<armem::MemoryID>& updatedSnapshotIDs)
204 armem::client::QueryResult result =
211 { updateConsumer->consumeProfileUpdate(instance.
data(), instance.
id()); });
215 subscriptionHandles.push_back(
void onInitComponent() override
void onDisconnectComponent() override
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
void onConnectComponent() override
static const std::string provider_name
static std::string GetDefaultName()
Get the component's default name.
void onExitComponent() override
std::string getDefaultName() const override
Default component property definition container.
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
const DataT & data() const
Reader useReader(const MemoryID &memoryID)
Use a memory server and get a reader for it.
Reads data from a memory server.
QueryResult queryMemoryIDs(const std::vector< MemoryID > &ids, armem::query::DataMode dataMode=armem::query::DataMode::WithData) const
Query a specific set of memory IDs.
MemoryNameSystem & memoryNameSystem()
void unsubscribe(SubscriptionHandle &subscriptionHandle)
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
#define ARMARX_DEBUG
The logging level for output that is only interesting while debugging.
base::EntityInstanceBase< AronDtoT, EntityInstanceMetadata > EntityInstanceBase
Entity instance with a concrete ARON DTO type as data.
const armem::MemoryID ProfileCoreSegmentID
const armem::MemoryID FaceRecognitionCoreSegmentID
const armem::MemoryID PoseCoreSegmentID
void fromAron(const arondto::PackagePath &dto, PackageFileLocation &bo)
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
bool forEachInstanceWithDataAs(EntityInstanceBaseAronDtoFunctionT &&func) const
Call func on each instance with its data converted to Aron DTO class.
wm::Memory memory
The slice of the memory that matched the query.