diff --git a/.vscode/settings.json b/.vscode/settings.json
index 58ff402a73cbab01aec46466db0a41bea2048ed4..6c2786aa3dce9c51c5660c36873f7ab01e2a8e4b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -114,7 +114,9 @@
         "xtr1common": "cpp",
         "xtree": "cpp",
         "xutility": "cpp",
-        "BiasCorrector.C": "cpp"
+        "BiasCorrector.C": "cpp",
+        "numbers": "cpp",
+        "semaphore": "cpp"
     },
     "editor.formatOnSave": true,
     "[c]": {
diff --git a/skyward-boardcore b/skyward-boardcore
index b692844ee50a2bd7619ee7be202a1d9641fa72f8..fdc5f4e20e937dfa3257493095300a2663b8e0c1 160000
--- a/skyward-boardcore
+++ b/skyward-boardcore
@@ -1 +1 @@
-Subproject commit b692844ee50a2bd7619ee7be202a1d9641fa72f8
+Subproject commit fdc5f4e20e937dfa3257493095300a2663b8e0c1
diff --git a/src Lynx/boards/DeathStack/NavigationAttitudeSystem/NAS.h b/src Lynx/boards/DeathStack/NavigationAttitudeSystem/NAS.h
index 6c9a7b8120f304b75a1bc490d3c0031a489487fb..8924ed9abaff5846d324324333e3cdf8758c45b7 100644
--- a/src Lynx/boards/DeathStack/NavigationAttitudeSystem/NAS.h	
+++ b/src Lynx/boards/DeathStack/NavigationAttitudeSystem/NAS.h	
@@ -212,19 +212,19 @@ NASData NAS<IMU, Press, GPS>::sampleImpl()
 
     // update ekf with new accel and gyro measures
     if (imu_data.accelerationTimestamp != last_accel_timestamp &&
-        imu_data.angularVelocityTimestamp != last_gyro_timestamp)
+        imu_data.angularSpeedTimestamp != last_gyro_timestamp)
     {
         last_accel_timestamp = imu_data.accelerationTimestamp;
-        last_gyro_timestamp  = imu_data.angularVelocityTimestamp;
+        last_gyro_timestamp  = imu_data.angularSpeedTimestamp;
 
         Eigen::Vector3f accel_readings(imu_data.accelerationX,
                                        imu_data.accelerationY,
                                        imu_data.accelerationZ);
         filter.predict(accel_readings);
 
-        Eigen::Vector3f gyro_readings(imu_data.angularVelocityX,
-                                      imu_data.angularVelocityY,
-                                      imu_data.angularVelocityZ);
+        Eigen::Vector3f gyro_readings(imu_data.angularSpeedX,
+                                      imu_data.angularSpeedY,
+                                      imu_data.angularSpeedZ);
         filter.predictMEKF(gyro_readings);
     }
 
diff --git a/src Lynx/boards/DeathStack/TelemetriesTelecommands/TmRepository.cpp b/src Lynx/boards/DeathStack/TelemetriesTelecommands/TmRepository.cpp
index 018552592d961483542a06e213e653184ba3e68e..0524c449b89967e56c6bdb84126ec7598c18bb97 100644
--- a/src Lynx/boards/DeathStack/TelemetriesTelecommands/TmRepository.cpp	
+++ b/src Lynx/boards/DeathStack/TelemetriesTelecommands/TmRepository.cpp	
@@ -293,9 +293,9 @@ void TmRepository::update<BMX160Data>(const BMX160Data& t)
     tm_repository.sensors_tm.bmx160_acc_x  = t.accelerationX;
     tm_repository.sensors_tm.bmx160_acc_y  = t.accelerationY;
     tm_repository.sensors_tm.bmx160_acc_z  = t.accelerationZ;
-    tm_repository.sensors_tm.bmx160_gyro_x = t.angularVelocityX;
-    tm_repository.sensors_tm.bmx160_gyro_y = t.angularVelocityY;
-    tm_repository.sensors_tm.bmx160_gyro_z = t.angularVelocityZ;
+    tm_repository.sensors_tm.bmx160_gyro_x = t.angularSpeedX;
+    tm_repository.sensors_tm.bmx160_gyro_y = t.angularSpeedY;
+    tm_repository.sensors_tm.bmx160_gyro_z = t.angularSpeedZ;
     tm_repository.sensors_tm.bmx160_mag_x  = t.magneticFieldX;
     tm_repository.sensors_tm.bmx160_mag_y  = t.magneticFieldY;
     tm_repository.sensors_tm.bmx160_mag_z  = t.magneticFieldZ;
@@ -308,9 +308,9 @@ void TmRepository::update<BMX160WithCorrectionData>(
     tm_repository.bmx_tm.acc_x  = t.accelerationX;
     tm_repository.bmx_tm.acc_y  = t.accelerationY;
     tm_repository.bmx_tm.acc_z  = t.accelerationZ;
-    tm_repository.bmx_tm.gyro_x = t.angularVelocityX;
-    tm_repository.bmx_tm.gyro_y = t.angularVelocityY;
-    tm_repository.bmx_tm.gyro_z = t.angularVelocityZ;
+    tm_repository.bmx_tm.gyro_x = t.angularSpeedX;
+    tm_repository.bmx_tm.gyro_y = t.angularSpeedY;
+    tm_repository.bmx_tm.gyro_z = t.angularSpeedZ;
     tm_repository.bmx_tm.mag_x  = t.magneticFieldX;
     tm_repository.bmx_tm.mag_y  = t.magneticFieldY;
     tm_repository.bmx_tm.mag_z  = t.magneticFieldZ;
@@ -318,9 +318,9 @@ void TmRepository::update<BMX160WithCorrectionData>(
     tm_repository.hr_tm.acc_x  = t.accelerationX;
     tm_repository.hr_tm.acc_y  = t.accelerationY;
     tm_repository.hr_tm.acc_z  = t.accelerationZ;
-    tm_repository.hr_tm.gyro_x = t.angularVelocityX;
-    tm_repository.hr_tm.gyro_y = t.angularVelocityY;
-    tm_repository.hr_tm.gyro_z = t.angularVelocityZ;
+    tm_repository.hr_tm.gyro_x = t.angularSpeedX;
+    tm_repository.hr_tm.gyro_y = t.angularSpeedY;
+    tm_repository.hr_tm.gyro_z = t.angularSpeedZ;
     tm_repository.hr_tm.mag_x  = t.magneticFieldX;
     tm_repository.hr_tm.mag_y  = t.magneticFieldY;
     tm_repository.hr_tm.mag_z  = t.magneticFieldZ;
diff --git a/src Lynx/hardware_in_the_loop/HIL_sensors/HILSensorsData.h b/src Lynx/hardware_in_the_loop/HIL_sensors/HILSensorsData.h
index 27036157c56b9bebd750dd8c8d6bc1b854a90d41..2dfd5f6598e523bfe0c82de10abc502e200ef75d 100644
--- a/src Lynx/hardware_in_the_loop/HIL_sensors/HILSensorsData.h	
+++ b/src Lynx/hardware_in_the_loop/HIL_sensors/HILSensorsData.h	
@@ -53,8 +53,8 @@ struct HILGyroscopeData : public GyroscopeData
 
     void print(std::ostream& os) const
     {
-        os << angularVelocityTimestamp << "," << angularVelocityX << ","
-           << angularVelocityY << "," << angularVelocityZ << "\n";
+        os << angularSpeedTimestamp << "," << angularSpeedX << ","
+           << angularSpeedY << "," << angularSpeedZ << "\n";
     }
 };
 
@@ -90,8 +90,8 @@ struct HILImuData : public HILAccelData,
     {
         os << accelerationTimestamp << "," << accelerationX << ","
            << accelerationY << "," << accelerationZ << ","
-           << angularVelocityTimestamp << "," << angularVelocityX << ","
-           << angularVelocityY << "," << angularVelocityZ << ","
+           << angularSpeedTimestamp << "," << angularSpeedX << ","
+           << angularSpeedY << "," << angularSpeedZ << ","
            << magneticFieldTimestamp << "," << magneticFieldX << ","
            << magneticFieldY << "," << magneticFieldZ << "\n";
     }
diff --git a/src Lynx/mocksensors/MockIMU.h b/src Lynx/mocksensors/MockIMU.h
index 95b7ce716ac8b2ec901d54c91d2239b4adb53d1b..9bd7368c3b9fdd00b5d7f5580049eb4400973ccf 100644
--- a/src Lynx/mocksensors/MockIMU.h	
+++ b/src Lynx/mocksensors/MockIMU.h	
@@ -54,10 +54,10 @@ public:
         data.accelerationY         = ACCEL_DATA[index][1];
         data.accelerationZ         = ACCEL_DATA[index][2];
 
-        data.angularVelocityTimestamp = t;
-        data.angularVelocityX         = GYRO_DATA[index][0];
-        data.angularVelocityY         = GYRO_DATA[index][1];
-        data.angularVelocityZ         = GYRO_DATA[index][2];
+        data.angularSpeedTimestamp = t;
+        data.angularSpeedX         = GYRO_DATA[index][0];
+        data.angularSpeedY         = GYRO_DATA[index][1];
+        data.angularSpeedZ         = GYRO_DATA[index][2];
 
         data.magneticFieldTimestamp = t;
         data.magneticFieldX         = MAG_DATA[index][0];
diff --git a/src Lynx/mocksensors/MockSensorsData.h b/src Lynx/mocksensors/MockSensorsData.h
index de12014dca80e3095f7323e7683518d4b31247e7..2ac35879fd185c648f3f0ff709cf1a14e4ae6fbd 100644
--- a/src Lynx/mocksensors/MockSensorsData.h	
+++ b/src Lynx/mocksensors/MockSensorsData.h	
@@ -39,8 +39,8 @@ struct MockIMUData : public Boardcore::AccelerometerData,
     {
         os << accelerationTimestamp << "," << accelerationX << ","
            << accelerationY << "," << accelerationZ << ","
-           << angularVelocityTimestamp << "," << angularVelocityX << ","
-           << angularVelocityY << "," << angularVelocityZ << ","
+           << angularSpeedTimestamp << "," << angularSpeedX << ","
+           << angularSpeedY << "," << angularSpeedZ << ","
            << magneticFieldTimestamp << "," << magneticFieldX << ","
            << magneticFieldY << "," << magneticFieldZ << "\n";
     }
diff --git a/src/boards/Main/Sensors/Sensors.cpp b/src/boards/Main/Sensors/Sensors.cpp
index 7e082d71a37cc41893944cc60dede4e78686d110..3b35e89d043b8d6b05f366109764b232d329dfab 100644
--- a/src/boards/Main/Sensors/Sensors.cpp
+++ b/src/boards/Main/Sensors/Sensors.cpp
@@ -84,18 +84,18 @@ BMX160WithCorrectionData Sensors::getBMX160WithCorrectionLastSample()
     auto imuData = state.imu->getLastSample();
     BMX160WithCorrectionData data;
 
-    data.accelerationTimestamp    = imuData.accelerationTimestamp;
-    data.accelerationX            = imuData.accelerationX;
-    data.accelerationY            = imuData.accelerationY;
-    data.accelerationZ            = imuData.accelerationZ;
-    data.angularVelocityTimestamp = imuData.angularVelocityTimestamp;
-    data.angularVelocityX         = imuData.angularVelocityX;
-    data.angularVelocityY         = imuData.angularVelocityY;
-    data.angularVelocityZ         = imuData.angularVelocityZ;
-    data.magneticFieldTimestamp   = imuData.magneticFieldTimestamp;
-    data.magneticFieldX           = imuData.magneticFieldX;
-    data.magneticFieldY           = imuData.magneticFieldY;
-    data.magneticFieldZ           = imuData.magneticFieldZ;
+    data.accelerationTimestamp  = imuData.accelerationTimestamp;
+    data.accelerationX          = imuData.accelerationX;
+    data.accelerationY          = imuData.accelerationY;
+    data.accelerationZ          = imuData.accelerationZ;
+    data.angularSpeedTimestamp  = imuData.angularSpeedTimestamp;
+    data.angularSpeedX          = imuData.angularSpeedX;
+    data.angularSpeedY          = imuData.angularSpeedY;
+    data.angularSpeedZ          = imuData.angularSpeedZ;
+    data.magneticFieldTimestamp = imuData.magneticFieldTimestamp;
+    data.magneticFieldX         = imuData.magneticFieldX;
+    data.magneticFieldY         = imuData.magneticFieldY;
+    data.magneticFieldZ         = imuData.magneticFieldZ;
 
     return data;
 #endif
diff --git a/src/boards/Main/TMRepository/TMRepository.cpp b/src/boards/Main/TMRepository/TMRepository.cpp
index 89173c5b4563b59babdc7fd616497395f9a006b9..79a3b98d2a17479702322cf0020afa27901465c9 100644
--- a/src/boards/Main/TMRepository/TMRepository.cpp
+++ b/src/boards/Main/TMRepository/TMRepository.cpp
@@ -250,9 +250,9 @@ mavlink_message_t TMRepository::packSystemTm(SystemTMList tmId, uint8_t msgId,
             tm.acc_x  = imuData.accelerationX;
             tm.acc_y  = imuData.accelerationY;
             tm.acc_z  = imuData.accelerationZ;
-            tm.gyro_x = imuData.angularVelocityX;
-            tm.gyro_y = imuData.angularVelocityY;
-            tm.gyro_z = imuData.angularVelocityZ;
+            tm.gyro_x = imuData.angularSpeedX;
+            tm.gyro_y = imuData.angularSpeedY;
+            tm.gyro_z = imuData.angularSpeedZ;
             tm.mag_x  = imuData.magneticFieldX;
             tm.mag_y  = imuData.magneticFieldY;
             tm.mag_z  = imuData.magneticFieldZ;
@@ -383,9 +383,9 @@ mavlink_message_t TMRepository::packSensorsTm(SensorsTMList sensorId,
             tm.acc_x  = imuData.accelerationX;
             tm.acc_y  = imuData.accelerationY;
             tm.acc_z  = imuData.accelerationZ;
-            tm.gyro_x = imuData.angularVelocityX;
-            tm.gyro_y = imuData.angularVelocityY;
-            tm.gyro_z = imuData.angularVelocityZ;
+            tm.gyro_x = imuData.angularSpeedX;
+            tm.gyro_y = imuData.angularSpeedY;
+            tm.gyro_z = imuData.angularSpeedZ;
             tm.mag_x  = imuData.magneticFieldX;
             tm.mag_y  = imuData.magneticFieldY;
             tm.mag_z  = imuData.magneticFieldZ;
@@ -406,9 +406,9 @@ mavlink_message_t TMRepository::packSensorsTm(SensorsTMList sensorId,
             tm.acc_x  = imuData.accelerationX;
             tm.acc_y  = imuData.accelerationY;
             tm.acc_z  = imuData.accelerationZ;
-            tm.gyro_x = imuData.angularVelocityX;
-            tm.gyro_y = imuData.angularVelocityY;
-            tm.gyro_z = imuData.angularVelocityZ;
+            tm.gyro_x = imuData.angularSpeedX;
+            tm.gyro_y = imuData.angularSpeedY;
+            tm.gyro_z = imuData.angularSpeedZ;
             tm.mag_x  = imuData.magneticFieldX;
             tm.mag_y  = imuData.magneticFieldY;
             tm.mag_z  = imuData.magneticFieldZ;
@@ -429,9 +429,9 @@ mavlink_message_t TMRepository::packSensorsTm(SensorsTMList sensorId,
             tm.acc_x  = imuData.accelerationX;
             tm.acc_y  = imuData.accelerationY;
             tm.acc_z  = imuData.accelerationZ;
-            tm.gyro_x = imuData.angularVelocityX;
-            tm.gyro_y = imuData.angularVelocityY;
-            tm.gyro_z = imuData.angularVelocityZ;
+            tm.gyro_x = imuData.angularSpeedX;
+            tm.gyro_y = imuData.angularSpeedY;
+            tm.gyro_z = imuData.angularSpeedZ;
             tm.mag_x  = imuData.magneticFieldX;
             tm.mag_y  = imuData.magneticFieldY;
             tm.mag_z  = imuData.magneticFieldZ;
diff --git a/src/boards/Parafoil/NASController/NASController.cpp b/src/boards/Parafoil/NASController/NASController.cpp
index c69cb48ce24bfba93a2be971420fb2ce693cce80..dfd868efdc240d72355a57e1838d3c8732e1e533 100644
--- a/src/boards/Parafoil/NASController/NASController.cpp
+++ b/src/boards/Parafoil/NASController/NASController.cpp
@@ -62,9 +62,8 @@ void NASController::update()
     // Extrapolate all the data
     Eigen::Vector3f acceleration(imuData.accelerationX, imuData.accelerationY,
                                  imuData.accelerationZ);
-    Eigen::Vector3f angularVelocity(imuData.angularVelocityX,
-                                    imuData.angularVelocityY,
-                                    imuData.angularVelocityZ);
+    Eigen::Vector3f angularSpeed(imuData.angularSpeedX, imuData.angularSpeedY,
+                                 imuData.angularSpeedZ);
     Eigen::Vector3f magneticField(
         imuData.magneticFieldX, imuData.magneticFieldY, imuData.magneticFieldZ);
 
@@ -81,7 +80,7 @@ void NASController::update()
         Eigen::Vector3f biasAcc(-0.1255, 0.2053, -0.2073);
         acceleration -= biasAcc;
         Eigen::Vector3f bias(-0.0291, 0.0149, 0.0202);
-        angularVelocity -= bias;
+        angularSpeed -= bias;
         Eigen::Vector3f offset(15.9850903462129, -15.6775071377074,
                                -33.8438469147423);
         magneticField -= offset;
@@ -89,7 +88,7 @@ void NASController::update()
     }
 
     // Predict step
-    nas.predictGyro(angularVelocity);
+    nas.predictGyro(angularSpeed);
     if (gpsPos[0] < 1e3 && gpsPos[0] > -1e3 && gpsPos[1] < 1e3 &&
         gpsPos[1] > -1e3)
         nas.predictAcc(acceleration);
diff --git a/src/boards/Parafoil/TMRepository/TMRepository.cpp b/src/boards/Parafoil/TMRepository/TMRepository.cpp
index 650e4c0cdd3de02aa5a7f64d4a02cbb4a46a1b05..501367a7a3815a1de3c6354cb556a729471c66a5 100644
--- a/src/boards/Parafoil/TMRepository/TMRepository.cpp
+++ b/src/boards/Parafoil/TMRepository/TMRepository.cpp
@@ -179,9 +179,9 @@ mavlink_message_t TMRepository::packSystemTm(SystemTMList reqTm)
             tm.acc_x  = imuData.accelerationX;
             tm.acc_y  = imuData.accelerationY;
             tm.acc_z  = imuData.accelerationZ;
-            tm.gyro_x = imuData.angularVelocityX;
-            tm.gyro_y = imuData.angularVelocityY;
-            tm.gyro_z = imuData.angularVelocityZ;
+            tm.gyro_x = imuData.angularSpeedX;
+            tm.gyro_y = imuData.angularSpeedY;
+            tm.gyro_z = imuData.angularSpeedZ;
             tm.mag_x  = imuData.magneticFieldX;
             tm.mag_y  = imuData.magneticFieldY;
             tm.mag_z  = imuData.magneticFieldZ;
@@ -313,9 +313,9 @@ mavlink_message_t TMRepository::packSensorsTm(SensorsTMList reqTm)
             tm.acc_x  = imuData.accelerationX;
             tm.acc_y  = imuData.accelerationY;
             tm.acc_z  = imuData.accelerationZ;
-            tm.gyro_x = imuData.angularVelocityX;
-            tm.gyro_y = imuData.angularVelocityY;
-            tm.gyro_z = imuData.angularVelocityZ;
+            tm.gyro_x = imuData.angularSpeedX;
+            tm.gyro_y = imuData.angularSpeedY;
+            tm.gyro_z = imuData.angularSpeedZ;
             tm.mag_x  = imuData.magneticFieldX;
             tm.mag_y  = imuData.magneticFieldY;
             tm.mag_z  = imuData.magneticFieldZ;
diff --git a/src/boards/Payload/Sensors/Sensors.cpp b/src/boards/Payload/Sensors/Sensors.cpp
index 99617f16397dffcfe2ff6b37aedd2e27728a7689..c9af766b6f1097edc1b22c70d36a36ca5757e58f 100644
--- a/src/boards/Payload/Sensors/Sensors.cpp
+++ b/src/boards/Payload/Sensors/Sensors.cpp
@@ -77,18 +77,18 @@ BMX160WithCorrectionData Sensors::getBMX160WithCorrectionLastSample()
     auto imuData = state.imu->getLastSample();
     BMX160WithCorrectionData data;
 
-    data.accelerationTimestamp    = imuData.accelerationTimestamp;
-    data.accelerationX            = imuData.accelerationX;
-    data.accelerationY            = imuData.accelerationY;
-    data.accelerationZ            = imuData.accelerationZ;
-    data.angularVelocityTimestamp = imuData.angularVelocityTimestamp;
-    data.angularVelocityX         = imuData.angularVelocityX;
-    data.angularVelocityY         = imuData.angularVelocityY;
-    data.angularVelocityZ         = imuData.angularVelocityZ;
-    data.magneticFieldTimestamp   = imuData.magneticFieldTimestamp;
-    data.magneticFieldX           = imuData.magneticFieldX;
-    data.magneticFieldY           = imuData.magneticFieldY;
-    data.magneticFieldZ           = imuData.magneticFieldZ;
+    data.accelerationTimestamp  = imuData.accelerationTimestamp;
+    data.accelerationX          = imuData.accelerationX;
+    data.accelerationY          = imuData.accelerationY;
+    data.accelerationZ          = imuData.accelerationZ;
+    data.angularSpeedTimestamp  = imuData.angularSpeedTimestamp;
+    data.angularSpeedX          = imuData.angularSpeedX;
+    data.angularSpeedY          = imuData.angularSpeedY;
+    data.angularSpeedZ          = imuData.angularSpeedZ;
+    data.magneticFieldTimestamp = imuData.magneticFieldTimestamp;
+    data.magneticFieldX         = imuData.magneticFieldX;
+    data.magneticFieldY         = imuData.magneticFieldY;
+    data.magneticFieldZ         = imuData.magneticFieldZ;
 
     return data;
 #endif
diff --git a/src/boards/Payload/TMRepository/TMRepository.cpp b/src/boards/Payload/TMRepository/TMRepository.cpp
index e548b8878027ad61e8192e315e20f43d580b6730..533871af5177b1b6af964197bd5e066b4ab15fcb 100644
--- a/src/boards/Payload/TMRepository/TMRepository.cpp
+++ b/src/boards/Payload/TMRepository/TMRepository.cpp
@@ -190,9 +190,9 @@ mavlink_message_t TMRepository::packSystemTm(SystemTMList tmId, uint8_t msgId,
             tm.acc_x  = imuData.accelerationX;
             tm.acc_y  = imuData.accelerationY;
             tm.acc_z  = imuData.accelerationZ;
-            tm.gyro_x = imuData.angularVelocityX;
-            tm.gyro_y = imuData.angularVelocityY;
-            tm.gyro_z = imuData.angularVelocityZ;
+            tm.gyro_x = imuData.angularSpeedX;
+            tm.gyro_y = imuData.angularSpeedY;
+            tm.gyro_z = imuData.angularSpeedZ;
             tm.mag_x  = imuData.magneticFieldX;
             tm.mag_y  = imuData.magneticFieldY;
             tm.mag_z  = imuData.magneticFieldZ;
@@ -338,9 +338,9 @@ mavlink_message_t TMRepository::packSensorsTm(SensorsTMList sensorId,
             tm.acc_x  = imuData.accelerationX;
             tm.acc_y  = imuData.accelerationY;
             tm.acc_z  = imuData.accelerationZ;
-            tm.gyro_x = imuData.angularVelocityX;
-            tm.gyro_y = imuData.angularVelocityY;
-            tm.gyro_z = imuData.angularVelocityZ;
+            tm.gyro_x = imuData.angularSpeedX;
+            tm.gyro_y = imuData.angularSpeedY;
+            tm.gyro_z = imuData.angularSpeedZ;
             tm.mag_x  = imuData.magneticFieldX;
             tm.mag_y  = imuData.magneticFieldY;
             tm.mag_z  = imuData.magneticFieldZ;
diff --git a/src/hardware_in_the_loop/HIL_sensors/HILGyroscope.h b/src/hardware_in_the_loop/HIL_sensors/HILGyroscope.h
index 840ace99aba1bfe89fa0f87243098355b59d1596..eff7ffd9dbcb7cdd8362e101a6addac1c848cb65 100644
--- a/src/hardware_in_the_loop/HIL_sensors/HILGyroscope.h
+++ b/src/hardware_in_the_loop/HIL_sensors/HILGyroscope.h
@@ -47,10 +47,10 @@ protected:
          * struct */
         Boardcore::Vec3 matlabData = sensorData->gyro.measures[sampleCounter];
 
-        tempData.angularVelocityX         = matlabData.getX();
-        tempData.angularVelocityY         = matlabData.getY();
-        tempData.angularVelocityZ         = matlabData.getZ();
-        tempData.angularVelocityTimestamp = updateTimestamp();
+        tempData.angularSpeedX         = matlabData.getX();
+        tempData.angularSpeedY         = matlabData.getY();
+        tempData.angularSpeedZ         = matlabData.getZ();
+        tempData.angularSpeedTimestamp = updateTimestamp();
 
         Boardcore::Logger::getInstance().log(tempData);
 
diff --git a/src/hardware_in_the_loop/HIL_sensors/HILImu.h b/src/hardware_in_the_loop/HIL_sensors/HILImu.h
index 81cc2550e02a9fc9fbb4e66c5aa046fd2346b28a..bfd23a688df042b180502f54f49ec798483a6f33 100644
--- a/src/hardware_in_the_loop/HIL_sensors/HILImu.h
+++ b/src/hardware_in_the_loop/HIL_sensors/HILImu.h
@@ -52,19 +52,19 @@ protected:
         tempData.accelerationY = matlabData.getY();
         tempData.accelerationZ = matlabData.getZ();
 
-        matlabData                = sensorData->gyro.measures[sampleCounter];
-        tempData.angularVelocityX = matlabData.getX();
-        tempData.angularVelocityY = matlabData.getY();
-        tempData.angularVelocityZ = matlabData.getZ();
+        matlabData             = sensorData->gyro.measures[sampleCounter];
+        tempData.angularSpeedX = matlabData.getX();
+        tempData.angularSpeedY = matlabData.getY();
+        tempData.angularSpeedZ = matlabData.getZ();
 
         matlabData = sensorData->magnetometer.measures[sampleCounter];
         tempData.magneticFieldX = matlabData.getX();
         tempData.magneticFieldY = matlabData.getY();
         tempData.magneticFieldZ = matlabData.getZ();
 
-        tempData.accelerationTimestamp    = updateTimestamp();
-        tempData.angularVelocityTimestamp = tempData.accelerationTimestamp;
-        tempData.magneticFieldTimestamp   = tempData.accelerationTimestamp;
+        tempData.accelerationTimestamp  = updateTimestamp();
+        tempData.angularSpeedTimestamp  = tempData.accelerationTimestamp;
+        tempData.magneticFieldTimestamp = tempData.accelerationTimestamp;
 
         Boardcore::Logger::getInstance().log(tempData);
 
diff --git a/src/hardware_in_the_loop/HIL_sensors/HILSensorsData.h b/src/hardware_in_the_loop/HIL_sensors/HILSensorsData.h
index 34b9ea3e58f3bcdf30767dff551fabc3f5dedc6e..83840430fc719e6f4c1f4bd1aab3439378b2f7a5 100644
--- a/src/hardware_in_the_loop/HIL_sensors/HILSensorsData.h
+++ b/src/hardware_in_the_loop/HIL_sensors/HILSensorsData.h
@@ -41,13 +41,13 @@ struct HILGyroscopeData : public Boardcore::GyroscopeData
 {
     static std::string header()
     {
-        return "timestamp,angularVelocityX,angularVelocityY,angularVelocityZ\n";
+        return "timestamp,angularSpeedX,angularSpeedY,angularSpeedZ\n";
     }
 
     void print(std::ostream& os) const
     {
-        os << angularVelocityTimestamp << "," << angularVelocityX << ","
-           << angularVelocityY << "," << angularVelocityZ << "\n";
+        os << angularSpeedTimestamp << "," << angularSpeedX << ","
+           << angularSpeedY << "," << angularSpeedZ << "\n";
     }
 };
 
@@ -72,8 +72,8 @@ struct HILImuData : public HILAccelData,
     static std::string header()
     {
         return "accelerationTimestamp,accelerationX,accelerationY,"
-               "accelerationZ,angularVelocityTimestamp,angularVelocityX,"
-               "angularVelocityY,angularVelocityZ,magneticFieldTimestamp,"
+               "accelerationZ,angularSpeedTimestamp,angularSpeedX,"
+               "angularSpeedY,angularSpeedZ,magneticFieldTimestamp,"
                "magneticFieldX,magneticFieldY,magneticFieldZ\n";
     }
 
@@ -81,8 +81,8 @@ struct HILImuData : public HILAccelData,
     {
         os << accelerationTimestamp << "," << accelerationX << ","
            << accelerationY << "," << accelerationZ << ","
-           << angularVelocityTimestamp << "," << angularVelocityX << ","
-           << angularVelocityY << "," << angularVelocityZ << ","
+           << angularSpeedTimestamp << "," << angularSpeedX << ","
+           << angularSpeedY << "," << angularSpeedZ << ","
            << magneticFieldTimestamp << "," << magneticFieldX << ","
            << magneticFieldY << "," << magneticFieldZ << "\n";
     }
diff --git a/src/scripts/logdecoder/Main/logdecoder b/src/scripts/logdecoder/Main/logdecoder
new file mode 100755
index 0000000000000000000000000000000000000000..bde49d6700c2073d17e0434e92c976daf436b04c
Binary files /dev/null and b/src/scripts/logdecoder/Main/logdecoder differ
diff --git a/src/scripts/logdecoder/Payload/logdecoder b/src/scripts/logdecoder/Payload/logdecoder
new file mode 100755
index 0000000000000000000000000000000000000000..faa0d3e4eb4160b85bfd13e92650b18a16d31626
Binary files /dev/null and b/src/scripts/logdecoder/Payload/logdecoder differ
diff --git a/src/tests/Main/calibration/test-bmx160-calibration.cpp b/src/tests/Main/calibration/test-bmx160-calibration.cpp
index 07f5f0b323369418582b7a5a49374f04195fa5f3..40e57dc55447ef5165bfebdb252643d6c366125d 100644
--- a/src/tests/Main/calibration/test-bmx160-calibration.cpp
+++ b/src/tests/Main/calibration/test-bmx160-calibration.cpp
@@ -417,9 +417,8 @@ void calibrateGyroscope()
                 auto data = fifo.at(i);
                 Logger::getInstance().log(data);
 
-                calibrationModel.feed({data.angularVelocityX,
-                                       data.angularVelocityY,
-                                       data.angularVelocityZ});
+                calibrationModel.feed({data.angularSpeedX, data.angularSpeedY,
+                                       data.angularSpeedZ});
                 count++;
             }
         },
diff --git a/src/tests/Main/sensors/test-bmx160.cpp b/src/tests/Main/sensors/test-bmx160.cpp
index 8b99131638fc90af5bd1425e0428d2af73e4898e..71ffc3f11ba1ae03426a7d6774d40386118a4c54 100644
--- a/src/tests/Main/sensors/test-bmx160.cpp
+++ b/src/tests/Main/sensors/test-bmx160.cpp
@@ -110,9 +110,9 @@ int main()
             stats[0].add(data.magneticFieldX);
             stats[1].add(data.magneticFieldY);
             stats[2].add(data.magneticFieldZ);
-            stats[3].add(data.angularVelocityX);
-            stats[4].add(data.angularVelocityY);
-            stats[5].add(data.angularVelocityZ);
+            stats[3].add(data.angularSpeedX);
+            stats[4].add(data.angularSpeedY);
+            stats[5].add(data.angularSpeedZ);
             stats[6].add(data.accelerationX);
             stats[7].add(data.accelerationY);
             stats[8].add(data.accelerationZ);
@@ -163,9 +163,8 @@ int main()
                    data.magneticFieldZ);
 
             printf("Gyr [%.4f s]:\t%.2f\t%.2f\t%.2f\n",
-                   data.angularVelocityTimestamp / 1000000.0f,
-                   data.angularVelocityX, data.angularVelocityY,
-                   data.angularVelocityZ);
+                   data.angularSpeedTimestamp / 1000000.0f, data.angularSpeedX,
+                   data.angularSpeedY, data.angularSpeedZ);
 
             printf("Acc [%.4f s]:\t%.2f\t%.2f\t%.2f\n",
                    data.accelerationTimestamp / 1000000.0f, data.accelerationX,
diff --git a/src/tests/Main/sensors/test-mpu9250.cpp b/src/tests/Main/sensors/test-mpu9250.cpp
index e71fea7f7ce772eea174ea11d99ab013fbf40a97..b84063d87b96fd467982de5209937da24418bc70 100644
--- a/src/tests/Main/sensors/test-mpu9250.cpp
+++ b/src/tests/Main/sensors/test-mpu9250.cpp
@@ -83,9 +83,9 @@ int main()
         stats[0].add(data.magneticFieldX);
         stats[1].add(data.magneticFieldY);
         stats[2].add(data.magneticFieldZ);
-        stats[3].add(data.angularVelocityX);
-        stats[4].add(data.angularVelocityY);
-        stats[5].add(data.angularVelocityZ);
+        stats[3].add(data.angularSpeedX);
+        stats[4].add(data.angularSpeedY);
+        stats[5].add(data.angularSpeedZ);
         stats[6].add(data.accelerationX);
         stats[7].add(data.accelerationY);
         stats[8].add(data.accelerationZ);
@@ -110,9 +110,8 @@ int main()
         MPU9250Data data = mpu9250.getLastSample();
         printf("%lld,%f,%f,%f;", data.accelerationTimestamp, data.accelerationX,
                data.accelerationY, data.accelerationZ);
-        printf("%lld,%f,%f,%f;", data.angularVelocityTimestamp,
-               data.angularVelocityX, data.angularVelocityY,
-               data.angularVelocityZ);
+        printf("%lld,%f,%f,%f;", data.angularSpeedTimestamp, data.angularSpeedX,
+               data.angularSpeedY, data.angularSpeedZ);
         printf("%lld,%f,%f,%f\n", data.magneticFieldTimestamp,
                data.magneticFieldX, data.magneticFieldY, data.magneticFieldZ);
 
diff --git a/src/tests/Main/sensors/test-vn100.cpp b/src/tests/Main/sensors/test-vn100.cpp
index 29489bcd4b3ece61370e7463d85776d334b7df42..4a4eac990383b71113efc74919151e46e76ca6b6 100644
--- a/src/tests/Main/sensors/test-vn100.cpp
+++ b/src/tests/Main/sensors/test-vn100.cpp
@@ -61,8 +61,8 @@ int main()
         printf("[%.2f] acc: %.3f, %.3f, %.3f\n",
                sample.accelerationTimestamp / 1e6, sample.accelerationX,
                sample.accelerationY, sample.accelerationZ);
-        // printf("ang: %.3f, %.3f, %.3f\n", sample.angularVelocityX,
-        //        sample.angularVelocityY, sample.angularVelocityZ);
+        // printf("ang: %.3f, %.3f, %.3f\n", sample.angularSpeedX,
+        //        sample.angularSpeedY, sample.angularSpeedZ);
 
         sensor.sampleRaw();
         // sampleRaw = sensor.getLastRawSample();
diff --git a/src/tests/Main/test-nas.cpp b/src/tests/Main/test-nas.cpp
index d9849ad79ffe3cb3806a07ddea357b08acf63fb2..001e6c69c8285a5b35cd215a1a7d6d19ea070712 100644
--- a/src/tests/Main/test-nas.cpp
+++ b/src/tests/Main/test-nas.cpp
@@ -159,14 +159,14 @@ void step()
 
     Vector3f acceleration(imuData.accelerationX, imuData.accelerationY,
                           imuData.accelerationZ);
-    Vector3f angularVelocity(imuData.angularVelocityX, imuData.angularVelocityY,
-                             imuData.angularVelocityZ);
+    Vector3f angularSpeed(imuData.angularSpeedX, imuData.angularSpeedY,
+                          imuData.angularSpeedZ);
     Vector3f magneticField(imuData.magneticFieldX, imuData.magneticFieldY,
                            imuData.magneticFieldZ);
 
     // Calibration
     {
-        angularVelocity -= Vector3f{-0.00863, 0.00337, 0.01284};
+        angularSpeed -= Vector3f{-0.00863, 0.00337, 0.01284};
 
         Matrix3f A{{0.73726, 0, 0}, {0, 0.59599, 0}, {0, 0, 2.27584}};
         Vector3f b{39.22325, -17.47903, -13.81505};
@@ -195,7 +195,7 @@ void step()
     }
 
     // Predict step
-    nas->predictGyro(angularVelocity);
+    nas->predictGyro(angularSpeed);
     nas->predictAcc(acceleration);
 
     // Correct step
@@ -220,9 +220,9 @@ void print()
     auto nasState = nas->getState();
     // auto imuData  = imu->getLastSample();
 
-    // printf("%f, %f, %f\n", imuData.angularVelocityX,
-    // imuData.angularVelocityY,
-    //        imuData.angularVelocityZ);
+    // printf("%f, %f, %f\n", imuData.angularSpeedX,
+    // imuData.angularSpeedY,
+    //        imuData.angularSpeedZ);
 
     // printf("%f, %f, %f, %f, %f, %f\n", nasState.n, nasState.e, nasState.d,
     //        nasState.vn, nasState.ve, baroData.pressure);