diff --git a/source/RobotAPI/interface/objectpose/object_pose_types.ice b/source/RobotAPI/interface/objectpose/object_pose_types.ice index 385da35e387d04b21aaea7e4845b073f9c977ee4..eb23d767e8c64892e9000eec890ef545ac8127d2 100644 --- a/source/RobotAPI/interface/objectpose/object_pose_types.ice +++ b/source/RobotAPI/interface/objectpose/object_pose_types.ice @@ -64,6 +64,8 @@ module armarx string providerName; /// Known or unknown object. ObjectTypeEnum objectType = AnyObject; + /// Whether object is static. Static objects don't decay. + bool isStatic = false; /// The object ID, i.e. dataset and name. armarx::data::ObjectID objectID; @@ -92,6 +94,8 @@ module armarx string providerName; /// Known or unknown object. ObjectTypeEnum objectType = AnyObject; + /// Whether object is static. Static objects don't decay. + bool isStatic = false; /// The object ID, i.e. dataset and name. armarx::data::ObjectID objectID; diff --git a/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.cpp b/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.cpp index 171da9c1a660b8257b2abc3f1b1f05ff6c0deb98..b37f432ef60adbca9307f61598bdfc5d05e18eea 100644 --- a/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.cpp +++ b/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.cpp @@ -29,6 +29,7 @@ namespace armarx::objpose { providerName = ice.providerName; objectType = ice.objectType; + isStatic = ice.isStatic; armarx::fromIce(ice.objectID, objectID); objectPoseRobot = ::armarx::fromIce(ice.objectPoseRobot); @@ -58,6 +59,7 @@ namespace armarx::objpose { ice.providerName = providerName; ice.objectType = objectType; + ice.isStatic = isStatic; armarx::toIce(ice.objectID, objectID); ice.objectPoseRobot = new Pose(objectPoseRobot); @@ -80,6 +82,7 @@ namespace armarx::objpose { providerName = provided.providerName; objectType = provided.objectType; + isStatic = provided.isStatic; armarx::fromIce(provided.objectID, objectID); objectPoseOriginal = ::armarx::fromIce(provided.objectPose); diff --git a/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.h b/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.h index 023d6351f3bcf2533188e0df197b7f8e61806388..754c1a1b178c9b88a600b466cb73c5c10a617c5a 100644 --- a/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.h +++ b/source/RobotAPI/libraries/ArmarXObjects/ObjectPose.h @@ -1,6 +1,9 @@ #pragma once #include <optional> +#include <map> +#include <vector> + #include <Eigen/Core> @@ -47,6 +50,8 @@ namespace armarx::objpose std::string providerName; /// Known or unknown object. ObjectTypeEnum objectType = AnyObject; + /// Whether object is static. Static objects don't decay. + bool isStatic = false; /// The object ID, i.e. dataset, class name and instance name. armarx::ObjectID objectID; @@ -90,6 +95,7 @@ namespace armarx::objpose void updateAttached(VirtualRobot::RobotPtr agent); }; using ObjectPoseSeq = std::vector<ObjectPose>; + using ObjectPoseMap = std::map<ObjectID, ObjectPose>; void fromIce(const data::ObjectAttachmentInfo& ice, ObjectAttachmentInfo& attachment); diff --git a/source/RobotAPI/libraries/ArmarXObjects/aron/ObjectPose.xml b/source/RobotAPI/libraries/ArmarXObjects/aron/ObjectPose.xml index e9701dc24c9a891449c9025a514322eaa615b52f..cc1a3a0467dba42f8bb87a89069b72d8e85e1189 100644 --- a/source/RobotAPI/libraries/ArmarXObjects/aron/ObjectPose.xml +++ b/source/RobotAPI/libraries/ArmarXObjects/aron/ObjectPose.xml @@ -38,6 +38,10 @@ ARON DTO of armarx::objpose::ObjectPose. <armarx::objpose::arondto::ObjectType /> </ObjectChild> + <ObjectChild key='isStatic'> + <bool /> + </ObjectChild> + <ObjectChild key='objectID'> <armarx::arondto::ObjectID /> </ObjectChild> diff --git a/source/RobotAPI/libraries/ArmarXObjects/aron_conversions/objpose.cpp b/source/RobotAPI/libraries/ArmarXObjects/aron_conversions/objpose.cpp index 77880a524910eba68ac33c76a463f8eda228eafe..26f07a947f311676af0a746156b2ac0fb255b417 100644 --- a/source/RobotAPI/libraries/ArmarXObjects/aron_conversions/objpose.cpp +++ b/source/RobotAPI/libraries/ArmarXObjects/aron_conversions/objpose.cpp @@ -61,8 +61,8 @@ void armarx::objpose::toAron(arondto::ObjectType& dto, const ObjectTypeEnum& bo) void armarx::objpose::fromAron(const arondto::ObjectPose& dto, ObjectPose& bo) { bo.providerName = dto.providerName; - fromAron(dto.objectType, bo.objectType); + bo.isStatic = dto.isStatic; fromAron(dto.objectID, bo.objectID); bo.objectPoseRobot = dto.objectPoseRobot; @@ -102,8 +102,8 @@ void armarx::objpose::fromAron(const arondto::ObjectPose& dto, ObjectPose& bo) void armarx::objpose::toAron(arondto::ObjectPose& dto, const ObjectPose& bo) { dto.providerName = bo.providerName; - toAron(dto.objectType, bo.objectType); + dto.isStatic = bo.isStatic; toAron(dto.objectID, bo.objectID); dto.objectPoseRobot = bo.objectPoseRobot;