From 2fad98a2f07709022b0098591c31893cbecb4fbf Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Tue, 14 Jun 2022 10:48:04 +0200
Subject: [PATCH] Remove requirement that object memory needs instance index
 for prediction

---
 .../armem/server/ObjectMemory/ObjectMemory.cpp        | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp
index 89da7e8a6..fbfdba9d7 100644
--- a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp
+++ b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp
@@ -234,15 +234,16 @@ namespace armarx::armem::server::obj
             auto boRequest = armarx::fromIce<armem::PredictionRequest>(request);
             armem::PredictionResult result;
             result.snapshotID = boRequest.snapshotID;
-            if (armem::contains(workingMemory().id().withCoreSegmentName("Instance"),
-                                boRequest.snapshotID) &&
-                !boRequest.snapshotID.hasGap() && boRequest.snapshotID.hasInstanceIndex())
+            if (armem::contains(workingMemory().id().withCoreSegmentName("Instance"), boRequest.snapshotID)
+                    and not boRequest.snapshotID.hasGap()
+                    and boRequest.snapshotID.hasTimestamp())
             {
                 objpose::ObjectPosePredictionRequest objPoseRequest;
                 toIce(objPoseRequest.timeWindow, Duration::SecondsDouble(predictionTimeWindow));
                 objPoseRequest.objectID = toIce(ObjectID(request.snapshotID.entityName));
                 objPoseRequest.settings = request.settings;
                 toIce(objPoseRequest.timestamp, boRequest.snapshotID.timestamp);
+
                 objpose::ObjectPosePredictionResult objPoseResult =
                     predictObjectPoses({objPoseRequest}).at(0);
                 result.success = objPoseResult.success;
@@ -263,6 +264,10 @@ namespace armarx::armem::server::obj
                     }
                     else
                     {
+                        if (not boRequest.snapshotID.hasInstanceIndex())
+                        {
+                            boRequest.snapshotID.instanceIndex = 0;
+                        }
                         auto* aronInstance = queryResult.memory.findLatestInstance(
                             boRequest.snapshotID, boRequest.snapshotID.instanceIndex);
                         if (aronInstance == nullptr)
-- 
GitLab