From e6a489ecf4b67709d0050161693c4c6d13874e0f Mon Sep 17 00:00:00 2001
From: phesch <ulila@student.kit.edu>
Date: Tue, 14 Jun 2022 09:48:47 +0200
Subject: [PATCH] Fix prediction errors in ObjectMemory

---
 .../armem/server/ObjectMemory/ObjectMemory.cpp           | 7 ++++---
 source/RobotAPI/libraries/armem/core/Prediction.cpp      | 9 ++++++++-
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp
index fe2a74715..89da7e8a6 100644
--- a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp
+++ b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp
@@ -251,7 +251,7 @@ namespace armarx::armem::server::obj
                 if (objPoseResult.success)
                 {
                     armem::client::QueryBuilder builder;
-                    builder.singleEntitySnapshot(boRequest.snapshotID);
+                    builder.latestEntitySnapshot(boRequest.snapshotID);
                     auto queryResult = armarx::fromIce<armem::client::QueryResult>(
                         query(builder.buildQueryInputIce()));
                     std::string instanceError =
@@ -263,11 +263,12 @@ namespace armarx::armem::server::obj
                     }
                     else
                     {
-                        auto* aronInstance = queryResult.memory.findInstance(boRequest.snapshotID);
+                        auto* aronInstance = queryResult.memory.findLatestInstance(
+                            boRequest.snapshotID, boRequest.snapshotID.instanceIndex);
                         if (aronInstance == nullptr)
                         {
                             result.success = false;
-                            result.errorMessage << instanceError;
+                            result.errorMessage << instanceError << ": No latest instance found.";
                         }
                         else
                         {
diff --git a/source/RobotAPI/libraries/armem/core/Prediction.cpp b/source/RobotAPI/libraries/armem/core/Prediction.cpp
index 9880d03a2..bb43a908c 100644
--- a/source/RobotAPI/libraries/armem/core/Prediction.cpp
+++ b/source/RobotAPI/libraries/armem/core/Prediction.cpp
@@ -120,7 +120,14 @@ namespace armarx::armem
         ice.success = result.success;
         ice.errorMessage = result.errorMessage;
         toIce(ice.snapshotID, result.snapshotID);
-        ice.prediction = result.prediction->toAronDictDTO();
+        if (result.prediction)
+        {
+            ice.prediction = result.prediction->toAronDictDTO();
+        }
+        else
+        {
+            ice.prediction = nullptr;
+        }
     }
 
     void
-- 
GitLab