diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
index 4312763b092dec381ecb2560da6059397ff28bba..b0c1bcd23ce3f555c5bd4de65851ce97acea7b8d 100755
--- a/.vscode/c_cpp_properties.json
+++ b/.vscode/c_cpp_properties.json
@@ -247,7 +247,7 @@
             }
         },
         {
-            "name": "stm32f429zi_skyward_death_stack_v3_hil",
+            "name": "stm32f429zi_skyward_death_stack_v3_hil_euroc",
             "cStandard": "c11",
             "cppStandard": "c++11",
             "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
@@ -261,7 +261,8 @@
                 "_MIOSIX",
                 "__cplusplus=201103L",
                 "HILSimulation",
-                "USE_XBEE_TRANSCEIVER"
+                "USE_XBEE_TRANSCEIVER",
+                "EUROC"
             ],
             "includePath": [
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_v3",
diff --git a/.vscode/settings.json b/.vscode/settings.json
index ad21fcf0fffe8a054a310970e7b4d7ea6c7755e9..befe29ab75f0f5a01539623896c81d91a2676341 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -122,11 +122,14 @@
         "Eigen",
         "EXTI",
         "GPIOF",
+        "KALM",
         "kalman",
         "mavlink",
         "miosix",
+        "MPXH",
         "Nidasio",
         "pitot",
+        "Setpoint",
         "stateinitializer",
         "telecommands",
         "UBXGPS",
diff --git a/src/boards/Main/Configs/ActuatorsConfigs.h b/src/boards/Main/Configs/ActuatorsConfigs.h
index f106980a876230ce6e85043153df90cf57f70e0c..0ea215be3d84250da11c19a38934bc59b1fd6c3b 100644
--- a/src/boards/Main/Configs/ActuatorsConfigs.h
+++ b/src/boards/Main/Configs/ActuatorsConfigs.h
@@ -49,7 +49,8 @@ constexpr Boardcore::TimerUtils::Channel ABK_SERVO_PWM_CH =
     Boardcore::TimerUtils::Channel::CHANNEL_1;
 
 // TODO: Change rotation with min and max
-constexpr float ABK_SERVO_ROTATION  = 50;    // [deg]
+constexpr float ABK_SERVO_ROTATION = 66.4;  // [deg] AirBrakes without end stop
+// constexpr float ABK_SERVO_ROTATION  = 65;  // [deg] AirBrakes with end stop
 constexpr float ABK_SERVO_MIN_PULSE = 1410;  // [deg]
 constexpr float ABK_SERVO_MAX_PULSE =
     ABK_SERVO_MIN_PULSE - 10 * ABK_SERVO_ROTATION;  // [us]
diff --git a/src/boards/Main/Configs/AirBrakesControllerConfig.h b/src/boards/Main/Configs/AirBrakesControllerConfig.h
index c658c328ab2f1e3617b5e9d8eaaf34410833bdf5..212da509b2b54ef605f6f82af91b136705d79530 100644
--- a/src/boards/Main/Configs/AirBrakesControllerConfig.h
+++ b/src/boards/Main/Configs/AirBrakesControllerConfig.h
@@ -39,6 +39,8 @@ static constexpr int SHADOW_MODE_TIMEOUT = 5 * 1000;
 static constexpr int SHADOW_MODE_TIMEOUT = 3.5 * 1000;
 #endif
 
+constexpr float MACH_LIMIT = 0.6;
+
 // Vertical speed limit beyond which the airbrakes need to be disabled.
 constexpr float DISABLE_VERTICAL_SPEED_TARGET = 10.0;
 
diff --git a/src/boards/Main/StateMachines/ADAController/ADAController.cpp b/src/boards/Main/StateMachines/ADAController/ADAController.cpp
index d86908816f091aad14986934b688cfc1826ff324..88ec38c416258df242df4c17f8d760b440b0c427 100644
--- a/src/boards/Main/StateMachines/ADAController/ADAController.cpp
+++ b/src/boards/Main/StateMachines/ADAController/ADAController.cpp
@@ -232,6 +232,7 @@ void ADAController::calibrate()
     {
         miosix::PauseKernelLock l;
         ada.setReferenceValues(reference);
+        ada.setKalmanConfig(getADAKalmanConfig());
     }
 
     EventBroker::getInstance().post(ADA_READY, TOPIC_ADA);
@@ -311,10 +312,12 @@ void ADAController::state_calibrating(const Event& event)
     {
         case EV_ENTRY:
         {
+            logStatus(ADAControllerState::CALIBRATING);
+
             // Calibrate the ADA
             calibrate();
 
-            return logStatus(ADAControllerState::CALIBRATING);
+            return;
         }
         case ADA_READY:
         {
diff --git a/src/boards/Main/StateMachines/AirBrakesController/AirBrakesController.cpp b/src/boards/Main/StateMachines/AirBrakesController/AirBrakesController.cpp
index 6ce0c15686310121ad5b5c204b9e45e03ce4bb29..555a2c4c2ef3648fa39986ff1ae2b203e05e5108 100644
--- a/src/boards/Main/StateMachines/AirBrakesController/AirBrakesController.cpp
+++ b/src/boards/Main/StateMachines/AirBrakesController/AirBrakesController.cpp
@@ -61,7 +61,17 @@ bool AirBrakesController::start()
     return ActiveObject::start();
 }
 
-void AirBrakesController::update() { abk.update(); }
+void AirBrakesController::update()
+{
+    auto currentPoint =
+        TimedTrajectoryPoint{NASController::getInstance().getNasState()};
+
+    if (!abk.isRunning() && status.state == AirBrakesControllerState::ACTIVE &&
+        currentPoint.getMac() < MACH_LIMIT)
+        abk.begin();
+
+    abk.update();
+}
 
 AirBrakesControllerStatus AirBrakesController::getStatus()
 {
@@ -146,8 +156,6 @@ void AirBrakesController::state_active(const Event& event)
     {
         case EV_ENTRY:
         {
-            abk.begin();
-
             return logStatus(AirBrakesControllerState::ACTIVE);
         }
         case FLIGHT_APOGEE_DETECTED:
@@ -164,11 +172,12 @@ void AirBrakesController::state_end(const Event& event)
     {
         case EV_ENTRY:
         {
-            abk.end();
+            logStatus(AirBrakesControllerState::END);
 
+            abk.end();
             Actuators::getInstance().setServoAngle(AIRBRAKES_SERVO, 0);
 
-            return logStatus(AirBrakesControllerState::END);
+            return;
         }
     }
 }
@@ -185,9 +194,11 @@ AirBrakesController::AirBrakesController()
           []() { return Sensors::getInstance().state.kalman->getLastSample(); },
 #endif  // HILMockNAS
           TRAJECTORY_SET, AirBrakesControllerConfig::ABK_CONFIG,
-          [](float position) {
-              Actuators::getInstance().setServo(ServosList::AIRBRAKES_SERVO,
-                                                position);
+          [](float position)
+          {
+              //   Actuators::getInstance().setServo(ServosList::AIRBRAKES_SERVO,
+              //                                     position);
+              Actuators::getInstance().setServo(ServosList::AIRBRAKES_SERVO, 1);
           })
 {
     EventBroker::getInstance().subscribe(this, TOPIC_ABK);
diff --git a/src/boards/Main/StateMachines/NASController/NASController.cpp b/src/boards/Main/StateMachines/NASController/NASController.cpp
index 987fbfa976563ca281a3786fa409c1115e4f5d5d..f3ee9c74a9e7842b14e7f692177544f7a0a0c3b7 100644
--- a/src/boards/Main/StateMachines/NASController/NASController.cpp
+++ b/src/boards/Main/StateMachines/NASController/NASController.cpp
@@ -56,7 +56,7 @@ void NASController::update()
             Sensors::getInstance().getBMX160WithCorrectionLastSample();
         auto gpsData      = Sensors::getInstance().getUbxGpsLastSample();
         auto pressureData = Sensors::getInstance().getMS5803LastSample();
-        auto pitotData    = Sensors::getInstance().getPitotData();
+        auto pitotData    = Sensors::getInstance().getPitotLastSample();
 
         // Predict step
         nas.predictGyro(imuData);
@@ -224,10 +224,12 @@ void NASController::state_calibrating(const Event &event)
     {
         case EV_ENTRY:
         {
+            logStatus(NASControllerState::CALIBRATING);
+
             // Calibrate the NAS
             calibrate();
 
-            return logStatus(NASControllerState::CALIBRATING);
+            return;
         }
         case NAS_READY:
         {