From 371f443fe380b4d1645c86996371b61c1335940b Mon Sep 17 00:00:00 2001 From: Federico Mandelli <federicomandelli@skywarder.eu> Date: Wed, 2 Aug 2023 12:04:48 +0200 Subject: [PATCH] [Bugfixes] Fixed bugs in FMM and NASController --- src/boards/Parafoil/Configs/NASConfig.h | 2 +- .../FlightModeManager/FlightModeManager.cpp | 2 +- .../StateMachines/NASController/NASController.cpp | 14 +++++--------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/boards/Parafoil/Configs/NASConfig.h b/src/boards/Parafoil/Configs/NASConfig.h index 9c9f381ae..408ff859a 100644 --- a/src/boards/Parafoil/Configs/NASConfig.h +++ b/src/boards/Parafoil/Configs/NASConfig.h @@ -37,7 +37,7 @@ constexpr uint32_t UPDATE_PERIOD = 20; // [ms] constexpr int CALIBRATION_SAMPLES_COUNT = 20; constexpr int CALIBRATION_SLEEP_TIME = 100; // [ms] -constexpr float ACCELERATION_THRESHOLD = 0.5; // [m/s^2] +constexpr float ACCELERATION_THRESHOLD = 2; // [m/s^2] static const Boardcore::NASConfig config = { UPDATE_PERIOD / 1000.0, // T diff --git a/src/boards/Parafoil/StateMachines/FlightModeManager/FlightModeManager.cpp b/src/boards/Parafoil/StateMachines/FlightModeManager/FlightModeManager.cpp index b372abadc..6d9c8609f 100644 --- a/src/boards/Parafoil/StateMachines/FlightModeManager/FlightModeManager.cpp +++ b/src/boards/Parafoil/StateMachines/FlightModeManager/FlightModeManager.cpp @@ -274,7 +274,7 @@ State FlightModeManager::state_disarmed(const Event& event) case EV_ENTRY: { logStatus(FlightModeManagerState::DISARMED); - EventBroker::getInstance().post(FLIGHT_DISARMED, TOPIC_FMM); + EventBroker::getInstance().post(FLIGHT_DISARMED, TOPIC_FLIGHT); return transition( &FlightModeManager::state_flying); // the parafoil is always diff --git a/src/boards/Parafoil/StateMachines/NASController/NASController.cpp b/src/boards/Parafoil/StateMachines/NASController/NASController.cpp index eeddbe5fc..17573d6c5 100644 --- a/src/boards/Parafoil/StateMachines/NASController/NASController.cpp +++ b/src/boards/Parafoil/StateMachines/NASController/NASController.cpp @@ -74,23 +74,19 @@ void NASController::update() nas.correctGPS(gpsData); nas.correctBaro(pressureData.pressure); - // Correct with accelerometer if the acceleration is in specs - Vector3f acceleration = static_cast<AccelerometerData>(imuData); - if (accelerationValid && - (acceleration.norm() > (9.8 + ACCELERATION_THRESHOLD) || - acceleration.norm() < (9.8 - ACCELERATION_THRESHOLD))) - accelerationValid = false; if (accelerationValid) nas.correctAcc(imuData); - if (!accelerationValid && - (acceleration.norm() < (9.8 + ACCELERATION_THRESHOLD) || - acceleration.norm() > (9.8 - ACCELERATION_THRESHOLD))) + // Correct with accelerometer if the acceleration is in specs + Vector3f acceleration = static_cast<AccelerometerData>(imuData); + if (acceleration.norm() < (9.8 + (ACCELERATION_THRESHOLD) / 2) && + acceleration.norm() > (9.8 - (ACCELERATION_THRESHOLD) / 2)) { accSampleAfterSpike++; } else { + accelerationValid = false; accSampleAfterSpike = 0; } if (accSampleAfterSpike > 50) -- GitLab