diff --git a/src/modules/sensors/vehicle_imu/VehicleIMU.cpp b/src/modules/sensors/vehicle_imu/VehicleIMU.cpp index 5d231a2862..a3626e7d43 100644 --- a/src/modules/sensors/vehicle_imu/VehicleIMU.cpp +++ b/src/modules/sensors/vehicle_imu/VehicleIMU.cpp @@ -141,11 +141,17 @@ void VehicleIMU::Run() { const hrt_abstime now_us = hrt_absolute_time(); + ParametersUpdate(); + + if (!_accel_calibration.enabled() || !_gyro_calibration.enabled()) { + _sensor_gyro_sub.unregisterCallback(); + ScheduleDelayed(1_s); + return; + } + // backup schedule ScheduleDelayed(_backup_schedule_timeout_us); - ParametersUpdate(); - // check vehicle status for changes to armed state if (_vehicle_control_mode_sub.updated()) { vehicle_control_mode_s vehicle_control_mode; @@ -155,10 +161,6 @@ void VehicleIMU::Run() } } - if (!_accel_calibration.enabled() || !_gyro_calibration.enabled()) { - return; - } - // reset data gap monitor _data_gap = false; @@ -622,6 +624,7 @@ void VehicleIMU::UpdateIntegratorConfiguration() if (gyro_integral_samples % n == 0) { _sensor_gyro_sub.set_required_updates(n); + _sensor_gyro_sub.registerCallback(); _intervals_configured = true; _update_integrator_config = false;