From 1843777917fa87aa85a5ef7ff304a88bda5f2f94 Mon Sep 17 00:00:00 2001
From: jean_patrick_mathes <uomnk@student.kit.edu>
Date: Tue, 4 Oct 2022 14:16:16 +0200
Subject: [PATCH] Commit only unchanged objects and set confidence to zero when
 deleting

---
 .../InteractiveMemoryEditor/Editor.cpp        | 41 ++++++++++---------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp b/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp
index 0d8e32605..889375b71 100644
--- a/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp
+++ b/source/RobotAPI/components/InteractiveMemoryEditor/Editor.cpp
@@ -99,19 +99,21 @@ namespace armarx
         remainingPoses.reserve(storedPoses.size());
         for (objpose::ObjectPose & current : storedPoses)
         {
-            bool keep = changes.applyTo(current);
-            if (not keep)
-            {
-                continue;
-            }
+            bool isChanged = changes.applyTo(current);
 
-            providingPoses.push_back(current.toProvidedObjectPose());
-            objpose::ProvidedObjectPose& providing = providingPoses.back();
+            if (isChanged)
+            {
+                providingPoses.push_back(current.toProvidedObjectPose());
+                objpose::ProvidedObjectPose& providing = providingPoses.back();
 
-            providing.providerName = properties.providerName;
-            providing.timestamp = DateTime::Now();
+                providing.providerName = properties.providerName;
+                providing.timestamp = DateTime::Now();
+            }
 
-            remainingPoses.push_back(current);
+            if (current.confidence > 0)
+            {
+                remainingPoses.push_back(current);
+            }
         }
 
         pushToMemory(providingPoses);
@@ -224,20 +226,19 @@ namespace armarx
         auto iterator = changed.find(pose.objectID.str());
         bool isChanged = iterator != changed.end();
 
-        if (isChanged && iterator->second.kind == DELETE)
-        {
-            return false;
-        }
-
-        Eigen::Matrix4f transform = Eigen::Matrix4f::Identity();
         if (isChanged)
         {
-            transform = iterator->second.transform;
-        }
+            auto& [name, change] = *iterator;
 
-        pose.objectPoseGlobal = transform * pose.objectPoseGlobal;
+            if (change.kind == DELETE)
+            {
+                pose.confidence = 0;
+            }
+
+            pose.objectPoseGlobal = change.transform * pose.objectPoseGlobal;
+        }
 
-        return true;
+        return isChanged;
     }
 
     void Editor::ChangeState::visualizeNewObjects(Editor* editor)
-- 
GitLab