diff --git a/src/main/java/ipos/project/Functionality/Odometry.java b/src/main/java/ipos/project/Functionality/Odometry.java
index eecd1863e7caa6d28af866f85eb4aa2a99ca2caa..79a92852f11838b147ed191c7c990c331b4a5c79 100644
--- a/src/main/java/ipos/project/Functionality/Odometry.java
+++ b/src/main/java/ipos/project/Functionality/Odometry.java
@@ -23,7 +23,7 @@ public class Odometry {
     private static double timeOfLastCalibration;
     private static double timeLastSensorEvent;
     private static double [] a = new double[]{0, 0, 0};
-    private static double [] a_ori = new double[]{0, 0, 0};
+    private static double [][] a_ori = new double[][]{{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}};
     private static double [] aOffset;
     private static double [] v = new double[]{0, 0, 0};
     private static double [] p = new double[]{0, 0, 0};
@@ -32,23 +32,33 @@ public class Odometry {
     private static double [] pLast = new double[]{0, 0, 0};
     private static double NS2S = 1/1000.0;
     private static boolean calibrated = false;
+    private static int index_ori = 0;
     static SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
 
     //public Odometry(String agentId) {
-      //  this.agentId = agentId;
+    //  this.agentId = agentId;
     //}
     private static Date convertToDateViaInstant(LocalDateTime dateToConvert) {
-        return java.util.Date.from(dateToConvert.atZone(ZoneId.systemDefault()).toInstant());
+        return Date.from(dateToConvert.atZone(ZoneId.systemDefault()).toInstant());
     }
 
     private static LocalDateTime convertToLocalDateTimeViaInstant(Date dateToConvert){
         return dateToConvert.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
     }
+    public static double average(double[] data) {
+        double sum = 0;
+        double average;
 
+        for(int i=0; i < data.length; i++){
+            sum = sum + data[i];
+        }
+        average = sum/data.length;
+        return average;
+    }
     public static void calibrate (PositionEvent event) throws ParseException {
         v = new double[] {0,0,0};
         vLast = new double[] {0,0,0};
-        aOffset = new double[] {a_ori[0],a_ori[1],a_ori[2]};
+        aOffset = new double[] {average(a_ori[0]),average(a_ori[1]),average(a_ori[2])};
         accuracy = 0.03;
         if (event.getPlacing().getPosition().getPoint() instanceof Point3D) {
             pLast[0] = ((Point3D) event.getPlacing().getPosition().getPoint()).getX();
@@ -71,9 +81,13 @@ public class Odometry {
 
         if (calibrated) {
             double dt = (date.getTime() - timeLastSensorEvent) * NS2S;
-            a_ori[0] = imuRawdataEvent.getAcceleration().getX();
-            a_ori[1] = imuRawdataEvent.getAcceleration().getY();
-            a_ori[2] = imuRawdataEvent.getAcceleration().getZ();
+            a_ori[0][index_ori] = imuRawdataEvent.getAcceleration().getX();
+            a_ori[1][index_ori] = imuRawdataEvent.getAcceleration().getY();
+            a_ori[2][index_ori] = imuRawdataEvent.getAcceleration().getZ();
+            index_ori += 1;
+            if (index_ori>9) {
+                index_ori =0;
+            }
             a[0] = imuRawdataEvent.getAcceleration().getX() - aOffset[0];
             a[1] = imuRawdataEvent.getAcceleration().getY() - aOffset[1];
             a[2] = imuRawdataEvent.getAcceleration().getZ() - aOffset[2];
@@ -117,9 +131,13 @@ public class Odometry {
         }
         else {
             timeLastSensorEvent = date.getTime();
-            a_ori[0] = imuRawdataEvent.getAcceleration().getX();
-            a_ori[1] = imuRawdataEvent.getAcceleration().getY();
-            a_ori[2] = imuRawdataEvent.getAcceleration().getZ();
+            a_ori[0][index_ori] = imuRawdataEvent.getAcceleration().getX();
+            a_ori[1][index_ori] = imuRawdataEvent.getAcceleration().getY();
+            a_ori[2][index_ori] = imuRawdataEvent.getAcceleration().getZ();
+            index_ori += 1;
+            if (index_ori>9) {
+                index_ori =0;
+            }
 
             throw new MissingResourceException("Odometry not calibrated!", "Odometry", "calibration");
         }