UpdateConsumer.h
Go to the documentation of this file.
1 #pragma once
2 
4 
10 
11 #include <VisionX/libraries/armem_human/aron/FaceRecognition.aron.generated.h>
12 #include <VisionX/libraries/armem_human/aron/HumanPose.aron.generated.h>
13 #include <VisionX/libraries/armem_human/aron/Profile.aron.generated.h>
15 
17 {
19  {
20  public:
22  UpdateConsumer(int maxFaceHeadDistance);
24  armarx::armem::MemoryID faceRecognitionID,
30  armarx::armem::MemoryID profileID,
32 
33  private:
34  /**
35  * @brief Checks, whether a pose and face recognition instance can be plausibly matched.
36  *
37  * @return true when plausible.
38  * @return false when not plausible.
39  */
40  bool checkForPlausability(::armarx::armem::human::HumanPose& pose,
42 
43  static void
44  removePoseFromPersonInstance(const armarx::armem::MemoryID& personInstanceId,
46  armarx::armem::client::Writer& personInstanceWriter);
47 
48  std::optional<armarx::armem::MemoryID>
49  getClosestPoseID(Eigen::Matrix<float, 3, 1> facePos,
51 
52  std::optional<armarx::armem::MemoryID>
53  getClosestFaceID(armarx::FramedPosition headPos,
55 
56  static std::optional<armarx::armem::human::HumanPose>
57  humanPoseFromMemId(armarx::armem::MemoryID& memId,
58  armarx::armem::client::Reader& poseReader);
59 
60  static std::optional<armarx::armem::human::FaceRecognition>
61  faceRecognitionFromMemId(armarx::armem::MemoryID& memId,
62  armarx::armem::client::Reader& recognitionReader);
63 
64  static void
65  updateInstanceWithNewPoseId(const armarx::armem::MemoryID& instanceId,
67  const armarx::armem::MemoryID& newPoseId,
68  const armarx::armem::client::Writer& instanceWriter);
69 
70  void createNewInstanceBasedOnPose(const armarx::armem::MemoryID& poseId,
73 
74  static void addPoseToInstance(const armarx::armem::MemoryID& memId,
75  const armarx::armem::MemoryID& poseId,
76  const armarx::armem::client::Writer& personInstanceWriter,
77  armarx::armem::human::PersonInstance currentInstance);
78 
79  static std::optional<armarx::FramedPosition>
80  getHeadPos(armarx::armem::human::HumanPose pose);
81 
82  static float getDistance(Eigen::Matrix<float, 3, 1> facePos,
83  armarx::FramedPosition headPos);
84  float maxFaceHeadDistance;
85  };
86 } // namespace VisionX::components::person_instance_updater
VisionX::components::person_instance_updater::UpdateConsumer
Definition: UpdateConsumer.h:18
VisionX::components::person_instance_updater::UpdateConsumer::UpdateConsumer
UpdateConsumer()
Definition: UpdateConsumer.cpp:36
armarx::armem::client::Reader
Reads data from a memory server.
Definition: Reader.h:24
Reader.h
Writer.h
VisionX::components::person_instance_updater::UpdateConsumer::consumeFaceRecognitionUpdate
void consumeFaceRecognitionUpdate(armarx::armem::human::FaceRecognition faceRecognition, armarx::armem::MemoryID faceRecognitionID, armarx::armem::client::MemoryNameSystem mns)
Definition: UpdateConsumer.cpp:48
MemoryID.h
armarx::armem::human::FaceRecognition
Definition: types.h:59
VisionX::components::person_instance_updater
Definition: PersonInstanceUpdater.cpp:43
VisionX::components::person_instance_updater::UpdateConsumer::consumeProfileUpdate
void consumeProfileUpdate(armarx::human::arondto::Profile profile, armarx::armem::MemoryID profileID, armarx::armem::client::MemoryNameSystem mns)
Definition: UpdateConsumer.cpp:254
types.h
armarx::armem::MemoryID
A memory ID.
Definition: MemoryID.h:47
FramedPose.h
VisionX::components::person_instance_updater::UpdateConsumer::consumePoseUpdate
void consumePoseUpdate(armarx::armem::human::HumanPose humanPose, armarx::armem::MemoryID poseID, armarx::armem::client::MemoryNameSystem mns)
Checks all person instances, whether the pose can be matched Note: in all cases, if the pose-face can...
Definition: UpdateConsumer.cpp:143
armarx::FramedPosition
The FramedPosition class.
Definition: FramedPose.h:157
armarx::armem::human::PersonInstance
Definition: types.h:73
armarx::armem::server::human::profile::Profile
armarx::human::arondto::Profile Profile
Definition: Segment.cpp:43
armarx::armem::client::Writer
Helps a memory client sending data to a memory.
Definition: Writer.h:22
armarx::armem::human::HumanPose
Definition: types.h:30
armarx::armem::client::MemoryNameSystem
The memory name system (MNS) client.
Definition: MemoryNameSystem.h:73
Eigen::Matrix< float, 3, 1 >
MemoryNameSystem.h
Logging.h