diff --git a/src/shared/sensors/BMX160/BMX160Data.h b/src/shared/sensors/BMX160/BMX160Data.h
index 62fd29c101a22ce5829afab7d212c40950e6008a..853ce135e6fdddb872871b313855987b7bc1316f 100644
--- a/src/shared/sensors/BMX160/BMX160Data.h
+++ b/src/shared/sensors/BMX160/BMX160Data.h
@@ -53,8 +53,8 @@ struct BMX160Data : public AccelerometerData,
 
     void print(std::ostream& os) const
     {
-        os << accelerationTimestamp << "," << accelerationX.value() << ","
-           << accelerationY.value() << "," << accelerationZ.value() << ","
+        os << accelerationTimestamp << "," << accelerationX << ","
+           << accelerationY << "," << accelerationZ << ","
            << angularSpeedTimestamp << "," << angularSpeedX << ","
            << angularSpeedY << "," << angularSpeedZ << ","
            << magneticFieldTimestamp << "," << magneticFieldX << ","
diff --git a/src/shared/sensors/BMX160/BMX160WithCorrectionData.h b/src/shared/sensors/BMX160/BMX160WithCorrectionData.h
index 0f5aaaa326fe68f36e88bb2ee373b5ba3824578e..c3e22c0948bd80a888934fd8462e375da69b1806 100644
--- a/src/shared/sensors/BMX160/BMX160WithCorrectionData.h
+++ b/src/shared/sensors/BMX160/BMX160WithCorrectionData.h
@@ -76,8 +76,8 @@ struct BMX160WithCorrectionData : public BMX160Data
 
     void print(std::ostream& os) const
     {
-        os << accelerationTimestamp << "," << accelerationX.value() << ","
-           << accelerationY.value() << "," << accelerationZ.value() << ","
+        os << accelerationTimestamp << "," << accelerationX << ","
+           << accelerationY << "," << accelerationZ << ","
            << angularSpeedTimestamp << "," << angularSpeedX << ","
            << angularSpeedY << "," << angularSpeedZ << ","
            << magneticFieldTimestamp << "," << magneticFieldX << ","
diff --git a/src/shared/sensors/H3LIS331DL/H3LIS331DLData.h b/src/shared/sensors/H3LIS331DL/H3LIS331DLData.h
index 27a3f9c2e0fda3ed9a760f160740f3dc7c292346..d3871d843b8e44b830a54d12d82cb4f817d972a7 100644
--- a/src/shared/sensors/H3LIS331DL/H3LIS331DLData.h
+++ b/src/shared/sensors/H3LIS331DL/H3LIS331DLData.h
@@ -49,8 +49,8 @@ struct H3LIS331DLData : public AccelerometerData
 
     void print(std::ostream& os) const
     {
-        os << accelerationTimestamp << "," << accelerationX.value() << ","
-           << accelerationY.value() << "," << accelerationZ.value() << "\n";
+        os << accelerationTimestamp << "," << accelerationX << ","
+           << accelerationY << "," << accelerationZ << "\n";
     }
 };
 
diff --git a/src/shared/sensors/LIS331HH/LIS331HHData.h b/src/shared/sensors/LIS331HH/LIS331HHData.h
index 31bef1fb2e1cf34e6892a675288804ecd0dec71f..72a57214106d2c3475abe59e9baef9b0701ef2c8 100644
--- a/src/shared/sensors/LIS331HH/LIS331HHData.h
+++ b/src/shared/sensors/LIS331HH/LIS331HHData.h
@@ -39,8 +39,8 @@ struct LIS331HHData : public AccelerometerData
 
     void print(std::ostream& os) const
     {
-        os << accelerationTimestamp << "," << accelerationX.value() << ","
-           << accelerationY.value() << "," << accelerationZ.value() << "\n";
+        os << accelerationTimestamp << "," << accelerationX << ","
+           << accelerationY << "," << accelerationZ << "\n";
     }
 };
 
diff --git a/src/shared/sensors/LIS3DSH/LIS3DSHData.h b/src/shared/sensors/LIS3DSH/LIS3DSHData.h
index f2dfa77aeb4c57889366b0c9294e7f0a7ff32d13..ab382c5e82f29515cece58db97c52ee38d578a9a 100644
--- a/src/shared/sensors/LIS3DSH/LIS3DSHData.h
+++ b/src/shared/sensors/LIS3DSH/LIS3DSHData.h
@@ -60,8 +60,8 @@ struct LIS3DSHData : public AccelerometerData, public TemperatureData
 
     void print(std::ostream& os) const
     {
-        os << accelerationTimestamp << "," << accelerationX.value() << ","
-           << accelerationY.value() << "," << accelerationZ.value() << ","
+        os << accelerationTimestamp << "," << accelerationX << ","
+           << accelerationY << "," << accelerationZ << ","
            << temperatureTimestamp << "," << temperature << "\n";
     }
 };
diff --git a/src/shared/sensors/LSM6DSRX/LSM6DSRXData.h b/src/shared/sensors/LSM6DSRX/LSM6DSRXData.h
index 268df0354242893d2222dabd451fc18a6b863b21..ddbe5789eb9b49d6cc7eaa96e74c02691dda49aa 100644
--- a/src/shared/sensors/LSM6DSRX/LSM6DSRXData.h
+++ b/src/shared/sensors/LSM6DSRX/LSM6DSRXData.h
@@ -45,8 +45,8 @@ struct LSM6DSRXData : public AccelerometerData, public GyroscopeData
 
     void print(std::ostream& os) const
     {
-        os << accelerationTimestamp << "," << accelerationX.value() << ","
-           << accelerationY.value() << "," << accelerationZ.value() << ","
+        os << accelerationTimestamp << "," << accelerationX << ","
+           << accelerationY << "," << accelerationZ << ","
            << angularSpeedTimestamp << "," << angularSpeedX << ","
            << angularSpeedY << "," << angularSpeedZ << "\n";
     }
diff --git a/src/shared/sensors/MPU9250/MPU9250Data.h b/src/shared/sensors/MPU9250/MPU9250Data.h
index dd526fa50522e5d119154009f9355e23fe11842f..d9d23cb04e3e5ca82895b6037c5c3eec8308c35b 100644
--- a/src/shared/sensors/MPU9250/MPU9250Data.h
+++ b/src/shared/sensors/MPU9250/MPU9250Data.h
@@ -56,8 +56,8 @@ struct MPU9250Data : public AccelerometerData,
 
     void print(std::ostream& os) const
     {
-        os << accelerationTimestamp << "," << accelerationX.value() << ","
-           << accelerationY.value() << "," << accelerationZ.value() << ","
+        os << accelerationTimestamp << "," << accelerationX << ","
+           << accelerationY << "," << accelerationZ << ","
            << angularSpeedTimestamp << "," << angularSpeedX << ","
            << angularSpeedY << "," << angularSpeedZ << ","
            << magneticFieldTimestamp << "," << magneticFieldX << ","
diff --git a/src/shared/sensors/SensorData.h b/src/shared/sensors/SensorData.h
index 5d172388fecb0e430db01fc6c9e9827272abe12d..2450d8921573c2993fd1767651d8223394c16d97 100644
--- a/src/shared/sensors/SensorData.h
+++ b/src/shared/sensors/SensorData.h
@@ -139,8 +139,8 @@ struct AccelerometerData
 
     void print(std::ostream& os) const
     {
-        os << accelerationTimestamp << "," << accelerationX.value() << ","
-           << accelerationY.value() << "," << accelerationZ.value() << "\n";
+        os << accelerationTimestamp << "," << accelerationX << ","
+           << accelerationY << "," << accelerationZ << "\n";
     }
 
     operator Eigen::Vector3f() const
diff --git a/src/shared/sensors/VN100/VN100Data.h b/src/shared/sensors/VN100/VN100Data.h
index 0f759d95773657f63c36a34ba5df81124adf314c..69edf97587ce8849be6c1661bfe0454da1425433 100644
--- a/src/shared/sensors/VN100/VN100Data.h
+++ b/src/shared/sensors/VN100/VN100Data.h
@@ -86,8 +86,8 @@ struct VN100Data : public QuaternionData,
            << "," << quaternionZ << "," << quaternionW << ","
            << magneticFieldTimestamp << "," << magneticFieldX << ","
            << magneticFieldY << "," << magneticFieldZ << ","
-           << accelerationTimestamp << "," << accelerationX.value() << ","
-           << accelerationY.value() << "," << accelerationZ.value() << ","
+           << accelerationTimestamp << "," << accelerationX << ","
+           << accelerationY << "," << accelerationZ << ","
            << angularSpeedTimestamp << "," << angularSpeedX << ","
            << angularSpeedY << "," << angularSpeedZ << ","
            << temperatureTimestamp << "," << temperature << ","
diff --git a/src/shared/units/Units.h b/src/shared/units/Units.h
index 6e59cbcd052c0cf7835dafe233871f686542b8b7..1ace1725ec29ae62c77a2c3941b65c68685c9a84 100644
--- a/src/shared/units/Units.h
+++ b/src/shared/units/Units.h
@@ -22,8 +22,7 @@
 
 #pragma once
 
-#include <utils/Debug.h>
-
+#include <ostream>
 #include <ratio>
 #include <typeinfo>
 
@@ -77,6 +76,14 @@ private:
     float _value;
 };
 
+// Logging
+template <UnitKind Kind, class Ratio>
+std::ostream &operator<<(std::ostream &os, const Unit<Kind, Ratio> &unit)
+{
+    os << unit.template value<Ratio>();
+    return os;
+}
+
 // Sum, Subtraction, Multiplication, Division
 template <UnitKind Kind, class Ratio>
 constexpr auto operator+(const Unit<Kind, Ratio> &lhs,