From 6e3f0731cde7e26eb32250f1638f3fefd3b230ae Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Tue, 22 Mar 2022 14:17:54 +0100
Subject: [PATCH] Update usage of time in armem_objects

---
 .../ArticulatedObjectReader.cpp               | 11 +++---
 .../ArticulatedObjectReader.h                 |  3 +-
 .../ArticulatedObjectWriter.cpp               |  8 +++--
 .../client/articulated_object/Writer.cpp      |  2 +-
 .../client/instance/ObjectWriter.cpp          |  2 +-
 .../armem_objects/server/class/Segment.cpp    |  2 +-
 .../armem_objects/server/instance/Decay.cpp   |  7 ++--
 .../armem_objects/server/instance/Decay.h     |  9 +++--
 .../server/instance/RobotHeadMovement.cpp     | 18 +++++-----
 .../server/instance/RobotHeadMovement.h       | 11 +++---
 .../armem_objects/server/instance/Segment.cpp | 35 ++++++++-----------
 .../armem_objects/server/instance/Segment.h   | 15 ++++----
 .../server/instance/SegmentAdapter.cpp        |  6 ++--
 13 files changed, 62 insertions(+), 67 deletions(-)

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 f26a62736..c16ff2576 100644
--- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.cpp
+++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.cpp
@@ -24,10 +24,11 @@
 namespace armarx::armem::articulated_object
 {
 
-    VirtualRobot::RobotPtr ArticulatedObjectReader::getArticulatedObject(const std::string& name,
+    VirtualRobot::RobotPtr ArticulatedObjectReader::getArticulatedObject(
+            const std::string& name,
             const armem::Time& timestamp)
     {
-        const auto descriptions = queryDescriptions(IceUtil::Time::now());
+        const auto descriptions = queryDescriptions(armem::Time::Now());
 
         ARMARX_INFO << "Found " << descriptions.size() << " articulated object descriptions";
 
@@ -45,9 +46,9 @@ namespace armarx::armem::articulated_object
 
         ARMARX_DEBUG << "Object " << name << " available";
 
-        auto obj =
-            VirtualRobot::RobotIO::loadRobot(ArmarXDataPath::resolvePath(it->xml.serialize().path),
-                                             VirtualRobot::RobotIO::eStructure);
+        auto obj = VirtualRobot::RobotIO::loadRobot(
+                    ArmarXDataPath::resolvePath(it->xml.serialize().path),
+                    VirtualRobot::RobotIO::eStructure);
 
         if (not obj)
         {
diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.h
index 5d918ddf4..65e8f2fba 100644
--- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.h
+++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.h
@@ -10,7 +10,8 @@ namespace armarx::armem::articulated_object
     public:
         using Reader::Reader;
 
-        VirtualRobot::RobotPtr getArticulatedObject(const std::string& name,
+        VirtualRobot::RobotPtr getArticulatedObject(
+                const std::string& name,
                 const armem::Time& timestamp);
     };
 } // namespace armarx::armem::articulated_object
diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp
index 8caad31be..6cbb3ecdc 100644
--- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp
+++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp
@@ -12,7 +12,8 @@
 
 namespace armarx::armem::articulated_object
 {
-    armem::articulated_object::ArticulatedObject convert(const VirtualRobot::Robot& obj,
+    armem::articulated_object::ArticulatedObject convert(
+            const VirtualRobot::Robot& obj,
             const armem::Time& timestamp)
     {
         ARMARX_DEBUG << "Filename is " << obj.getFilename();
@@ -37,14 +38,15 @@ namespace armarx::armem::articulated_object
     }
 
     bool
-    ArticulatedObjectWriter::storeArticulatedObject(const VirtualRobot::RobotPtr& articulatedObject,
+    ArticulatedObjectWriter::storeArticulatedObject(
+            const VirtualRobot::RobotPtr& articulatedObject,
             const armem::Time& timestamp)
     {
 
         ARMARX_CHECK_NOT_NULL(articulatedObject);
 
         armarx::armem::articulated_object::ArticulatedObject armemArticulatedObject =
-            convert(*articulatedObject, IceUtil::Time::now());
+            convert(*articulatedObject, Time::Now());
 
         return store(armemArticulatedObject);
     }
diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
index 055061520..fbce08b63 100644
--- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
+++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
@@ -97,7 +97,7 @@ namespace armarx::armem::articulated_object
 
     void Writer::updateKnownObjects()
     {
-        knownObjects = queryDescriptions(IceUtil::Time::now());
+        knownObjects = queryDescriptions(Time::Now());
 
         ARMARX_INFO << "Known articulated objects " << simox::alg::get_keys(knownObjects);
     }
diff --git a/source/RobotAPI/libraries/armem_objects/client/instance/ObjectWriter.cpp b/source/RobotAPI/libraries/armem_objects/client/instance/ObjectWriter.cpp
index ad9c8c83f..84b1e4613 100644
--- a/source/RobotAPI/libraries/armem_objects/client/instance/ObjectWriter.cpp
+++ b/source/RobotAPI/libraries/armem_objects/client/instance/ObjectWriter.cpp
@@ -65,7 +65,7 @@ namespace armarx::armem::obj::instance
         e.entityID.providerSegmentName = provider;
         e.entityID.entityName = inst.pose.objectID.dataset + "/" + inst.pose.objectID.className + "/" + inst.pose.objectID.instanceName;
         e.timeCreated = t;
-        e.timeSent = IceUtil::Time::now();
+        e.timeSent = armem::Time::Now();
         e.instancesData = { inst.toAron() };
 
         auto res = memoryWriter.commit(c);
diff --git a/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp b/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp
index a0e9bce51..3250a1cca 100644
--- a/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp
@@ -79,7 +79,7 @@ namespace armarx::armem::server::obj::clazz
 
     void Segment::loadByObjectFinder()
     {
-        const Time now = TimeUtil::GetTime();
+        const Time now = Time::Now();
 
         const bool checkPaths = false;
         std::vector<ObjectInfo> infos = objectFinder.findAllObjects(checkPaths);
diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Decay.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/Decay.cpp
index df3728fb3..ac072e196 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/Decay.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/Decay.cpp
@@ -3,6 +3,7 @@
 #include <SimoxUtility/math/scale_value.h>
 
 #include <ArmarXCore/core/time/TimeUtil.h>
+#include <ArmarXCore/core/time/DateTime.h>
 
 
 namespace armarx::armem::server::obj::instance
@@ -24,7 +25,7 @@ namespace armarx::armem::server::obj::instance
                        "Remove objects whose confidence is lower than this value.");
     }
 
-    void Decay::updateConfidence(objpose::ObjectPose& pose, IceUtil::Time now) const
+    void Decay::updateConfidence(objpose::ObjectPose& pose, const DateTime& now) const
     {
         if (pose.attachment or pose.isStatic)
         {
@@ -36,7 +37,7 @@ namespace armarx::armem::server::obj::instance
         }
     }
 
-    void Decay::updateConfidences(objpose::ObjectPoseSeq& objectPoses, IceUtil::Time now) const
+    void Decay::updateConfidences(objpose::ObjectPoseSeq& objectPoses, const DateTime& now) const
     {
         for (objpose::ObjectPose& pose : objectPoses)
         {
@@ -44,7 +45,7 @@ namespace armarx::armem::server::obj::instance
         }
     }
 
-    float Decay::calculateConfidence(IceUtil::Time localization, IceUtil::Time now) const
+    float Decay::calculateConfidence(const DateTime& localization, const DateTime& now) const
     {
         const float duration = static_cast<float>((now - localization).toSecondsDouble());
         if (duration < delaySeconds)
diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Decay.h b/source/RobotAPI/libraries/armem_objects/server/instance/Decay.h
index a44652d55..4adf757da 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/Decay.h
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/Decay.h
@@ -1,9 +1,8 @@
 #pragma once
 
-#include <IceUtil/Time.h>
-
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/core/services/tasks/TaskUtil.h>
+#include <ArmarXCore/core/time/forward_declarations.h>
 
 #include <ArmarXGui/libraries/RemoteGui/Client/Widgets.h>
 
@@ -23,12 +22,12 @@ namespace armarx::armem::server::obj::instance
 
         void defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string& prefix = "decay.");
 
-        void updateConfidence(objpose::ObjectPose& pose, IceUtil::Time now) const;
-        void updateConfidences(objpose::ObjectPoseSeq& objectPoses, IceUtil::Time now) const;
+        void updateConfidence(objpose::ObjectPose& pose, const DateTime& now) const;
+        void updateConfidences(objpose::ObjectPoseSeq& objectPoses, const DateTime& now) const;
 
     private:
 
-        float calculateConfidence(IceUtil::Time localization, IceUtil::Time now) const;
+        float calculateConfidence(const DateTime& localization, const DateTime& now) const;
 
 
     public:
diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/RobotHeadMovement.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/RobotHeadMovement.cpp
index 973cf5a55..d1a6c9167 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/RobotHeadMovement.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/RobotHeadMovement.cpp
@@ -74,27 +74,27 @@ namespace armarx::armem::server::obj::instance
 
     void RobotHeadMovement::movementStarts(long discardIntervalMs)
     {
-        return movementStarts(IceUtil::Time::milliSeconds(discardIntervalMs));
+        return movementStarts(Duration::MilliSeconds(discardIntervalMs));
     }
-    void RobotHeadMovement::movementStarts(IceUtil::Time discardInterval)
+    void RobotHeadMovement::movementStarts(const Duration& discardInterval)
     {
-        discardUpdatesUntil = TimeUtil::GetTime() + discardInterval;
+        discardUpdatesUntil = DateTime::Now() + discardInterval;
     }
     void RobotHeadMovement::movementStops(long discardIntervalMs)
     {
-        return movementStops(IceUtil::Time::milliSeconds(discardIntervalMs));
+        return movementStops(Duration::MilliSeconds(discardIntervalMs));
     }
-    void RobotHeadMovement::movementStops(IceUtil::Time discardInterval)
+    void RobotHeadMovement::movementStops(const Duration& discardInterval)
     {
         if (discardInterval.toMilliSeconds() < 0)
         {
             //  Stop discarding.
-            discardUpdatesUntil = IceUtil::Time::milliSeconds(-1);
+            discardUpdatesUntil = DateTime::Invalid();
         }
         else
         {
             // Basically the same as starting.
-            discardUpdatesUntil = TimeUtil::GetTime() + discardInterval;
+            discardUpdatesUntil = DateTime::Now() + discardInterval;
         }
     }
 
@@ -115,7 +115,7 @@ namespace armarx::armem::server::obj::instance
                 ARMARX_UNEXPECTED_ENUM_VALUE(objpose::HeadMovementAction, input.action);
                 break;
         }
-        output.discardUpdatesUntilMilliSeconds = this->discardUpdatesUntil.toMilliSeconds();
+        output.discardUpdatesUntilMilliSeconds = this->discardUpdatesUntil.toMilliSecondsSinceEpoch();
         return output;
     }
 
@@ -131,7 +131,7 @@ namespace armarx::armem::server::obj::instance
                 // ARMARX_IMPORTANT << "Ignoring pose update because robot head is moving! until " << discardUpdatesUntil;
                 discard.all = true;
             }
-            else if (TimeUtil::GetTime() < discardUpdatesUntil)
+            else if (DateTime::Now() < discardUpdatesUntil)
             {
                 discard.all = true;
                 // ARMARX_IMPORTANT << "Ignoring pose update because robot head has moved until: " << discardUpdatesUntil;
diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/RobotHeadMovement.h b/source/RobotAPI/libraries/armem_objects/server/instance/RobotHeadMovement.h
index b6b0acb6d..b4da82e82 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/RobotHeadMovement.h
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/RobotHeadMovement.h
@@ -4,10 +4,9 @@
 #include <vector>
 #include <optional>
 
-#include <IceUtil/Time.h>
-
 #include <ArmarXCore/interface/observers/ObserverInterface.h>
 #include <ArmarXCore/core/logging/Logging.h>
+#include <ArmarXCore/core/time/DateTime.h>
 #include <ArmarXCore/observers/variant/DatafieldRef.h>
 
 #include <ArmarXGui/libraries/RemoteGui/Client/Widgets.h>
@@ -34,16 +33,16 @@ namespace armarx::armem::server::obj::instance
         bool isMoving() const;
 
         void movementStarts(long discardIntervalMs);
-        void movementStarts(IceUtil::Time discardInterval);
+        void movementStarts(const Duration& discardInterval);
         void movementStops(long discardIntervalMs);
-        void movementStops(IceUtil::Time discardInterval);
+        void movementStops(const Duration& discardInterval);
 
         objpose::SignalHeadMovementOutput signalHeadMovement(const objpose::SignalHeadMovementInput& input);
 
 
         struct Discard
         {
-            std::optional<IceUtil::Time> updatesUntil;
+            std::optional<DateTime> updatesUntil;
             bool all = false;
         };
         Discard getDiscard();
@@ -60,7 +59,7 @@ namespace armarx::armem::server::obj::instance
 
         KinematicUnitObserverInterfacePrx kinematicUnitObserver;
         std::vector<DatafieldRefPtr> jointVelocitiesDatafields;
-        IceUtil::Time discardUpdatesUntil = IceUtil::Time::seconds(-1);
+        DateTime discardUpdatesUntil = DateTime::Invalid();
 
         DebugObserverInterfacePrx debugObserver;
 
diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp
index 351d0f5ac..4d0218e58 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp
@@ -29,21 +29,19 @@
 
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/core/system/cmake/CMakePackageFinder.h>
-#include <ArmarXCore/core/time/TimeUtil.h>
+#include <ArmarXCore/core/time/DateTime.h>
+#include <ArmarXCore/core/time/ice_conversions.h>
 
 #include <SimoxUtility/algorithm/get_map_keys_values.h>
 #include <SimoxUtility/algorithm/string.h>
 #include <SimoxUtility/json.h>
 #include <SimoxUtility/math/pose/pose.h>
 
-
 #include <Eigen/Geometry>
-#include <IceUtil/Time.h>
 
 #include <sstream>
 
 
-
 namespace armarx::armem::server::obj::instance
 {
 
@@ -148,7 +146,7 @@ namespace armarx::armem::server::obj::instance
         stats.numUpdated = 0;
         for (const objpose::data::ProvidedObjectPose& provided : providedPoses)
         {
-            const Time timestamp = Time::microSeconds(provided.timestampMicroSeconds);
+            const Time timestamp = fromIce<Time>(provided.timestamp);
 
             // Check whether we have an old snapshot for this object.
             std::optional<objpose::ObjectPose> previousPose;
@@ -230,7 +228,7 @@ namespace armarx::armem::server::obj::instance
 
     void Segment::commitObjectPoses(const ObjectPoseSeq& objectPoses, const std::string& providerName)
     {
-        Time now = TimeUtil::GetTime();
+        Time now = Time::Now();
 
         ARMARX_CHECK_NOT_NULL(segmentPtr);
         const MemoryID coreSegmentID = segmentPtr->id();
@@ -269,7 +267,7 @@ namespace armarx::armem::server::obj::instance
 
 
     objpose::ObjectPoseMap
-    Segment::getObjectPoses(IceUtil::Time now)
+    Segment::getObjectPoses(const DateTime& now)
     {
         ObjectPoseMap objectPoses = getLatestObjectPoses();
         updateObjectPoses(objectPoses, now);
@@ -281,7 +279,7 @@ namespace armarx::armem::server::obj::instance
     objpose::ObjectPoseMap
     Segment::getObjectPosesByProvider(
         const std::string& providerName,
-        IceUtil::Time now)
+        const DateTime& now)
     {
         ARMARX_CHECK_NOT_NULL(segmentPtr);
         ObjectPoseMap objectPoses = getLatestObjectPoses(segmentPtr->getProviderSegment(providerName));
@@ -325,7 +323,7 @@ namespace armarx::armem::server::obj::instance
     }
 
 
-    void Segment::updateObjectPoses(ObjectPoseMap& objectPoses, IceUtil::Time now)
+    void Segment::updateObjectPoses(ObjectPoseMap& objectPoses, const DateTime& now)
     {
         bool agentSynchronized = false;
 
@@ -338,7 +336,7 @@ namespace armarx::armem::server::obj::instance
 
     void Segment::updateObjectPoses(
         ObjectPoseMap& objectPoses,
-        IceUtil::Time now,
+        const DateTime& now,
         VirtualRobot::RobotPtr agent,
         bool& agentSynchronized) const
     {
@@ -351,7 +349,7 @@ namespace armarx::armem::server::obj::instance
 
     void Segment::updateObjectPose(
         ObjectPose& objectPose,
-        IceUtil::Time now,
+        const DateTime& now,
         VirtualRobot::RobotPtr agent,
         bool& agentSynchronized) const
     {
@@ -493,7 +491,7 @@ namespace armarx::armem::server::obj::instance
     ::armarx::armem::articulated_object::ArticulatedObjects
     Segment::getArticulatedObjects()
     {
-        objpose::ObjectPoseMap objectPoses = getObjectPoses(IceUtil::Time::now());
+        objpose::ObjectPoseMap objectPoses = getObjectPoses(Time::Now());
 
         ARMARX_INFO << "Found " << objectPoses.size() << " object poses";
 
@@ -507,7 +505,6 @@ namespace armarx::armem::server::obj::instance
             articulatedObject.instance = objectPose.objectID.instanceName();
             articulatedObject.timestamp = objectPose.timestamp;
 
-
             ARMARX_INFO << "Object id is " << objectId.str();
             ARMARX_INFO << "Object id for objectPose is " << objectPose.objectID.str();
 
@@ -537,8 +534,6 @@ namespace armarx::armem::server::obj::instance
                 continue;
             }
 
-
-
             if (not articulatedObject.config.jointMap.empty())
             {
                 objects.push_back(articulatedObject);
@@ -578,7 +573,7 @@ namespace armarx::armem::server::obj::instance
     objpose::AttachObjectToRobotNodeOutput
     Segment::attachObjectToRobotNode(const objpose::AttachObjectToRobotNodeInput& input)
     {
-        const armem::Time now = armem::Time::now();
+        const armem::Time now = armem::Time::Now();
 
         objpose::AttachObjectToRobotNodeOutput output;
         output.success = false;  // We are not successful until proven otherwise.
@@ -670,7 +665,7 @@ namespace armarx::armem::server::obj::instance
     Segment::detachObjectFromRobotNode(
         const objpose::DetachObjectFromRobotNodeInput& input)
     {
-        const armem::Time now = armem::Time::now();
+        const armem::Time now = armem::Time::Now();
 
         ObjectID objectID = armarx::fromIce(input.objectID);
         std::string providerName = input.providerName;
@@ -720,7 +715,7 @@ namespace armarx::armem::server::obj::instance
     {
         ARMARX_CHECK_NOT_NULL(segmentPtr);
 
-        const armem::Time now = armem::Time::now();
+        const armem::Time now = armem::Time::Now();
 
         objpose::DetachAllObjectsFromRobotNodesOutput output;
         output.numDetached = 0;
@@ -867,7 +862,7 @@ namespace armarx::armem::server::obj::instance
         std::string filename = _filename;
 
         filename = simox::alg::replace_all(filename, timestampPlaceholder,
-                                           Time::now().toString("%Y-%m-%d_%H-%M-%S"));
+                                           Time::Now().toString("%Y-%m-%d_%H-%M-%S"));
         if (not simox::alg::ends_with(filename, ".json"))
         {
             filename += ".json";
@@ -925,7 +920,7 @@ namespace armarx::armem::server::obj::instance
 
     void Segment::commitSceneSnapshot(const armarx::objects::Scene& scene, const std::string& sceneName)
     {
-        const Time now = TimeUtil::GetTime();
+        const Time now = Time::Now();
         std::map<ObjectID, int> idCounters;
 
         objpose::ObjectPoseSeq objectPoses;
diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.h b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.h
index 24f80704f..da97aac84 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.h
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.h
@@ -16,6 +16,7 @@
 #include <RobotAPI/libraries/ArmarXObjects/ObjectID.h>
 #include <RobotAPI/libraries/ArmarXObjects/ObjectPose.h>
 #include <RobotAPI/libraries/ArmarXObjects/ObjectFinder.h>
+#include <RobotAPI/libraries/ArmarXObjects/forward_declarations.h>
 
 #include <RobotAPI/libraries/armem/server/wm/memory_definitions.h>
 #include <RobotAPI/libraries/armem/server/segment/SpecializedSegment.h>
@@ -24,10 +25,6 @@
 #include "Decay.h"
 
 
-namespace armarx::objects
-{
-    struct Scene;
-}
 namespace armarx::armem::arondto
 {
     class ObjectInstance;
@@ -68,8 +65,8 @@ namespace armarx::armem::server::obj::instance
         void commitObjectPoses(const ObjectPoseSeq& objectPoses, const std::string& providerName = "");
 
 
-        objpose::ObjectPoseMap getObjectPoses(IceUtil::Time now);
-        objpose::ObjectPoseMap getObjectPosesByProvider(const std::string& providerName, IceUtil::Time now);
+        objpose::ObjectPoseMap getObjectPoses(const DateTime& now);
+        objpose::ObjectPoseMap getObjectPosesByProvider(const std::string& providerName, const DateTime& now);
 
         wm::Entity* findObjectEntity(const ObjectID& objectID, const std::string& providerName = "");
         std::optional<simox::OrientedBoxf> getObjectOOBB(const ObjectID& id);
@@ -115,16 +112,16 @@ namespace armarx::armem::server::obj::instance
 
         void updateObjectPoses(
             ObjectPoseMap& objectPoses,
-            IceUtil::Time now);
+            const DateTime& now);
         void updateObjectPoses(
             ObjectPoseMap& objectPoses,
-            IceUtil::Time now,
+            const DateTime& now,
             VirtualRobot::RobotPtr agent,
             bool& agentSynchronized
         ) const;
         void updateObjectPose(
             ObjectPose& objectPose,
-            IceUtil::Time now,
+            const DateTime& now,
             VirtualRobot::RobotPtr agent,
             bool& agentSynchronized
         ) const;
diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
index ef00638e9..b7f7a6308 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
@@ -218,7 +218,7 @@ namespace armarx::armem::server::obj::instance
     {
         TIMING_START(tGetObjectPoses);
 
-        const IceUtil::Time now = TimeUtil::GetTime();
+        const Time now = Time::Now();
         const objpose::ObjectPoseSeq objectPoses = segment.doLocked([this, &now]()
         {
             return simox::alg::get_values(segment.getObjectPoses(now));
@@ -242,7 +242,7 @@ namespace armarx::armem::server::obj::instance
     {
         TIMING_START(GetObjectPoses);
 
-        const IceUtil::Time now = TimeUtil::GetTime();
+        const Time now = Time::Now();
         const objpose::ObjectPoseSeq objectPoses = segment.doLocked([this, &now, &providerName]()
         {
             return simox::alg::get_values(segment.getObjectPosesByProvider(providerName, now));
@@ -451,7 +451,7 @@ namespace armarx::armem::server::obj::instance
 
                     segment.doLocked([this, &objectPoses, &objectFinder]()
                     {
-                        const IceUtil::Time now = TimeUtil::GetTime();
+                        const Time now = Time::Now();
 
                         // Also include decayed objects in result
                         // Store original setting.
-- 
GitLab