diff --git a/source/RobotAPI/libraries/armem_objects/CMakeLists.txt b/source/RobotAPI/libraries/armem_objects/CMakeLists.txt index 30a1f2ef68e625ce9b6ed210defb365e6b89ebf1..dd799ece020b5f868b1926464366218c3b5d0cc6 100644 --- a/source/RobotAPI/libraries/armem_objects/CMakeLists.txt +++ b/source/RobotAPI/libraries/armem_objects/CMakeLists.txt @@ -34,6 +34,9 @@ armarx_add_library( # server/articulated_object/SegmentAdapter.h server/articulated_object_instance/Visu.h + server/attachments/Segment.h + + client/articulated_object/Reader.cpp client/articulated_object/Writer.cpp @@ -55,6 +58,9 @@ armarx_add_library( # server/articulated_object/SegmentAdapter.cpp server/articulated_object_instance/Visu.cpp + server/attachments/Segment.cpp + + client/articulated_object/Reader.h client/articulated_object/Writer.h client/articulated_object/interfaces.h diff --git a/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp b/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp index bfbee9a102508a9461788ab94718ede2ffa38537..c2b3b77ab2da1909b55a93f98ecb513643721618 100644 --- a/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp +++ b/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp @@ -5,6 +5,7 @@ #include <ArmarXCore/core/time/TimeUtil.h> #include "ArmarXCore/core/logging/Logging.h" +#include "RobotAPI/libraries/armem/util/util.h" #include "RobotAPI/libraries/aron/common/aron_conversions.h" #include <RobotAPI/libraries/armem/core/aron_conversions.h> @@ -17,7 +18,7 @@ #include <RobotAPI/libraries/armem_objects/aron/Robot.aron.generated.h> #include <RobotAPI/libraries/armem_objects/aron_conversions.h> -#include "RobotAPI/libraries/armem_objects/articulated_object_conversions.h" +#include <RobotAPI/libraries/armem_objects/aron/Attachment.aron.generated.h> namespace armarx::armem::server::obj::attachments @@ -51,37 +52,32 @@ namespace armarx::armem::server::obj::attachments // this->visu = std::make_unique<Visu>(arviz, *this); } - - std::unordered_map<armem::MemoryID, ::armarx::armem::articulated_object::ArticulatedObjectDescription> Segment::getKnownObjectClasses() const + std::vector<armarx::armem::attachments::ObjectAttachment> Segment::getAttachments(const armem::Time& timestamp) const { - std::unordered_map<armem::MemoryID, ::armarx::armem::articulated_object::ArticulatedObjectDescription> objects; + std::vector<armarx::armem::attachments::ObjectAttachment> attachments; for (const auto& [_, provSeg] : iceMemory.workingMemory->getCoreSegment(p.coreClassSegmentName)) { for (const auto& [name, entity] : provSeg.entities()) { const auto& entityInstance = entity.getLatestSnapshot().getInstance(0); - const auto description = articulated_object::convertRobotDescription(entityInstance); + const auto attachment = tryCast<armarx::arondto::attachment::ObjectAttachment>(entityInstance); - if (not description) + if (not attachment) { - ARMARX_WARNING << "Could not convert entity instance to 'RobotDescription'"; + ARMARX_WARNING << "Could not convert entity instance to 'ObjectAttachment'"; continue; } - ARMARX_INFO << "Key is " << armem::MemoryID(entity.id()); - - objects.emplace(armem::MemoryID(entity.id()), *description); + ARMARX_DEBUG << "Key is " << armem::MemoryID(entity.id()); + attachments.push_back(attachment); } } - ARMARX_IMPORTANT << "Number of known articulated object classes: " << objects.size(); - - return objects; + return attachments; } - // void Segment::RemoteGui::setup(const Segment& data) // { // using namespace armarx::RemoteGui::Client; @@ -124,4 +120,4 @@ namespace armarx::armem::server::obj::attachments // } // } -} // namespace armarx::armem::server::obj::articulated_object_class +} // namespace armarx::armem::server::obj::attachments diff --git a/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.h b/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.h index 16faad0bbce889ba359bcd67109f52dd8a1baae0..e974a36a22cd0ff0f50a1f6f80af2dce0522bd87 100644 --- a/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.h +++ b/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.h @@ -34,6 +34,7 @@ #include "RobotAPI/components/ArViz/Client/Client.h" #include "RobotAPI/libraries/armem/core/MemoryID.h" +#include "RobotAPI/libraries/armem/core/Time.h" #include "RobotAPI/libraries/armem_objects/types.h" namespace armarx::armem @@ -55,8 +56,6 @@ namespace armarx::armem::server::obj::attachments class Visu; - - class Segment : public armarx::Logging { public: @@ -71,7 +70,7 @@ namespace armarx::armem::server::obj::attachments void init(); - std::vector<Attachments> getAttachments() const; + std::vector<armarx::armem::attachments::ObjectAttachment> getAttachments(const armem::Time& timestamp) const; private: @@ -82,7 +81,7 @@ namespace armarx::armem::server::obj::attachments struct Properties { - std::string coreClassSegmentName = "ArticulatedObjectClass"; + std::string coreClassSegmentName = "Attachments"; int64_t maxHistorySize = -1; }; Properties p; @@ -105,4 +104,4 @@ namespace armarx::armem::server::obj::attachments }; -} // namespace armarx::armem::server::obj::articulated_object_class +} // namespace armarx::armem::server::obj::attachments