UpdateConsumer.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <
ArmarXCore/core/logging/Logging.h
>
4
5
#include "
RobotAPI/libraries/armem/client/Reader.h
"
6
#include "
RobotAPI/libraries/armem/client/Writer.h
"
7
#include "
RobotAPI/libraries/armem/core/MemoryID.h
"
8
#include <
RobotAPI/libraries/armem/client/MemoryNameSystem.h
>
9
#include <
RobotAPI/libraries/core/FramedPose.h
>
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>
14
#include <
VisionX/libraries/armem_human/types.h
>
15
16
namespace
VisionX::components::person_instance_updater
17
{
18
class
UpdateConsumer
19
{
20
public
:
21
UpdateConsumer
();
22
UpdateConsumer
(
int
maxFaceHeadDistance);
23
void
consumeFaceRecognitionUpdate
(
armarx::armem::human::FaceRecognition
faceRecognition,
24
armarx::armem::MemoryID
faceRecognitionID,
25
armarx::armem::client::MemoryNameSystem
mns);
26
void
consumePoseUpdate
(
armarx::armem::human::HumanPose
humanPose,
27
armarx::armem::MemoryID
poseID,
28
armarx::armem::client::MemoryNameSystem
mns);
29
void
consumeProfileUpdate
(
armarx::human::arondto::Profile
profile,
30
armarx::armem::MemoryID
profileID,
31
armarx::armem::client::MemoryNameSystem
mns);
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,
41
::
armarx::armem::human::FaceRecognition
& face);
42
43
static
void
44
removePoseFromPersonInstance(
const
armarx::armem::MemoryID
& personInstanceId,
45
armarx::armem::human::PersonInstance
oldData,
46
armarx::armem::client::Writer
& personInstanceWriter);
47
48
std::optional<armarx::armem::MemoryID>
49
getClosestPoseID(
Eigen::Matrix<float, 3, 1>
facePos,
50
armarx::armem::client::MemoryNameSystem
mns);
51
52
std::optional<armarx::armem::MemoryID>
53
getClosestFaceID(
armarx::FramedPosition
headPos,
54
armarx::armem::client::MemoryNameSystem
mns);
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,
66
armarx::armem::human::PersonInstance
oldInstance,
67
const
armarx::armem::MemoryID
& newPoseId,
68
const
armarx::armem::client::Writer
& instanceWriter);
69
70
void
createNewInstanceBasedOnPose(
const
armarx::armem::MemoryID
& poseId,
71
const
armarx::armem::human::HumanPose
& pose,
72
armarx::armem::client::MemoryNameSystem
& mns);
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
VisionX
components
person_instance_updater
UpdateConsumer.h
Generated by
1.8.17