From 5eab55679d2263520c8c1bc334c8f4e81a207c23 Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Thu, 5 Aug 2021 16:41:24 +0200 Subject: [PATCH] Add handling of void forEach() functors, update includes, add tests --- .../ArticulatedObjectLocalizerExample.cpp | 2 +- .../ArticulatedObjectLocalizerExample.h | 2 +- .../ExampleMemoryClient.cpp | 6 +- .../ExampleMemoryClient/ExampleMemoryClient.h | 2 +- .../VirtualRobotReaderExampleClient.cpp | 2 +- .../VirtualRobotReaderExampleClient.h | 2 +- .../server/SkillsMemory/SkillsMemory.cpp | 2 +- .../ObjectPoseGuiWidgetController.cpp | 8 +- .../objectpose/ObjectPoseStorageInterface.ice | 6 +- .../RobotAPI/libraries/armem/client/Query.cpp | 2 +- .../RobotAPI/libraries/armem/client/Query.h | 4 +- .../libraries/armem/client/Reader.cpp | 38 ++++----- .../RobotAPI/libraries/armem/client/Reader.h | 3 +- .../RobotAPI/libraries/armem/client/Writer.h | 2 +- .../armem/client/query/selectors.cpp | 2 +- source/RobotAPI/libraries/armem/core.h | 8 +- .../armem/core/base/detail/iteration_mixins.h | 26 ++++++- .../armem/core/diskmemory/CoreSegment.h | 4 +- .../libraries/armem/core/diskmemory/Entity.h | 4 +- .../armem/core/diskmemory/EntityInstance.cpp | 6 +- .../armem/core/diskmemory/EntityInstance.h | 4 +- .../armem/core/diskmemory/EntitySnapshot.h | 4 +- .../libraries/armem/core/diskmemory/Memory.h | 4 +- .../armem/core/diskmemory/ProviderSegment.h | 4 +- .../armem/core/longtermmemory/CoreSegment.h | 4 +- .../armem/core/longtermmemory/Entity.h | 4 +- .../core/longtermmemory/EntitySnapshot.cpp | 4 +- .../core/longtermmemory/EntitySnapshot.h | 4 +- .../armem/core/longtermmemory/Memory.h | 4 +- .../core/longtermmemory/ProviderSegment.h | 4 +- .../libraries/armem/core/operations.cpp | 4 +- .../libraries/armem/core/operations.h | 10 +-- .../libraries/armem/server/ComponentPlugin.h | 2 +- .../libraries/armem/server/MemoryRemoteGui.h | 2 +- .../armem/server/MemoryToIceAdapter.cpp | 2 +- .../armem/server/MemoryToIceAdapter.h | 2 +- .../CoreSegmentQueryProcessor.cpp | 2 +- .../workingmemory/CoreSegmentQueryProcessor.h | 2 +- .../workingmemory/EntityQueryProcessor.cpp | 2 +- .../workingmemory/EntityQueryProcessor.h | 2 +- .../workingmemory/MemoryQueryProcessor.h | 2 +- .../ProviderSegmentQueryProcessor.cpp | 2 +- .../ProviderSegmentQueryProcessor.h | 2 +- .../libraries/armem/test/ArMemForEachTest.cpp | 19 ++++- .../armem/test/ArMemIceConversionsTest.cpp | 2 +- .../libraries/armem/test/ArMemLTMTest.cpp | 4 +- .../libraries/armem/test/ArMemMemoryTest.cpp | 2 +- .../armem/test/ArMemQueryBuilderTest.cpp | 7 +- source/RobotAPI/libraries/armem/util/util.h | 3 +- .../libraries/armem_gui/MemoryViewer.cpp | 2 +- .../armem_gui/instance/InstanceView.h | 2 +- .../armem_gui/instance/InstanceViewList.h | 2 +- .../libraries/armem_gui/memory/TreeWidget.h | 2 +- .../MotionDatabase/MDBMotions/Segment.cpp | 5 +- .../ArticulatedObjectReader.cpp | 2 +- .../client/articulated_object/Reader.cpp | 2 +- .../client/articulated_object/utils.h | 2 +- .../client/attachment/Reader.cpp | 2 +- .../server/attachments/Segment.cpp | 1 - .../armem_objects/server/class/FloorVis.cpp | 2 +- .../armem_objects/server/class/Segment.h | 2 +- .../armem_objects/server/instance/Segment.cpp | 77 +++++++------------ .../armem_objects/server/instance/Segment.h | 2 +- .../armem_robot/robot_conversions.cpp | 2 +- .../client/common/RobotReader.cpp | 63 +++++++-------- .../client/localization/TransformReader.cpp | 6 +- .../client/localization/TransformWriter.cpp | 6 +- .../common/localization/TransformHelper.cpp | 12 +-- .../common/localization/TransformHelper.h | 3 +- .../server/description/Segment.cpp | 1 - .../server/localization/Segment.cpp | 1 - .../server/proprioception/Segment.cpp | 1 - .../client/laser_scans/Reader.cpp | 12 ++- .../client/laser_scans/Writer.cpp | 2 +- .../client/occupancy_grid/Reader.cpp | 44 +++++------ .../client/occupancy_grid/Reader.h | 6 +- .../client/occupancy_grid/Writer.cpp | 5 +- .../client/occupancy_grid/Writer.h | 4 +- 78 files changed, 243 insertions(+), 274 deletions(-) diff --git a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp index 487c9c6fc..72e5b8f33 100644 --- a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp +++ b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp @@ -42,7 +42,7 @@ #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/client/query/query_fns.h> #include <RobotAPI/libraries/armem/core/Time.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> #include <RobotAPI/libraries/armem/server/MemoryRemoteGui.h> #include <RobotAPI/libraries/armem_objects/types.h> diff --git a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h index f85a804e9..b4cab3fc7 100644 --- a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h +++ b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h @@ -14,7 +14,7 @@ #include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h> #include <RobotAPI/interface/armem/server/MemoryInterface.h> #include <RobotAPI/libraries/armem/client/ComponentPlugin.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.h> #include <RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.h> diff --git a/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp b/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp index b0c45c182..036d27d2b 100644 --- a/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp +++ b/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp @@ -34,7 +34,7 @@ #include <RobotAPI/libraries/armem/client/query/query_fns.h> #include <RobotAPI/libraries/armem/core/error.h> #include <RobotAPI/libraries/armem/core/aron_conversions.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> #include <RobotAPI/components/armem/server/ExampleMemory/aron/ExampleData.aron.generated.h> @@ -263,14 +263,14 @@ namespace armarx ARMARX_IMPORTANT << "Getting entity via ID"; armem::wm::Memory& memory = qResult.memory; - ARMARX_CHECK_EQUAL(memory.size(), 1); + ARMARX_CHECK_GREATER_EQUAL(memory.size(), 1); const armem::wm::Entity* entity = memory.findEntity(entityID); ARMARX_CHECK_NOT_NULL(entity); ARMARX_CHECK_GREATER_EQUAL(entity->size(), 1); const armem::wm::EntitySnapshot& snapshot = entity->getLatestSnapshot(); - ARMARX_CHECK_EQUAL(snapshot.size(), 1); + ARMARX_CHECK_GREATER_EQUAL(snapshot.size(), 1); ARMARX_INFO << "Result: " << "\n- entity: \t" << entity->name() diff --git a/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.h b/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.h index 5680e316a..ca28ab86b 100644 --- a/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.h +++ b/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.h @@ -34,7 +34,7 @@ #include <RobotAPI/interface/armem/server/MemoryInterface.h> #include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h> #include <RobotAPI/libraries/armem/client/ComponentPlugin.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> namespace armarx diff --git a/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp b/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp index 6650e5737..8ab75efc7 100644 --- a/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp +++ b/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp @@ -23,7 +23,7 @@ #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/client/query/query_fns.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> #include <RobotAPI/libraries/armem/server/MemoryRemoteGui.h> #include <RobotAPI/libraries/armem/core/Time.h> diff --git a/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.h b/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.h index 4e1d01f55..33770ad54 100644 --- a/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.h +++ b/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.h @@ -33,7 +33,7 @@ #include <RobotAPI/interface/armem/server/MemoryInterface.h> #include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h> #include <RobotAPI/libraries/armem/client/ComponentPlugin.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h> diff --git a/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.cpp b/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.cpp index c0a9fd2f3..098fe6f1d 100644 --- a/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.cpp +++ b/source/RobotAPI/components/armem/server/SkillsMemory/SkillsMemory.cpp @@ -29,7 +29,7 @@ #include <ArmarXCore/core/logging/Logging.h> #include <RobotAPI/libraries/armem/core/error.h> -#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/server/MemoryRemoteGui.h> #include <RobotAPI/libraries/armem_skills/aron_conversions.h> diff --git a/source/RobotAPI/gui-plugins/ObjectPoseGui/ObjectPoseGuiWidgetController.cpp b/source/RobotAPI/gui-plugins/ObjectPoseGui/ObjectPoseGuiWidgetController.cpp index dffe7711d..adb7c77bd 100644 --- a/source/RobotAPI/gui-plugins/ObjectPoseGui/ObjectPoseGuiWidgetController.cpp +++ b/source/RobotAPI/gui-plugins/ObjectPoseGui/ObjectPoseGuiWidgetController.cpp @@ -201,7 +201,7 @@ namespace armarx { bool expand = item->childCount() == 0; - TreeWidgetBuilder builder(objectPoses); + TreeWidgetBuilder<objpose::ObjectPose> builder; builder.setNameFn([](const objpose::ObjectPose & pose) { return pose.objectID.str(); @@ -245,7 +245,7 @@ namespace armarx return true; }); - builder.updateTree(item, objectPoses); + builder.updateTreeWithContainer(item, objectPoses); if (expand) { @@ -299,7 +299,7 @@ namespace armarx { (void) dataset; - TreeWidgetBuilder builder(datasetData); + TreeWidgetBuilder<std::pair<std::string, std::string>> builder; builder.setCompareFn([](const std::pair<std::string, std::string>& lhs, QTreeWidgetItem * item) { auto rhs = std::make_pair(item->text(0).toStdString(), item->text(1).toStdString()); @@ -324,7 +324,7 @@ namespace armarx } return true; }); - builder.updateTree(datasetItem, datasetData); + builder.updateTreeWithContainer(datasetItem, datasetData); return true; }); diff --git a/source/RobotAPI/interface/objectpose/ObjectPoseStorageInterface.ice b/source/RobotAPI/interface/objectpose/ObjectPoseStorageInterface.ice index 3097f6c75..1dfe8b9f2 100644 --- a/source/RobotAPI/interface/objectpose/ObjectPoseStorageInterface.ice +++ b/source/RobotAPI/interface/objectpose/ObjectPoseStorageInterface.ice @@ -81,7 +81,7 @@ module armarx }; struct AttachObjectToRobotNodeOutput { - bool success; + bool success = false; data::ObjectAttachmentInfo attachment; }; @@ -99,7 +99,7 @@ module armarx struct DetachObjectFromRobotNodeOutput { /// Whether the object was attached before. - bool wasAttached; + bool wasAttached = false; }; struct DetachAllObjectsFromRobotNodesInput @@ -113,7 +113,7 @@ module armarx struct DetachAllObjectsFromRobotNodesOutput { /// Number of objects that have been detached. - int numDetached; + int numDetached = 0; }; struct AgentFrames diff --git a/source/RobotAPI/libraries/armem/client/Query.cpp b/source/RobotAPI/libraries/armem/client/Query.cpp index 1777839f2..52000cf3d 100644 --- a/source/RobotAPI/libraries/armem/client/Query.cpp +++ b/source/RobotAPI/libraries/armem/client/Query.cpp @@ -1,6 +1,6 @@ #include "Query.h" -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> namespace armarx::armem::client { diff --git a/source/RobotAPI/libraries/armem/client/Query.h b/source/RobotAPI/libraries/armem/client/Query.h index c6bb445bf..56b9caa79 100644 --- a/source/RobotAPI/libraries/armem/client/Query.h +++ b/source/RobotAPI/libraries/armem/client/Query.h @@ -3,10 +3,10 @@ // RobotAPI #include <RobotAPI/interface/armem/query.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> #include <RobotAPI/libraries/armem/core/SuccessHeader.h> #include <RobotAPI/libraries/armem/core/DataMode.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> namespace armarx::armem::client::query diff --git a/source/RobotAPI/libraries/armem/client/Reader.cpp b/source/RobotAPI/libraries/armem/client/Reader.cpp index a589512f1..1f0e2ee51 100644 --- a/source/RobotAPI/libraries/armem/client/Reader.cpp +++ b/source/RobotAPI/libraries/armem/client/Reader.cpp @@ -6,9 +6,8 @@ #include <RobotAPI/libraries/armem/core/MemoryID_operators.h> #include <RobotAPI/libraries/armem/core/longtermmemory/Memory.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> -#include <RobotAPI/libraries/armem/core/workingmemory/visitor.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> #include <RobotAPI/libraries/armem/util/util.h> #include "query/Builder.h" @@ -162,30 +161,25 @@ namespace armarx::armem::client } - struct FindLatestSnapshotVisitor : public wm::Visitor - { - std::optional<wm::EntitySnapshot> latest = std::nullopt; - - bool visitEnter(const wm::EntitySnapshot& snapshot) override; - }; - bool FindLatestSnapshotVisitor::visitEnter(const wm::EntitySnapshot& snapshot) - { - if (not latest.has_value() or snapshot.time() < latest->time()) - { - latest = snapshot; - } - return true; - } - - std::optional<wm::EntitySnapshot> Reader::getLatestSnapshotIn(const MemoryID& id, DataMode dataMode) const { client::QueryResult result = getLatestSnapshotsIn(id, dataMode); if (result.success) { - FindLatestSnapshotVisitor visitor; - visitor.applyTo(result.memory); - return visitor.latest; + std::optional<wm::EntitySnapshot> latest = std::nullopt; + result.memory.forEachEntity([&latest](const wm::Entity & entity) + { + if (not entity.empty()) + { + const wm::EntitySnapshot& snapshot = entity.getLatestSnapshot(); + if (not latest.has_value() or latest->time() < snapshot.time()) + { + latest = snapshot; + } + } + return true; + }); + return latest; } else { diff --git a/source/RobotAPI/libraries/armem/client/Reader.h b/source/RobotAPI/libraries/armem/client/Reader.h index 1d69491d2..e9ee1b69a 100644 --- a/source/RobotAPI/libraries/armem/client/Reader.h +++ b/source/RobotAPI/libraries/armem/client/Reader.h @@ -8,8 +8,7 @@ // RobotAPI #include <RobotAPI/interface/armem/server/ReadingMemoryInterface.h> #include <RobotAPI/interface/armem/server/StoringMemoryInterface.h> -#include <RobotAPI/libraries/armem/core/workingmemory/EntitySnapshot.h> -// #include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include "Query.h" diff --git a/source/RobotAPI/libraries/armem/client/Writer.h b/source/RobotAPI/libraries/armem/client/Writer.h index dd953fa36..92c7ce04a 100644 --- a/source/RobotAPI/libraries/armem/client/Writer.h +++ b/source/RobotAPI/libraries/armem/client/Writer.h @@ -2,7 +2,7 @@ #include <RobotAPI/interface/armem/server/WritingMemoryInterface.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> namespace armarx::armem::client diff --git a/source/RobotAPI/libraries/armem/client/query/selectors.cpp b/source/RobotAPI/libraries/armem/client/query/selectors.cpp index 98e79d06a..ecd3f8c5f 100644 --- a/source/RobotAPI/libraries/armem/client/query/selectors.cpp +++ b/source/RobotAPI/libraries/armem/client/query/selectors.cpp @@ -1,7 +1,7 @@ #include "selectors.h" #include "RobotAPI/libraries/armem/core/ice_conversions.h" -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> namespace dq = ::armarx::armem::query::data; diff --git a/source/RobotAPI/libraries/armem/core.h b/source/RobotAPI/libraries/armem/core.h index c8ddee31c..11abe789b 100644 --- a/source/RobotAPI/libraries/armem/core.h +++ b/source/RobotAPI/libraries/armem/core.h @@ -6,13 +6,7 @@ #include "core/MemoryID.h" #include "core/Time.h" -#include "core/workingmemory/Memory.h" -#include "core/workingmemory/CoreSegment.h" -#include "core/workingmemory/ProviderSegment.h" -#include "core/workingmemory/Entity.h" -#include "core/workingmemory/EntitySnapshot.h" -#include "core/workingmemory/EntityInstance.h" -#include "core/workingmemory/ice_conversions.h" +#include "core/wm.h" namespace armarx::armem diff --git a/source/RobotAPI/libraries/armem/core/base/detail/iteration_mixins.h b/source/RobotAPI/libraries/armem/core/base/detail/iteration_mixins.h index 9a6f7e53b..189c33799 100644 --- a/source/RobotAPI/libraries/armem/core/base/detail/iteration_mixins.h +++ b/source/RobotAPI/libraries/armem/core/base/detail/iteration_mixins.h @@ -15,13 +15,21 @@ namespace armarx::armem::base::detail { for (auto& child : container) { - if (!func(child)) + if constexpr(std::is_same_v<decltype(func(child)), bool>) { - return false; + if (!func(child)) + { + return false; + } + } + else + { + func(child); } } return true; } +#if 0 template <class ContainerT, class FunctionT> bool forEachChildSingle(const ContainerT& container, FunctionT&& func) { @@ -34,6 +42,7 @@ namespace armarx::armem::base::detail } return true; } +#endif // Pair-valued containers. template <class ContainerT, class FunctionT> @@ -41,13 +50,21 @@ namespace armarx::armem::base::detail { for (auto& [_, child] : container) { - if (!func(child)) + if constexpr(std::is_same_v<decltype(func(child)), bool>) { - return false; + if (!func(child)) + { + return false; + } + } + else + { + func(child); } } return true; } +#if 0 template <class ContainerT, class FunctionT> bool forEachChildPair(const ContainerT& container, FunctionT&& func) { @@ -60,6 +77,7 @@ namespace armarx::armem::base::detail } return true; } +#endif // see: https://en.cppreference.com/w/cpp/types/void_t diff --git a/source/RobotAPI/libraries/armem/core/diskmemory/CoreSegment.h b/source/RobotAPI/libraries/armem/core/diskmemory/CoreSegment.h index cccf81b00..2d8bd8f29 100644 --- a/source/RobotAPI/libraries/armem/core/diskmemory/CoreSegment.h +++ b/source/RobotAPI/libraries/armem/core/diskmemory/CoreSegment.h @@ -2,8 +2,8 @@ #include <filesystem> -#include "../base/CoreSegmentBase.h" -#include "../workingmemory/CoreSegment.h" +#include <RobotAPI/libraries/armem/core/base/CoreSegmentBase.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include "ProviderSegment.h" diff --git a/source/RobotAPI/libraries/armem/core/diskmemory/Entity.h b/source/RobotAPI/libraries/armem/core/diskmemory/Entity.h index 09b8ab78c..63011ceff 100644 --- a/source/RobotAPI/libraries/armem/core/diskmemory/Entity.h +++ b/source/RobotAPI/libraries/armem/core/diskmemory/Entity.h @@ -2,8 +2,8 @@ #include <filesystem> -#include "../base/EntityBase.h" -#include "../workingmemory/Entity.h" +#include <RobotAPI/libraries/armem/core/base/EntityBase.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include "EntitySnapshot.h" diff --git a/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp b/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp index e3bff18fa..e658ce8c2 100644 --- a/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp +++ b/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp @@ -1,8 +1,8 @@ #include "EntityInstance.h" -#include "../../core/error.h" -#include "../workingmemory/json_conversions.h" -#include "../workingmemory/entityInstance_conversions.h" +#include <RobotAPI/libraries/armem/core/error.h> +#include <RobotAPI/libraries/armem/core/wm/aron_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/json_conversions.h> #include <ArmarXCore/core/exceptions/local/ExpressionException.h> diff --git a/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.h b/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.h index c94ee5dcd..c56a944f2 100644 --- a/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.h +++ b/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.h @@ -2,8 +2,8 @@ #include <filesystem> -#include "../base/EntityInstanceBase.h" -#include "../workingmemory/EntityInstance.h" +#include <RobotAPI/libraries/armem/core/base/EntityInstanceBase.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/aron/core/navigator/type/forward_declarations.h> diff --git a/source/RobotAPI/libraries/armem/core/diskmemory/EntitySnapshot.h b/source/RobotAPI/libraries/armem/core/diskmemory/EntitySnapshot.h index 5005af5f7..9587e3be4 100644 --- a/source/RobotAPI/libraries/armem/core/diskmemory/EntitySnapshot.h +++ b/source/RobotAPI/libraries/armem/core/diskmemory/EntitySnapshot.h @@ -2,8 +2,8 @@ #include <filesystem> -#include "../base/EntitySnapshotBase.h" -#include "../workingmemory/EntitySnapshot.h" +#include <RobotAPI/libraries/armem/core/base/EntitySnapshotBase.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include "EntityInstance.h" diff --git a/source/RobotAPI/libraries/armem/core/diskmemory/Memory.h b/source/RobotAPI/libraries/armem/core/diskmemory/Memory.h index de2cae3c7..aaa1e460a 100644 --- a/source/RobotAPI/libraries/armem/core/diskmemory/Memory.h +++ b/source/RobotAPI/libraries/armem/core/diskmemory/Memory.h @@ -2,8 +2,8 @@ #include <filesystem> -#include "../base/MemoryBase.h" -#include "../workingmemory/Memory.h" +#include <RobotAPI/libraries/armem/core/base/MemoryBase.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include "CoreSegment.h" diff --git a/source/RobotAPI/libraries/armem/core/diskmemory/ProviderSegment.h b/source/RobotAPI/libraries/armem/core/diskmemory/ProviderSegment.h index eb7d300e0..0e866b08c 100644 --- a/source/RobotAPI/libraries/armem/core/diskmemory/ProviderSegment.h +++ b/source/RobotAPI/libraries/armem/core/diskmemory/ProviderSegment.h @@ -2,8 +2,8 @@ #include <filesystem> -#include "../base/ProviderSegmentBase.h" -#include "../workingmemory/ProviderSegment.h" +#include <RobotAPI/libraries/armem/core/base/ProviderSegmentBase.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include "Entity.h" diff --git a/source/RobotAPI/libraries/armem/core/longtermmemory/CoreSegment.h b/source/RobotAPI/libraries/armem/core/longtermmemory/CoreSegment.h index 797b9df1f..32f05ef2f 100644 --- a/source/RobotAPI/libraries/armem/core/longtermmemory/CoreSegment.h +++ b/source/RobotAPI/libraries/armem/core/longtermmemory/CoreSegment.h @@ -3,8 +3,8 @@ #include "ProviderSegment.h" #include "mongodb/MongoDBConnectionManager.h" -#include "../base/CoreSegmentBase.h" -#include "../workingmemory/CoreSegment.h" +#include <RobotAPI/libraries/armem/core/base/CoreSegmentBase.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> namespace armarx::armem::ltm diff --git a/source/RobotAPI/libraries/armem/core/longtermmemory/Entity.h b/source/RobotAPI/libraries/armem/core/longtermmemory/Entity.h index 79c783de9..e3feb413c 100644 --- a/source/RobotAPI/libraries/armem/core/longtermmemory/Entity.h +++ b/source/RobotAPI/libraries/armem/core/longtermmemory/Entity.h @@ -3,8 +3,8 @@ #include "EntitySnapshot.h" #include "mongodb/MongoDBConnectionManager.h" -#include "../base/EntityBase.h" -#include "../workingmemory/Entity.h" +#include <RobotAPI/libraries/armem/core/base/EntityBase.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> namespace armarx::armem::ltm diff --git a/source/RobotAPI/libraries/armem/core/longtermmemory/EntitySnapshot.cpp b/source/RobotAPI/libraries/armem/core/longtermmemory/EntitySnapshot.cpp index 1244abb46..443291c13 100644 --- a/source/RobotAPI/libraries/armem/core/longtermmemory/EntitySnapshot.cpp +++ b/source/RobotAPI/libraries/armem/core/longtermmemory/EntitySnapshot.cpp @@ -2,8 +2,8 @@ #include <ArmarXCore/core/exceptions/local/ExpressionException.h> -#include "../workingmemory/entityInstance_conversions.h" -#include "../workingmemory/json_conversions.h" +#include <RobotAPI/libraries/armem/core/wm/aron_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/json_conversions.h> #include "error.h" diff --git a/source/RobotAPI/libraries/armem/core/longtermmemory/EntitySnapshot.h b/source/RobotAPI/libraries/armem/core/longtermmemory/EntitySnapshot.h index b3d6211bd..3029f8a7c 100644 --- a/source/RobotAPI/libraries/armem/core/longtermmemory/EntitySnapshot.h +++ b/source/RobotAPI/libraries/armem/core/longtermmemory/EntitySnapshot.h @@ -3,8 +3,8 @@ #include "EntityInstance.h" #include "mongodb/MongoDBConnectionManager.h" -#include "../base/EntitySnapshotBase.h" -#include "../workingmemory/EntitySnapshot.h" +#include <RobotAPI/libraries/armem/core/base/EntitySnapshotBase.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/aron/core/navigator/type/forward_declarations.h> diff --git a/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.h b/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.h index 18b655ef5..dbeb2a538 100644 --- a/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.h +++ b/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.h @@ -3,8 +3,8 @@ #include "CoreSegment.h" #include "mongodb/MongoDBConnectionManager.h" -#include "../base/MemoryBase.h" -#include "../workingmemory/Memory.h" +#include <RobotAPI/libraries/armem/core/base/MemoryBase.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <ArmarXCore/core/application/properties/forward_declarations.h> diff --git a/source/RobotAPI/libraries/armem/core/longtermmemory/ProviderSegment.h b/source/RobotAPI/libraries/armem/core/longtermmemory/ProviderSegment.h index ed48ff071..bf1d5e3a9 100644 --- a/source/RobotAPI/libraries/armem/core/longtermmemory/ProviderSegment.h +++ b/source/RobotAPI/libraries/armem/core/longtermmemory/ProviderSegment.h @@ -3,8 +3,8 @@ #include "Entity.h" #include "mongodb/MongoDBConnectionManager.h" -#include "../base/ProviderSegmentBase.h" -#include "../workingmemory/ProviderSegment.h" +#include <RobotAPI/libraries/armem/core/base/ProviderSegmentBase.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> namespace armarx::armem::ltm diff --git a/source/RobotAPI/libraries/armem/core/operations.cpp b/source/RobotAPI/libraries/armem/core/operations.cpp index e43995730..b9ebedd31 100644 --- a/source/RobotAPI/libraries/armem/core/operations.cpp +++ b/source/RobotAPI/libraries/armem/core/operations.cpp @@ -1,7 +1,5 @@ #include "operations.h" -#include "workingmemory/EntityInstance.h" - namespace armarx { @@ -10,7 +8,7 @@ namespace armarx armem::getAronData(const wm::EntitySnapshot& snapshot) { std::vector<aron::datanavigator::DictNavigatorPtr> result; - snapshot.forEachChild([&result](const wm::EntityInstance& instance) + snapshot.forEachChild([&result](const wm::EntityInstance & instance) { result.push_back(instance.data()); return true; diff --git a/source/RobotAPI/libraries/armem/core/operations.h b/source/RobotAPI/libraries/armem/core/operations.h index 9fc479dcf..3b0182e32 100644 --- a/source/RobotAPI/libraries/armem/core/operations.h +++ b/source/RobotAPI/libraries/armem/core/operations.h @@ -1,14 +1,6 @@ #pragma once -#if 0 // Not need at the moment. -#include "workingmemory/Memory.h" -#include "workingmemory/CoreSegment.h" -#include "workingmemory/ProviderSegment.h" -#include "workingmemory/Entity.h" -#include "workingmemory/EntityInstance.h" -#endif - -#include "workingmemory/EntitySnapshot.h" +#include "wm/memory_definitions.h" /* diff --git a/source/RobotAPI/libraries/armem/server/ComponentPlugin.h b/source/RobotAPI/libraries/armem/server/ComponentPlugin.h index 06ba31f7a..50951ab82 100644 --- a/source/RobotAPI/libraries/armem/server/ComponentPlugin.h +++ b/source/RobotAPI/libraries/armem/server/ComponentPlugin.h @@ -8,7 +8,7 @@ #include <RobotAPI/interface/armem/client/MemoryListenerInterface.h> #include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/core/longtermmemory/Memory.h> #include <RobotAPI/libraries/armem/client/MemoryNameSystemComponentPlugin.h> diff --git a/source/RobotAPI/libraries/armem/server/MemoryRemoteGui.h b/source/RobotAPI/libraries/armem/server/MemoryRemoteGui.h index f4a7fad95..0c363e075 100644 --- a/source/RobotAPI/libraries/armem/server/MemoryRemoteGui.h +++ b/source/RobotAPI/libraries/armem/server/MemoryRemoteGui.h @@ -2,7 +2,7 @@ #include <ArmarXGui/libraries/RemoteGui/Client/Widgets.h> -#include "../core/workingmemory/Memory.h" +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> namespace armarx::armem::server diff --git a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp index 60f134edc..b6c14f5a1 100644 --- a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp +++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp @@ -5,7 +5,7 @@ #include "query_proc/longtermmemory/MemoryQueryProcessor.h" #include <RobotAPI/libraries/armem/core/error.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> #include <RobotAPI/libraries/aron/core/Exception.h> #include <ArmarXCore/core/logging/Logging.h> diff --git a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h index f4b4b4c94..cc6657459 100644 --- a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h +++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h @@ -3,7 +3,7 @@ #include <RobotAPI/interface/armem/server/MemoryInterface.h> #include <RobotAPI/interface/armem/client/MemoryListenerInterface.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/core/longtermmemory/Memory.h> #include <RobotAPI/libraries/armem/client/Query.h> diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.cpp index 4c41f1666..deb66ad71 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.cpp +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.cpp @@ -1,6 +1,6 @@ #include "CoreSegmentQueryProcessor.h" -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> namespace armarx::armem::wm::query_proc diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.h index f9e1d59c9..a09f5c8ce 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.h +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/CoreSegmentQueryProcessor.h @@ -2,7 +2,7 @@ #include <mutex> -#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/server/query_proc/base/CoreSegmentQueryProcessorBase.h> #include "BaseQueryProcessor.h" diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.cpp index b8d97d2d0..ec1c7640c 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.cpp +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.cpp @@ -1,6 +1,6 @@ #include "EntityQueryProcessor.h" -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> namespace armarx::armem::wm::query_proc diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.h index dde53a8ff..4d0a2e02a 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.h +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/EntityQueryProcessor.h @@ -1,6 +1,6 @@ #pragma once -#include <RobotAPI/libraries/armem/core/workingmemory/Entity.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/server/query_proc/base/EntityQueryProcessorBase.h> #include "BaseQueryProcessor.h" diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.h index c57eea94a..a442baaf3 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.h +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/MemoryQueryProcessor.h @@ -1,6 +1,6 @@ #pragma once -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/server/query_proc/base/MemoryQueryProcessorBase.h> #include "BaseQueryProcessor.h" diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.cpp index eb2524631..d50d252aa 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.cpp +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.cpp @@ -1,6 +1,6 @@ #include "ProviderSegmentQueryProcessor.h" -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> namespace armarx::armem::wm::query_proc diff --git a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.h index 8e4f5a5e8..ee878428d 100644 --- a/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.h +++ b/source/RobotAPI/libraries/armem/server/query_proc/workingmemory/ProviderSegmentQueryProcessor.h @@ -1,6 +1,6 @@ #pragma once -#include <RobotAPI/libraries/armem/core/workingmemory/ProviderSegment.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/server/query_proc/base/ProviderSegmentQueryProcessorBase.h> #include "BaseQueryProcessor.h" diff --git a/source/RobotAPI/libraries/armem/test/ArMemForEachTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemForEachTest.cpp index 1aa9e3cfd..cc34f7e2d 100644 --- a/source/RobotAPI/libraries/armem/test/ArMemForEachTest.cpp +++ b/source/RobotAPI/libraries/armem/test/ArMemForEachTest.cpp @@ -26,7 +26,7 @@ #include <RobotAPI/Test.h> #include <RobotAPI/libraries/armem/core/Commit.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <iostream> #include <set> @@ -168,3 +168,20 @@ BOOST_AUTO_TEST_CASE(test_forEach) BOOST_CHECK_EQUAL(cids.size(), 0); } + + +BOOST_AUTO_TEST_CASE(test_forEach_non_bool_func) +{ + // Check whether this compiles + runs without break. + + armem::wm::Entity entity; + entity.addSnapshot(armem::Time::microSeconds(500)); + entity.addSnapshot(armem::Time::microSeconds(1500)); + + int i = 0; + entity.forEachSnapshot([&i](const armem::wm::EntitySnapshot&) -> void + { + ++i; + }); + BOOST_CHECK_EQUAL(i, 2); +} diff --git a/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp index 52530a7c5..9fd00a4cf 100644 --- a/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp +++ b/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp @@ -25,7 +25,7 @@ #define ARMARX_BOOST_TEST #include <RobotAPI/Test.h> -#include "../core/workingmemory/ice_conversions.h" +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> #include <iostream> diff --git a/source/RobotAPI/libraries/armem/test/ArMemLTMTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemLTMTest.cpp index 01b3756af..3ac3d5041 100644 --- a/source/RobotAPI/libraries/armem/test/ArMemLTMTest.cpp +++ b/source/RobotAPI/libraries/armem/test/ArMemLTMTest.cpp @@ -25,8 +25,8 @@ #define ARMARX_BOOST_TEST #include <RobotAPI/Test.h> -#include "../core/workingmemory/Memory.h" -#include "../core/error.h" +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/error.h> #include <RobotAPI/libraries/aron/core/navigator/data/AllNavigators.h> #include <RobotAPI/libraries/aron/core/navigator/type/AllNavigators.h> diff --git a/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp index 022df2fc3..0e5149395 100644 --- a/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp +++ b/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp @@ -26,7 +26,7 @@ #include <RobotAPI/Test.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/core/longtermmemory/Memory.h> #include <RobotAPI/libraries/armem/core/diskmemory/Memory.h> #include <RobotAPI/libraries/armem/core/error.h> diff --git a/source/RobotAPI/libraries/armem/test/ArMemQueryBuilderTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemQueryBuilderTest.cpp index 535735b09..78d3077c0 100644 --- a/source/RobotAPI/libraries/armem/test/ArMemQueryBuilderTest.cpp +++ b/source/RobotAPI/libraries/armem/test/ArMemQueryBuilderTest.cpp @@ -25,9 +25,10 @@ #define ARMARX_BOOST_TEST #include <RobotAPI/Test.h> -#include "../client/query/Builder.h" -#include "../client/query/query_fns.h" -#include "../core/workingmemory/ice_conversions.h" +#include <RobotAPI/libraries/armem/client/query/Builder.h> +#include <RobotAPI/libraries/armem/client/query/query_fns.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> + #include <iostream> diff --git a/source/RobotAPI/libraries/armem/util/util.h b/source/RobotAPI/libraries/armem/util/util.h index b1e3e7f3d..3045d583a 100644 --- a/source/RobotAPI/libraries/armem/util/util.h +++ b/source/RobotAPI/libraries/armem/util/util.h @@ -26,8 +26,7 @@ #include <ArmarXCore/core/logging/Logging.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Entity.h> -#include <RobotAPI/libraries/armem/core/workingmemory/EntityInstance.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/aron/core/codegenerator/codeWriter/cpp/AronCppClass.h> diff --git a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp index 76272adcf..ba8e66ff9 100644 --- a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp +++ b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp @@ -1,6 +1,6 @@ #include "MemoryViewer.h" -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> #include <RobotAPI/libraries/armem_gui/gui_utils.h> #include <RobotAPI/libraries/armem/core/diskmemory/Memory.h> diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h index 26f9d3be5..c331f2b45 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h +++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h @@ -7,7 +7,7 @@ #include <RobotAPI/libraries/aron/core/navigator/type/container/Object.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> class QGroupBox; diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceViewList.h b/source/RobotAPI/libraries/armem_gui/instance/InstanceViewList.h index 5f937f419..8dc24e0dc 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/InstanceViewList.h +++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceViewList.h @@ -6,7 +6,7 @@ #include <RobotAPI/libraries/aron/aroncore/navigators/typenavigator/AronObjectTypeNavigator.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> class QGroupBox; diff --git a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h index 0dda62162..72987cda1 100644 --- a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h +++ b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h @@ -4,7 +4,7 @@ #include <QTreeWidget> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/core/longtermmemory/Memory.h> #include <RobotAPI/libraries/armem_gui/TreeWidgetBuilder.h> diff --git a/source/RobotAPI/libraries/armem_motions/server/MotionDatabase/MDBMotions/Segment.cpp b/source/RobotAPI/libraries/armem_motions/server/MotionDatabase/MDBMotions/Segment.cpp index 93bec90ca..67ffed4ba 100644 --- a/source/RobotAPI/libraries/armem_motions/server/MotionDatabase/MDBMotions/Segment.cpp +++ b/source/RobotAPI/libraries/armem_motions/server/MotionDatabase/MDBMotions/Segment.cpp @@ -10,8 +10,7 @@ #include "MotionConverter.h" #include <RobotAPI/libraries/PriorKnowledge/motions/MotionFinder.h> -#include <RobotAPI/libraries/armem/core/workingmemory/EntityInstance.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ProviderSegment.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h> #include <ArmarXCore/core/application/properties/ProxyPropertyDefinition.h> @@ -79,7 +78,7 @@ namespace armarx::armem::server::motions::mdb instance.metadata().timeSent = IceUtil::Time::now(); instance.metadata().timeArrived = IceUtil::Time::now(); instance.metadata().confidence = 1.0; - instance.setData(op->toAron()); + instance.data() = op->toAron(); } else { diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.cpp index c973cf248..976d5bf9a 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.cpp @@ -16,7 +16,7 @@ #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/core/Time.h> #include <RobotAPI/libraries/armem/core/error.h> -#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h> #include <RobotAPI/libraries/armem_robot/aron_conversions.h> #include <RobotAPI/libraries/armem_robot/robot_conversions.h> diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp index d0bfb3570..be9a624f4 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp @@ -13,7 +13,7 @@ #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/core/Time.h> #include <RobotAPI/libraries/armem/core/error.h> -#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h> #include <RobotAPI/libraries/armem_robot/aron_conversions.h> #include <RobotAPI/libraries/armem_robot/robot_conversions.h> diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/utils.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/utils.h index 2e51a9e4b..9c5b48f39 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/utils.h +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/utils.h @@ -2,7 +2,7 @@ #include <optional> -#include "RobotAPI/libraries/armem/core/workingmemory/EntityInstance.h" +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include "RobotAPI/libraries/armem_robot/types.h" #include <RobotAPI/libraries/armem_objects/aron/ObjectClass.aron.generated.h> diff --git a/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.cpp b/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.cpp index e5e91c309..938ba0986 100644 --- a/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.cpp @@ -9,7 +9,7 @@ #include <RobotAPI/libraries/armem/core/Time.h> #include <RobotAPI/libraries/armem/core/error.h> #include <RobotAPI/libraries/armem/client/query/Builder.h> -#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/util/util.h> #include <RobotAPI/libraries/armem_robot/robot_conversions.h> #include <RobotAPI/libraries/armem_robot/aron_conversions.h> diff --git a/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp b/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp index bb5d930da..365958be8 100644 --- a/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp +++ b/source/RobotAPI/libraries/armem_objects/server/attachments/Segment.cpp @@ -10,7 +10,6 @@ #include "RobotAPI/libraries/aron/common/aron_conversions.h" #include <RobotAPI/libraries/armem/core/aron_conversions.h> -#include <RobotAPI/libraries/armem/core/workingmemory/visitor.h> #include "RobotAPI/libraries/armem/core/MemoryID.h" #include <RobotAPI/libraries/armem/client/Writer.h> #include <RobotAPI/libraries/armem/client/query/Builder.h> diff --git a/source/RobotAPI/libraries/armem_objects/server/class/FloorVis.cpp b/source/RobotAPI/libraries/armem_objects/server/class/FloorVis.cpp index 08927d1e7..35ce3d1cf 100644 --- a/source/RobotAPI/libraries/armem_objects/server/class/FloorVis.cpp +++ b/source/RobotAPI/libraries/armem_objects/server/class/FloorVis.cpp @@ -1,6 +1,6 @@ #include "FloorVis.h" -#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem_objects/aron/ObjectClass.aron.generated.h> #include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h> diff --git a/source/RobotAPI/libraries/armem_objects/server/class/Segment.h b/source/RobotAPI/libraries/armem_objects/server/class/Segment.h index 15c7c4f37..3e9717b3e 100644 --- a/source/RobotAPI/libraries/armem_objects/server/class/Segment.h +++ b/source/RobotAPI/libraries/armem_objects/server/class/Segment.h @@ -9,7 +9,7 @@ #include <RobotAPI/libraries/ArmarXObjects/ObjectID.h> #include <RobotAPI/libraries/ArmarXObjects/ObjectFinder.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/server/segment/SpecializedSegment.h> #include <RobotAPI/libraries/armem_objects/server/class/FloorVis.h> diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp index 15a577619..e1826b2b2 100644 --- a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp +++ b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp @@ -7,7 +7,6 @@ #include <RobotAPI/libraries/armem/core/aron_conversions.h> #include <RobotAPI/libraries/armem/core/error.h> -#include <RobotAPI/libraries/armem/core/workingmemory/visitor.h> #include <RobotAPI/libraries/armem/client/Writer.h> #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/client/query/query_fns.h> @@ -290,14 +289,17 @@ namespace armarx::armem::server::obj::instance armem::MemoryID entityID = armem::MemoryID().withEntityName(objectID.str()); if (providerName.empty()) { - for (auto& [_, prov] : *coreSegment) + armem::wm::Entity* result = nullptr; + coreSegment->forEachProviderSegment([&result, &entityID](wm::ProviderSegment & prov) { if (prov.hasEntity(entityID.entityName)) { - return &prov.getEntity(entityID); + result = &prov.getEntity(entityID); + return false; } - } - return nullptr; + return true; + }); + return result; } else { @@ -420,16 +422,16 @@ namespace armarx::armem::server::obj::instance void Segment::getLatestObjectPoses(const armem::wm::CoreSegment& coreSeg, ObjectPoseMap& out) { - for (const auto& [_, provSegment] : coreSeg) + coreSeg.forEachProviderSegment([&out](const wm::ProviderSegment & provSegment) { getLatestObjectPoses(provSegment, out); - } + }); } void Segment::getLatestObjectPoses(const armem::wm::ProviderSegment& provSegment, ObjectPoseMap& out) { - for (const auto& [_, entity] : provSegment) + provSegment.forEachEntity([&out](const wm::Entity & entity) { if (!entity.empty()) { @@ -445,19 +447,19 @@ namespace armarx::armem::server::obj::instance } } } - } + }); } void Segment::getLatestObjectPose(const armem::wm::Entity& entity, ObjectPose& out) { - for (const armem::wm::EntityInstance& instance : entity.getLatestSnapshot()) + entity.getLatestSnapshot().forEachInstance([&out](const wm::EntityInstance & instance) { arondto::ObjectInstance dto; dto.fromAron(instance.data()); fromAron(dto, out); - } + }); } @@ -697,36 +699,6 @@ namespace armarx::armem::server::obj::instance } - struct DetachVisitor : public armem::wm::Visitor - { - Segment& owner; - armem::Time now; - bool commitAttachedPose; - - int numDetached = 0; - - DetachVisitor(Segment& owner, armem::Time now, bool commitAttachedPose) : - owner(owner), now(now), commitAttachedPose(commitAttachedPose) - { - } - - virtual bool visitEnter(armem::wm::Entity& entity) override; - }; - - - bool DetachVisitor::visitEnter(armem::wm::Entity& entity) - { - const arondto::ObjectInstance data = owner.getLatestInstanceData(entity); - if (data.pose.attachmentValid) - { - numDetached++; - // Store non-attached pose in new snapshot. - owner.storeDetachedSnapshot(entity, data, now, commitAttachedPose); - } - return false; // Stop descending. - } - - objpose::DetachAllObjectsFromRobotNodesOutput Segment::detachAllObjectsFromRobotNodes( const objpose::DetachAllObjectsFromRobotNodesInput& input) { @@ -734,11 +706,18 @@ namespace armarx::armem::server::obj::instance const armem::Time now = armem::Time::now(); - DetachVisitor visitor(*this, now, input.commitAttachedPose); - visitor.applyTo(*coreSegment); - objpose::DetachAllObjectsFromRobotNodesOutput output; - output.numDetached = visitor.numDetached; + output.numDetached = 0; + coreSegment->forEachEntity([this, now, &input, &output](wm::Entity & entity) + { + const arondto::ObjectInstance data = this->getLatestInstanceData(entity); + if (data.pose.attachmentValid) + { + ++output.numDetached; + // Store non-attached pose in new snapshot. + this->storeDetachedSnapshot(entity, data, now, input.commitAttachedPose); + } + }); ARMARX_INFO << "Detached all objects (" << output.numDetached << ") from robot nodes."; @@ -901,9 +880,7 @@ namespace armarx::armem::server::obj::instance armem::obj::SceneSnapshot Segment::getSceneSnapshot() const { armem::obj::SceneSnapshot scene; - - wm::FunctionalVisitor visitor; - visitor.entityFn = [&scene](wm::Entity & entity) + coreSegment->forEachEntity([&scene](wm::Entity & entity) { try { @@ -923,10 +900,8 @@ namespace armarx::armem::server::obj::instance { ARMARX_WARNING_S << e.what(); } - return false; - }; + }); - visitor.applyTo(*coreSegment); return scene; } diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.h b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.h index 918a4efad..f6ba67189 100644 --- a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.h +++ b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.h @@ -19,7 +19,7 @@ #include <RobotAPI/libraries/ArmarXObjects/ObjectPose.h> #include <RobotAPI/libraries/ArmarXObjects/ObjectFinder.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/server/segment/SpecializedSegment.h> #include "ArticulatedObjectVisu.h" diff --git a/source/RobotAPI/libraries/armem_robot/robot_conversions.cpp b/source/RobotAPI/libraries/armem_robot/robot_conversions.cpp index 3bf417148..6ba61bba4 100644 --- a/source/RobotAPI/libraries/armem_robot/robot_conversions.cpp +++ b/source/RobotAPI/libraries/armem_robot/robot_conversions.cpp @@ -4,7 +4,7 @@ #include <RobotAPI/libraries/aron/common/aron_conversions.h> -#include "RobotAPI/libraries/armem/core/workingmemory/EntityInstance.h" +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/core/aron_conversions.h> #include <RobotAPI/libraries/armem_robot/aron/RobotDescription.aron.generated.h> diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp index 7a500d139..85370141f 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp @@ -10,7 +10,7 @@ #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/core/error.h> #include <RobotAPI/libraries/armem/core/Time.h> -#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem_robot/aron_conversions.h> #include <RobotAPI/libraries/armem_robot/robot_conversions.h> #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h> @@ -214,30 +214,31 @@ namespace armarx::armem::robot_state const armem::wm::ProviderSegment& providerSegment = memory .getCoreSegment(properties.proprioceptionCoreSegment) .getProviderSegment(name); - // clang-format on - const auto entities = simox::alg::get_values(providerSegment.entities()); // TODO entitiesToRobotState() - if (entities.empty()) + if (providerSegment.empty()) { ARMARX_WARNING << "No entity found"; return std::nullopt; } - const auto entitySnapshots = simox::alg::get_values(entities.front().history()); + // clang-format on - if (entitySnapshots.empty()) + const armem::wm::EntityInstance* instance = nullptr; + providerSegment.forEachInstance([&instance](const wm::EntityInstance & i) + { + instance = &i; + return false; // break + }); + if (!instance) { ARMARX_WARNING << "No entity snapshots found"; return std::nullopt; } - // TODO(fabian.reister): check if 0 available - const armem::wm::EntityInstance& instance = entitySnapshots.front().getInstance(0); - // Here, we access the RobotUnit streaming data stored in the proprioception segment. - return robot::convertRobotState(instance); + return robot::convertRobotState(*instance); } // FIXME remove this, use armem/util/util.h @@ -271,24 +272,19 @@ namespace armarx::armem::robot_state .getCoreSegment(properties.proprioceptionCoreSegment); // clang-format on - for (const auto &[_, providerSegment] : coreSegment.providerSegments()) + coreSegment.forEachEntity([&jointMap](const wm::Entity & entity) { + const auto& entityInstance = entity.getLatestSnapshot().getInstance(0); - for (const auto &[name, entity] : providerSegment.entities()) + const auto jointState = tryCast<::armarx::armem::arondto::JointState>(entityInstance); + if (not jointState) { - const auto& entityInstance = entity.getLatestSnapshot().getInstance(0); - - const auto jointState = tryCast<::armarx::armem::arondto::JointState>(entityInstance); - - if (not jointState) - { - // ARMARX_WARNING << "Could not convert entity instance to 'JointState'"; - continue; - } - - jointMap.emplace(jointState->name, jointState->position); + // ARMARX_WARNING << "Could not convert entity instance to 'JointState'"; + return; } - } + + jointMap.emplace(jointState->name, jointState->position); + }); if (jointMap.empty()) { @@ -307,26 +303,19 @@ namespace armarx::armem::robot_state .getCoreSegment(properties.descriptionCoreSegment) .getProviderSegment(name); // TODO(fabian.reister): all // clang-format on - const auto entities = simox::alg::get_values(providerSegment.entities()); - if (entities.empty()) + const armem::wm::EntityInstance* instance = nullptr; + providerSegment.forEachInstance([&instance](const wm::EntityInstance & i) { - ARMARX_WARNING << "No entity found"; - return std::nullopt; - } - - const auto entitySnapshots = simox::alg::get_values(entities.front().history()); - - if (entitySnapshots.empty()) + instance = &i; + }); + if (!instance) { ARMARX_WARNING << "No entity snapshots found"; return std::nullopt; } - // TODO(fabian.reister): check if 0 available - const armem::wm::EntityInstance& instance = entitySnapshots.front().getInstance(0); - - return robot::convertRobotDescription(instance); + return robot::convertRobotDescription(*instance); } } // namespace armarx::armem::robot_state diff --git a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.cpp b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.cpp index 6aa026431..32da2d645 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.cpp @@ -48,9 +48,9 @@ #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/client/query/query_fns.h> #include <RobotAPI/libraries/armem/core/error.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ProviderSegment.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> #include <RobotAPI/libraries/armem/server/MemoryRemoteGui.h> #include <RobotAPI/libraries/aron/core/navigator/type/NavigatorFactory.h> #include <RobotAPI/libraries/core/FramedPose.h> diff --git a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp index 4230394aa..608dfa394 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp @@ -37,9 +37,9 @@ #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/client/query/query_fns.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ProviderSegment.h> +#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/server/MemoryRemoteGui.h> #include <RobotAPI/libraries/aron/core/navigator/type/NavigatorFactory.h> #include <RobotAPI/libraries/core/FramedPose.h> diff --git a/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.cpp b/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.cpp index c4d0e05b4..7990703b1 100644 --- a/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.cpp @@ -5,18 +5,18 @@ #include <SimoxUtility/color/cmaps.h> #include <SimoxUtility/math/pose/interpolate.h> -#include "ArmarXCore/core/exceptions/LocalException.h" -#include "RobotAPI/libraries/core/FramedPose.h" +#include <ArmarXCore/core/exceptions/LocalException.h> +#include <RobotAPI/libraries/core/FramedPose.h> -#include "RobotAPI/libraries/aron/common/aron_conversions.h" +#include <RobotAPI/libraries/aron/common/aron_conversions.h> -#include "RobotAPI/libraries/armem/core/error/ArMemError.h" -#include "RobotAPI/libraries/armem/core/workingmemory/EntityInstance.h" -#include "RobotAPI/libraries/armem/core/workingmemory/Memory.h" +#include <RobotAPI/libraries/armem/core/error/ArMemError.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem_robot_state/aron/Transform.aron.generated.h> #include <RobotAPI/libraries/armem_robot_state/aron_conversions.h> + namespace armarx::armem::common::robot_state::localization { diff --git a/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.h b/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.h index cafbedcbc..0f1f20de8 100644 --- a/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.h +++ b/source/RobotAPI/libraries/armem_robot_state/common/localization/TransformHelper.h @@ -28,6 +28,7 @@ #include <RobotAPI/libraries/armem_robot_state/common/localization/types.h> + namespace armarx::armem::wm { class CoreSegment; @@ -66,4 +67,4 @@ namespace armarx::armem::common::robot_state::localization const armem::wm::ProviderSegment& agentProviderSegment, const armem::Time& timestamp); }; -} // namespace armarx::armem::common::robot_state::localization \ No newline at end of file +} // namespace armarx::armem::common::robot_state::localization diff --git a/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp b/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp index fc4eef76e..e4e9dc4f7 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp @@ -19,7 +19,6 @@ #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/client/query/query_fns.h> #include <RobotAPI/libraries/armem/core/aron_conversions.h> -#include <RobotAPI/libraries/armem/core/workingmemory/visitor.h> #include <RobotAPI/libraries/armem/server/MemoryToIceAdapter.h> #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h> diff --git a/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp b/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp index 604795dd4..118123c6b 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp @@ -26,7 +26,6 @@ #include <RobotAPI/libraries/armem/core/MemoryID.h> #include <RobotAPI/libraries/armem/core/Time.h> #include <RobotAPI/libraries/armem/core/aron_conversions.h> -#include <RobotAPI/libraries/armem/core/workingmemory/visitor.h> #include <RobotAPI/libraries/armem/server/MemoryToIceAdapter.h> #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h> diff --git a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp index e94fc83e2..d08ae0866 100644 --- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/Segment.cpp @@ -11,7 +11,6 @@ #include <RobotAPI/libraries/armem_robot_state/types.h> #include <RobotAPI/libraries/armem/core/aron_conversions.h> -#include <RobotAPI/libraries/armem/core/workingmemory/visitor.h> #include <RobotAPI/libraries/armem/core/MemoryID.h> #include <RobotAPI/libraries/armem/client/Writer.h> #include <RobotAPI/libraries/armem/client/query/Builder.h> diff --git a/source/RobotAPI/libraries/armem_vision/client/laser_scans/Reader.cpp b/source/RobotAPI/libraries/armem_vision/client/laser_scans/Reader.cpp index 61eeb6fff..4bc22306d 100644 --- a/source/RobotAPI/libraries/armem_vision/client/laser_scans/Reader.cpp +++ b/source/RobotAPI/libraries/armem_vision/client/laser_scans/Reader.cpp @@ -33,22 +33,20 @@ #include <RobotAPI/libraries/aron/core/navigator/data/complex/NDArray.h> // RobotAPI Armem +#include <RobotAPI/libraries/armem/core/error.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> +#include <RobotAPI/libraries/armem/util/util.h> + #include <RobotAPI/libraries/armem/client/Query.h> #include <RobotAPI/libraries/armem/client/Reader.h> #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/client/query/selectors.h> -#include <RobotAPI/libraries/armem/core/error.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> -#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ProviderSegment.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Entity.h> -#include <RobotAPI/libraries/armem/core/workingmemory/EntityInstance.h> -#include <RobotAPI/libraries/armem/util/util.h> #include <RobotAPI/libraries/armem_vision/aron/LaserScan.aron.generated.h> #include <RobotAPI/libraries/armem_vision/aron_conversions.h> #include <RobotAPI/libraries/armem_vision/types.h> + namespace armarx::armem::vision::laser_scans::client { diff --git a/source/RobotAPI/libraries/armem_vision/client/laser_scans/Writer.cpp b/source/RobotAPI/libraries/armem_vision/client/laser_scans/Writer.cpp index 7358e504f..861e02c4c 100644 --- a/source/RobotAPI/libraries/armem_vision/client/laser_scans/Writer.cpp +++ b/source/RobotAPI/libraries/armem_vision/client/laser_scans/Writer.cpp @@ -1,7 +1,7 @@ #include "Writer.h" #include <RobotAPI/libraries/armem/core/error.h> -#include "RobotAPI/libraries/armem_vision/aron_conversions.h" +#include <RobotAPI/libraries/armem_vision/aron_conversions.h> #include <RobotAPI/libraries/armem_vision/aron/LaserScan.aron.generated.h> diff --git a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Reader.cpp b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Reader.cpp index ba7edf547..717a2ec98 100644 --- a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Reader.cpp +++ b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Reader.cpp @@ -19,13 +19,13 @@ #include <SimoxUtility/algorithm/get_map_keys_values.h> // ArmarXCore -#include "ArmarXCore/core/exceptions/LocalException.h" +#include <ArmarXCore/core/exceptions/LocalException.h> #include <ArmarXCore/core/exceptions/local/ExpressionException.h> #include <ArmarXCore/core/logging/LogSender.h> #include <ArmarXCore/core/logging/Logging.h> // RobotAPI Interfaces -#include "RobotAPI/libraries/aron/converter/eigen/EigenConverter.h" +#include <RobotAPI/libraries/aron/converter/eigen/EigenConverter.h> #include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h> #include <RobotAPI/interface/armem/server/ReadingMemoryInterface.h> #include <RobotAPI/interface/units/LaserScannerUnit.h> @@ -40,11 +40,7 @@ #include <RobotAPI/libraries/armem/client/Reader.h> #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/client/query/selectors.h> -#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Entity.h> -#include <RobotAPI/libraries/armem/core/workingmemory/EntityInstance.h> -#include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> -#include <RobotAPI/libraries/armem/core/workingmemory/ProviderSegment.h> +#include <RobotAPI/libraries/armem/core/wm/memory_definitions.h> #include <RobotAPI/libraries/armem/util/util.h> #include <RobotAPI/libraries/armem_vision/aron/LaserScan.aron.generated.h> #include <RobotAPI/libraries/armem_vision/aron_conversions.h> @@ -68,20 +64,23 @@ namespace armarx::armem::vision::occupancy_grid::client return qb; } - OccupancyGrid asOccupancyGrid(const std::map<std::string, wm::Entity>& entities) + OccupancyGrid asOccupancyGrid(const wm::ProviderSegment& providerSegment) { - ARMARX_CHECK(not entities.empty()) << "No entities"; - ARMARX_CHECK(entities.size() == 1) << "There should be only one entity!"; + ARMARX_CHECK(not providerSegment.empty()) << "No entities"; + ARMARX_CHECK(providerSegment.size() == 1) << "There should be only one entity!"; - const wm::Entity& entity = entities.begin()->second; - ARMARX_CHECK(not entity.empty()) << "No snapshots"; - - const auto& entitySnapshot = entity.getLatestSnapshot(); - ARMARX_CHECK(not entitySnapshot.empty()) << "No entity snapshot instances"; + const wm::EntityInstance* entityInstance = nullptr; + providerSegment.forEachEntity([&entityInstance](const wm::Entity & entity) + { + const auto& entitySnapshot = entity.getLatestSnapshot(); + ARMARX_CHECK(not entitySnapshot.empty()) << "No entity snapshot instances"; - const auto& entityInstance = entitySnapshot.instances().front(); + entityInstance = &entitySnapshot.getInstance(0); + return false; + }); + ARMARX_CHECK_NOT_NULL(entityInstance); - const auto aronDto = tryCast<arondto::OccupancyGrid>(entityInstance); + const auto aronDto = tryCast<arondto::OccupancyGrid>(*entityInstance); ARMARX_CHECK(aronDto) << "Failed casting to OccupancyGrid"; OccupancyGrid occupancyGrid; @@ -89,7 +88,7 @@ namespace armarx::armem::vision::occupancy_grid::client // direct access to grid data const auto ndArrayNavigator = aron::datanavigator::NDArrayNavigator::DynamicCast( - entityInstance.data()->getElement("grid")); + entityInstance->data()->getElement("grid")); ARMARX_CHECK_NOT_NULL(ndArrayNavigator); occupancyGrid.grid = aron::converter::AronEigenConverter::ConvertToArray<float>(*ndArrayNavigator); @@ -118,11 +117,10 @@ namespace armarx::armem::vision::occupancy_grid::client } // now create result from memory - const auto& entities = qResult.memory.getCoreSegment(properties().memoryName) - .getProviderSegment(query.providerName) - .entities(); + const wm::ProviderSegment& providerSegment = qResult.memory.getCoreSegment(properties().memoryName) + .getProviderSegment(query.providerName); - if (entities.empty()) + if (providerSegment.empty()) { ARMARX_WARNING << "No entities."; return {.occupancyGrid = std::nullopt, @@ -132,7 +130,7 @@ namespace armarx::armem::vision::occupancy_grid::client try { - const auto occupancyGrid = asOccupancyGrid(entities); + const auto occupancyGrid = asOccupancyGrid(providerSegment); return Result{.occupancyGrid = occupancyGrid, .status = Result::Status::Success}; } diff --git a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Reader.h b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Reader.h index a43c2c7c1..eaf9b2fdf 100644 --- a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Reader.h +++ b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Reader.h @@ -23,9 +23,9 @@ #include <mutex> -#include "RobotAPI/libraries/armem/client/util/SimpleReaderBase.h" -#include "RobotAPI/libraries/armem/core/Time.h" -#include "RobotAPI/libraries/armem_vision/types.h" +#include <RobotAPI/libraries/armem/client/util/SimpleReaderBase.h> +#include <RobotAPI/libraries/armem/core/Time.h> +#include <RobotAPI/libraries/armem_vision/types.h> #include <RobotAPI/libraries/armem/client/query/Builder.h> namespace armarx::armem::vision::occupancy_grid::client diff --git a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp index f2930f14f..ce5883afb 100644 --- a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp +++ b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp @@ -1,8 +1,9 @@ #include "Writer.h" -#include "RobotAPI/libraries/armem_vision/aron_conversions.h" +#include <RobotAPI/libraries/armem_vision/aron_conversions.h> #include <RobotAPI/libraries/armem_vision/aron/OccupancyGrid.aron.generated.h> + namespace armarx::armem::vision::occupancy_grid::client { Writer::~Writer() = default; @@ -67,4 +68,4 @@ namespace armarx::armem::vision::occupancy_grid::client return SimpleWriterBase::Properties{.memoryName = "Vision", .coreSegmentName = "OccupancyGrid"}; } -} // namespace armarx::armem::vision::occupancy_grid::client \ No newline at end of file +} // namespace armarx::armem::vision::occupancy_grid::client diff --git a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.h b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.h index bf1268444..b2a900321 100644 --- a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.h +++ b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.h @@ -24,8 +24,8 @@ #include <mutex> -#include "RobotAPI/libraries/armem/client/util/SimpleWriterBase.h" -#include "RobotAPI/libraries/armem_vision/types.h" +#include <RobotAPI/libraries/armem/client/util/SimpleWriterBase.h> +#include <RobotAPI/libraries/armem_vision/types.h> namespace armarx::armem::vision::occupancy_grid::client { -- GitLab