diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp index f293741f9ba9baa56853717f1984389ce30ad1d1..0085fd3fade1e29d046b22b62887196584332508 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp @@ -51,7 +51,8 @@ namespace armarx::armem::articulated_object bool ArticulatedObjectWriter::storeArticulatedObject(const VirtualRobot::RobotPtr& articulatedObject, - const armem::Time& timestamp) + const armem::Time& timestamp, + const bool isStatic) { ARMARX_CHECK_NOT_NULL(articulatedObject); @@ -59,6 +60,6 @@ namespace armarx::armem::articulated_object armarx::armem::articulated_object::ArticulatedObject armemArticulatedObject = convert(*articulatedObject, Time::Now()); - return store(armemArticulatedObject); + return store(armemArticulatedObject, isStatic); } } // namespace armarx::armem::articulated_object diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.h index ff39d70f049fa670e41157dbb79608b16d98b66c..edc401b6e0d55487f9446c1b5d0129cd623ea5c1 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.h +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.h @@ -14,8 +14,8 @@ namespace armarx::armem::articulated_object public: using Writer::Writer; - bool - storeArticulatedObject(const VirtualRobot::RobotPtr& articulatedObject, - const armem::Time& timestamp); + bool storeArticulatedObject(const VirtualRobot::RobotPtr& articulatedObject, + const armem::Time& timestamp, + bool isStatic = false); }; } // namespace armarx::armem::articulated_object diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp index 6ec49b479ccccca948d46230e900efb02da5c6ff..f5ae8c13b383662411bc4d33399cc87ec3048a79 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp @@ -15,11 +15,11 @@ #include <RobotAPI/libraries/armem/core/operations.h> #include <RobotAPI/libraries/armem_objects/aron/ObjectClass.aron.generated.h> #include <RobotAPI/libraries/armem_objects/aron/ObjectInstance.aron.generated.h> +#include <RobotAPI/libraries/armem_objects/client/articulated_object/aron_conversions.h> #include <RobotAPI/libraries/armem_robot_state/aron/Robot.aron.generated.h> #include <RobotAPI/libraries/armem_robot_state/aron/RobotDescription.aron.generated.h> #include <RobotAPI/libraries/armem_robot_state/aron_conversions.h> #include <RobotAPI/libraries/armem_robot_state/robot_conversions.h> -#include <RobotAPI/libraries/armem_objects/client/articulated_object/aron_conversions.h> #include "utils.h" @@ -191,7 +191,7 @@ namespace armarx::armem::articulated_object } bool - Writer::storeInstance(const ArticulatedObject& obj) const + Writer::storeInstance(const ArticulatedObject& obj, const bool isStatic) const { std::lock_guard g{memoryWriterMutex}; @@ -238,7 +238,8 @@ namespace armarx::armem::articulated_object armarx::ObjectID objectId(id.entityName); ARMARX_INFO << "Object ID: " << objectId; - ARMARX_CHECK_NOT_EMPTY(objectId.instanceName()) << "An object instance name must be provided!"; + ARMARX_CHECK_NOT_EMPTY(objectId.instanceName()) + << "An object instance name must be provided!"; armarx::arondto::ObjectID cs; cs.className = objectId.className(); @@ -249,6 +250,8 @@ namespace armarx::armem::articulated_object objectInstance.pose.providerName = properties.providerName; objectInstance.pose.attachmentValid = false; + objectInstance.pose.isStatic = isStatic; + update.instancesData = {objectInstance.toAron()}; update.referencedTime = timestamp; @@ -266,7 +269,7 @@ namespace armarx::armem::articulated_object } bool - Writer::store(const ArticulatedObject& obj) const + Writer::store(const ArticulatedObject& obj, const bool isStatic) const { const std::optional<armem::MemoryID> classId = storeOrGetClass(obj); @@ -277,7 +280,7 @@ namespace armarx::armem::articulated_object return false; } - return storeInstance(obj); + return storeInstance(obj, isStatic); } // TODO this is a duplicate diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h index dcc49a2b2dc9e9e32a8edd06efa2026e0bb326c6..568bec35dad164f665cd41f9067d92b16693e380 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h @@ -45,9 +45,9 @@ namespace armarx::armem::articulated_object void connect(armem::client::MemoryNameSystem& memoryNameSystem); - bool store(const ArticulatedObject& obj) const override; + bool store(const ArticulatedObject& obj, bool isStatic) const override; - bool storeInstance(const ArticulatedObject& obj) const; + bool storeInstance(const ArticulatedObject& obj, bool isStatic) const; std::optional<armem::MemoryID> storeClass(const ArticulatedObject& obj) const; // const std::string& getPropertyPrefix() const override; diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/interfaces.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/interfaces.h index 899cb1e79ac7ada7991e064b2a1ae1c20310749a..19043a9cc3d4c3409012d7111eee172edb4d579b 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/interfaces.h +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/interfaces.h @@ -30,7 +30,7 @@ namespace armarx::armem::articulated_object public: virtual ~WriterInterface() = default; - virtual bool store(const ArticulatedObject& obj) const = 0; + virtual bool store(const ArticulatedObject& obj, bool isStatic) const = 0; }; } // namespace armarx::armem::articulated_object