3#include <Eigen/Geometry>
7#include <ArmarXCore/interface/core/PackagePath.h>
25 template <
class DTOType,
class BOType>
27 fromAronOptional(
const std::optional<DTOType>& dtoOpt, std::optional<BOType>& boOpt)
29 if (dtoOpt.has_value())
41 template <
class DTOType,
class BOType>
43 toAronOptional(std::optional<DTOType>& dtoOpt,
const std::optional<BOType>& boOpt)
45 if (boOpt.has_value())
53 dtoOpt = std::nullopt;
80 fromAron(
const std::map<std::string, armarx::human::arondto::PoseKeypoint>&
dto,
81 std::map<std::string, armarx::armem::human::PoseKeypoint>& bo)
84 for (
const auto& [keypoint_name, keypoint] :
dto)
87 keypoint_bo.
label = keypoint_name;
89 bo[keypoint_name] = keypoint_bo;
94 toAron(std::map<std::string, armarx::human::arondto::PoseKeypoint>&
dto,
95 const std::map<std::string, armarx::armem::human::PoseKeypoint>& bo)
98 for (
const auto& [keypoint_name, keypoint] : bo)
100 armarx::human::arondto::PoseKeypoint keypoint_dto;
101 toAron(keypoint_dto, keypoint);
102 dto[keypoint_name] = keypoint_dto;
155 fromAron(
const std::map<std::string, armarx::human::arondto::PoseKeypoint2D>&
dto,
156 std::map<std::string, armarx::armem::human::PoseKeypoint2D>& bo)
159 for (
const auto& [keypoint_name, keypoint] :
dto)
162 keypoint_bo.
label = keypoint_name;
164 bo[keypoint_name] = keypoint_bo;
169 toAron(std::map<std::string, armarx::human::arondto::PoseKeypoint2D>&
dto,
170 const std::map<std::string, armarx::armem::human::PoseKeypoint2D>& bo)
173 for (
const auto& [keypoint_name, keypoint] : bo)
175 armarx::human::arondto::PoseKeypoint2D keypoint_dto;
176 toAron(keypoint_dto, keypoint);
177 dto[keypoint_name] = keypoint_dto;
205 if (
dto.profileID.has_value())
207 armarx::armem::arondto::MemoryID dtoID =
dto.profileID.value();
224 armarx::armem::arondto::MemoryID dtoID;
226 dto.profileID = dtoID;
253 if (
dto.filepath.has_value())
255 std::filesystem::path path(
dto.filepath.value().path);
257 armarx::data::PackagePath filePath = p.
serialize();
258 bo.
filepath = std::make_optional(filePath);
268 armarx::arondto::PackagePath filePath = armarx::arondto::PackagePath();
269 filePath.package = bo.
filepath.value().package;
270 filePath.path = bo.
filepath.value().path;
271 dto.filepath = filePath;
292 case armarx::human::arondto::Gender::UNKNOWN:
295 case armarx::human::arondto::Gender::DIVERSE:
298 case armarx::human::arondto::Gender::FEMALE:
301 case armarx::human::arondto::Gender::MALE:
313 dto = armarx::human::arondto::Gender::UNKNOWN;
316 dto = armarx::human::arondto::Gender::DIVERSE;
319 dto = armarx::human::arondto::Gender::FEMALE;
322 dto = armarx::human::arondto::Gender::MALE;
332 case armarx::human::arondto::Handedness::UNKNOWN:
335 case armarx::human::arondto::Handedness::BOTH:
338 case armarx::human::arondto::Handedness::LEFT:
341 case armarx::human::arondto::Handedness::RIGHT:
353 dto = armarx::human::arondto::Handedness::UNKNOWN;
356 dto = armarx::human::arondto::Handedness::BOTH;
359 dto = armarx::human::arondto::Handedness::LEFT;
362 dto = armarx::human::arondto::Handedness::RIGHT;
385 fromAronOptional(
dto.color, bo.
color);
386 fromAronOptional(
dto.food, bo.
food);
387 fromAronOptional(
dto.drink, bo.
drink);
389 fromAronOptional(
dto.music, bo.
music);
393 fromAronOptional(
dto.work, bo.
work);
402 toAronOptional(
dto.color, bo.
color);
403 toAronOptional(
dto.food, bo.
food);
404 toAronOptional(
dto.drink, bo.
drink);
406 toAronOptional(
dto.music, bo.
music);
410 toAronOptional(
dto.work, bo.
work);
465 std::vector<FaceImage> faceImages;
466 for (
const auto& image_dto :
dto.faceImages)
470 faceImages.push_back(image_bo);
475 fromAronOptional(
dto.rooms, bo.
rooms);
494 std::vector<armarx::human::arondto::FaceImage> faceImages;
497 armarx::human::arondto::FaceImage image_dto;
498 toAron(image_dto, image_bo);
499 faceImages.push_back(image_dto);
501 dto.faceImages = faceImages;
505 toAronOptional(
dto.rooms, bo.
rooms);
537 case armarx::human::arondto::ActivityType::UNKNOWN:
540 case armarx::human::arondto::ActivityType::WALKING:
543 case armarx::human::arondto::ActivityType::STANDING:
546 case armarx::human::arondto::ActivityType::SITTING:
549 case armarx::human::arondto::ActivityType::REACHING:
552 case armarx::human::arondto::ActivityType::GRASPING:
555 case armarx::human::arondto::ActivityType::POINTING:
558 case armarx::human::arondto::ActivityType::WAVING:
561 case armarx::human::arondto::ActivityType::TALKING:
564 case armarx::human::arondto::ActivityType::LISTENING:
567 case armarx::human::arondto::ActivityType::WORKING:
570 case armarx::human::arondto::ActivityType::EATING:
573 case armarx::human::arondto::ActivityType::DRINKING:
576 case armarx::human::arondto::ActivityType::SERVICE_REFUSAL:
579 case armarx::human::arondto::ActivityType::CUSTOM:
591 dto = armarx::human::arondto::ActivityType::UNKNOWN;
594 dto = armarx::human::arondto::ActivityType::WALKING;
597 dto = armarx::human::arondto::ActivityType::STANDING;
600 dto = armarx::human::arondto::ActivityType::SITTING;
603 dto = armarx::human::arondto::ActivityType::REACHING;
606 dto = armarx::human::arondto::ActivityType::GRASPING;
609 dto = armarx::human::arondto::ActivityType::POINTING;
612 dto = armarx::human::arondto::ActivityType::WAVING;
615 dto = armarx::human::arondto::ActivityType::TALKING;
618 dto = armarx::human::arondto::ActivityType::LISTENING;
621 dto = armarx::human::arondto::ActivityType::WORKING;
624 dto = armarx::human::arondto::ActivityType::EATING;
627 dto = armarx::human::arondto::ActivityType::DRINKING;
630 dto = armarx::human::arondto::ActivityType::SERVICE_REFUSAL;
633 dto = armarx::human::arondto::ActivityType::CUSTOM;
671 case armarx::human::arondto::InteractionType::UNKNOWN:
674 case armarx::human::arondto::InteractionType::HANDOVER:
677 case armarx::human::arondto::InteractionType::ANSWERING_QUESTION:
680 case armarx::human::arondto::InteractionType::SERVING_DRINK:
683 case armarx::human::arondto::InteractionType::SERVING_FOOD:
686 case armarx::human::arondto::InteractionType::GUIDING:
689 case armarx::human::arondto::InteractionType::ASSISTING:
692 case armarx::human::arondto::InteractionType::CONVERSATION:
695 case armarx::human::arondto::InteractionType::GREETING:
698 case armarx::human::arondto::InteractionType::FAREWELL:
701 case armarx::human::arondto::InteractionType::CUSTOM:
713 dto = armarx::human::arondto::InteractionType::UNKNOWN;
716 dto = armarx::human::arondto::InteractionType::HANDOVER;
719 dto = armarx::human::arondto::InteractionType::ANSWERING_QUESTION;
722 dto = armarx::human::arondto::InteractionType::SERVING_DRINK;
725 dto = armarx::human::arondto::InteractionType::SERVING_FOOD;
728 dto = armarx::human::arondto::InteractionType::GUIDING;
731 dto = armarx::human::arondto::InteractionType::ASSISTING;
734 dto = armarx::human::arondto::InteractionType::CONVERSATION;
737 dto = armarx::human::arondto::InteractionType::GREETING;
740 dto = armarx::human::arondto::InteractionType::FAREWELL;
743 dto = armarx::human::arondto::InteractionType::CUSTOM;
The FramedPosition class.
data::PackagePath serialize() const
void toAron(armarx::human::arondto::HumanPose &dto, const HumanPose &bo)
void fromAron(const armarx::human::arondto::HumanPose &dto, HumanPose &bo)
void fromAron(const arondto::MemoryID &dto, MemoryID &bo)
void toAron(arondto::MemoryID &dto, const MemoryID &bo)
void toAron(arondto::FramedPosition &dto, const armarx::FramedPosition &bo)
void fromAron(const arondto::FramedPosition &dto, armarx::FramedPosition &bo)
void fromAron(const T &dto, T &bo)
void toAron(T &dto, const T &bo)
Framework for converting ARON DTOs (Data Transfer Objects) to C++ BOs (Business Objects) and back.
void toAron(arondto::PackagePath &dto, const PackageFileLocation &bo)
void fromAron(const arondto::PackagePath &dto, PackageFileLocation &bo)
std::optional< bool > canGraspRight
std::optional< bool > canStand
std::optional< bool > isColorblind
std::optional< bool > canGraspLeft
std::optional< bool > isDeaf
std::optional< bool > canWalk
std::optional< bool > isBlind
std::optional< armarx::data::PackagePath > filepath
Eigen::Vector3f position3DGlobal
Eigen::Vector2i extents2D
std::optional< armarx::armem::MemoryID > profileID
Eigen::Vector2i position2D
FramedPosition framedPosition3D
armarx::core::time::DateTime startTime
armarx::core::time::DateTime endTime
std::optional< std::string > description
std::optional< PersonID > personID
ActivityType activityType
std::optional< std::string > humanTrackingId
std::string cameraFrameName
std::map< std::string, PoseKeypoint2D > keypoints
std::optional< std::string > humanTrackingId
std::string cameraFrameName
armarx::core::time::DateTime startTime
InteractionType interactionType
armarx::core::time::DateTime endTime
std::string interactionName
std::optional< std::string > description
std::optional< PersonID > personID
std::optional< std::string > robotName
armarx::armem::MemoryID profileID
Eigen::Isometry3f globalPose
armarx::armem::MemoryID faceRecognitionID
armarx::armem::MemoryID poseID
std::vector< FaceImage > faceImages
std::vector< std::string > medicalConditions
std::vector< std::string > previousInteractions
PhysicalData physiologicalBiometrics
armarx::aron::data::DictPtr attributes
std::vector< std::string > customNotes
std::optional< PersonalRooms > rooms
std::map< std::string, std::string > customAttributes
std::vector< std::string > roles
std::optional< double > weightInGrams
std::optional< armarx::core::time::DateTime > birthday
std::optional< double > heightInMillimeters
std::optional< armarx::FramedPosition > positionRobot
std::optional< armarx::FramedOrientation > orientationGlobal
armarx::FramedPosition positionCamera
std::optional< armarx::FramedOrientation > orientationCamera
std::optional< armarx::FramedPosition > positionGlobal
std::optional< armarx::FramedOrientation > orientationRobot
std::vector< std::string > disliked
std::vector< std::string > preferred
std::optional< Preference > color
std::optional< Preference > music
std::optional< Preference > hobbies
std::optional< Preference > food
std::optional< Preference > people
std::optional< Preference > work
std::optional< Preference > travel
std::optional< Preference > fashion
std::optional< Preference > drink
std::optional< Preference > communicationStyle
std::optional< Preference > valuesAndBeliefs
std::optional< Preference > technology