From de7ab43ea0f4261155303c47d73500b9d98bde58 Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Thu, 30 Nov 2023 10:49:44 +0100
Subject: [PATCH] Map timestamp from realtime part (MONOTONIC RAW) to
 epoch-timestamp (REAL_TIME)

---
 .../RobotUnit/RobotUnitModules/RobotUnitModulePublisher.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModulePublisher.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModulePublisher.cpp
index 4b9a12a21..c96a83d54 100644
--- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModulePublisher.cpp
+++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModulePublisher.cpp
@@ -35,6 +35,7 @@
 #include <RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleDevices.h>
 #include <RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.h>
 #include <RobotAPI/components/units/RobotUnit/Units/RobotUnitSubUnit.h>
+#include <RobotAPI/components/units/RobotUnit/util/NonRtTiming.h>
 
 namespace armarx::RobotUnitModule
 {
@@ -632,7 +633,10 @@ namespace armarx::RobotUnitModule
         const auto requestedJointControllers =
             _module<ControlThreadDataBuffer>().copyRequestedJointControllers();
 
-        lastControlThreadTimestamp = controlThreadOutputBuffer.sensorValuesTimestamp;
+        // controlThreadOutputBuffer.sensorValuesTimestamp is in MONOTONIC_RAW (not relative to epoch).
+        // We have to map it to be relative to epoch (REAL_TIME).
+        lastControlThreadTimestamp =
+            armarx::mapRtTimestampToNonRtTimestamp(controlThreadOutputBuffer.sensorValuesTimestamp);
 
         const bool publishToObserver = !(publishIterationCount % debugObserverSkipIterations);
         //publish publishing meta state
-- 
GitLab