Skip to content

Commit

Permalink
AP_InertialSensor: stop sensors converging if motors arm
Browse files Browse the repository at this point in the history
if the user arms within 30s of startup then stop the re-init of the
sensors. This can give less accurate frequency as the sample rate may
not have settled yet, but it is better than doing init of the filters
while the vehicle may be flying

also fix a 32 bit millis wrap
  • Loading branch information
tridge committed Dec 8, 2024
1 parent 8e1acb1 commit 4d31a73
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
9 changes: 9 additions & 0 deletions libraries/AP_InertialSensor/AP_InertialSensor_Backend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,15 @@ void AP_InertialSensor_Backend::_set_gyro_oversampling(uint8_t instance, uint8_t
_imu._gyro_over_sampling[instance] = n;
}

/*
while sensors are converging to get the true sample rate we re-init the notch filters.
stop doing this if the user arms
*/
bool AP_InertialSensor_Backend::sensors_converging() const
{
return AP_HAL::millis64() < HAL_INS_CONVERGANCE_MS && !hal.util->get_soft_armed();
}

/*
update the sensor rate for FIFO sensors
Expand Down
2 changes: 1 addition & 1 deletion libraries/AP_InertialSensor/AP_InertialSensor_Backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ class AP_InertialSensor_Backend
void _update_sensor_rate(uint16_t &count, uint32_t &start_us, float &rate_hz) const __RAMFUNC__;

// return true if the sensors are still converging and sampling rates could change significantly
bool sensors_converging() const { return AP_HAL::millis() < HAL_INS_CONVERGANCE_MS; }
bool sensors_converging() const;

// set accelerometer max absolute offset for calibration
void _set_accel_max_abs_offset(uint8_t instance, float offset);
Expand Down

0 comments on commit 4d31a73

Please sign in to comment.