diff --git a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp index 7403e833107e392c8ffdecc4f0544500b13568de..deeec0ebb3405b9ac61bdbf9dbc76549f3fa4564 100644 --- a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp +++ b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp @@ -350,4 +350,12 @@ namespace armarx::armem::server::obj } } + void ObjectMemory::reloadKnownObjectClasses(const Ice::Current& current) + { + ARMARX_INFO << "Reloading object classes ..."; + classSegment.reloadObjectClassesByObjectFinder(); + ARMARX_INFO << "Reloaded object classes."; + } + + } diff --git a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h index 9a97c2374a3010c5003978bf8f0eecdecb4af610..ec78eb3fa7493a890541e915317ccd1689d9e15d 100644 --- a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h +++ b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h @@ -110,6 +110,8 @@ namespace armarx::armem::server::obj void createRemoteGuiTab(); void RemoteGui_update() override; + // Updates the list of known classes and generates a new snapshot in the memory + void reloadKnownObjectClasses(const Ice::Current& current) override; private: diff --git a/source/RobotAPI/interface/armem/server/ObjectMemoryInterface.ice b/source/RobotAPI/interface/armem/server/ObjectMemoryInterface.ice index fdae53a727de5b00ad65e4d9edacca8734ce26fe..fa9d74f160dc12e05fd6b1395d03b85b36384bea 100644 --- a/source/RobotAPI/interface/armem/server/ObjectMemoryInterface.ice +++ b/source/RobotAPI/interface/armem/server/ObjectMemoryInterface.ice @@ -54,6 +54,7 @@ module armarx , FamiliarObjectInstanceSegmentInterface { + void reloadKnownObjectClasses(); }; }; diff --git a/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp b/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp index a9b406a13c1fa22384705afa88777a5a9c504a9e..c25da26b18023deecb52a83191ee4d17af11c609 100644 --- a/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp +++ b/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp @@ -56,11 +56,26 @@ namespace armarx::armem::server::obj::clazz if (p.loadFromObjectsPackage) { - ARMARX_VERBOSE << "Loading objects from package"; + ARMARX_VERBOSE << "Loading objects from package `" << p.objectsPackage << "`."; loadByObjectFinder(p.objectsPackage); } } + void + Segment::reloadObjectClassesByObjectFinder() + { + if (p.loadFromObjectsPackage) + { + ARMARX_VERBOSE << "Loading objects from package `" << p.objectsPackage << "`."; + loadByObjectFinder(p.objectsPackage); + } + else + { + ARMARX_INFO << "Loading object from package in `reloadObjectClassesByObjectFinder()` " + "is disabled via property. No object classes will be reloaded!"; + } + } + void Segment::connect(viz::Client arviz) { diff --git a/source/RobotAPI/libraries/armem_objects/server/class/Segment.h b/source/RobotAPI/libraries/armem_objects/server/class/Segment.h index ba42e0072097beb531b1fedbef3f6344eb208cc4..b2da5cd1b44faf2382c3a31eba5fcf9c3486029a 100644 --- a/source/RobotAPI/libraries/armem_objects/server/class/Segment.h +++ b/source/RobotAPI/libraries/armem_objects/server/class/Segment.h @@ -38,6 +38,8 @@ namespace armarx::armem::server::obj::clazz void loadByObjectFinder(const ObjectFinder& finder); void loadByObjectFinder(); + void reloadObjectClassesByObjectFinder(); + void visualizeClass(const MemoryID& entityID, bool showAABB = true, bool showOOBB = true);