Commit Graph

375 Commits

Author SHA1 Message Date
Andrew Tridgell b3ed4f4b12 AP_InertialSensor: fixed handling of more than 3 accel/gyro instances
allows for first 3 to work without a panic
2021-04-13 09:36:52 +10:00
Andrew Tridgell dcf6bcea6e AP_InertialSensor: removed assert calls
these waste flash space and do not do us any good
2021-03-25 14:03:40 +11:00
Peter Barker 2b0bf45891 AP_InertialSensor: remove separate calls to get delta-times for vel and ang 2021-03-13 11:29:29 +11:00
Andrew Tridgell 25dd08a1fd AP_InertialSensor: added force_save_calibration() 2021-02-15 07:24:40 +11:00
Andrew Tridgell 2843cfa42d AP_InertialSensor: use mavlink statustext for cal info 2021-01-25 16:24:50 +11:00
Andrew Tridgell b542f947f7 AP_InertialSensor: don't mark accels as calibrating during trim
we need the accels with offsets applied when doing accel trim
2021-01-25 16:24:50 +11:00
Andrew Tridgell 3ff71c7814 AP_InertialSensor: changes from review feedback 2021-01-21 13:09:21 +11:00
Andrew Tridgell ffe20f7958 AP_InertialSensor: use a fixed reference temperature of 35C
this allows us to timeout the calibration when the temperature stops
rising as the polynomial no longer depends on the maximum temperature
2021-01-21 13:09:21 +11:00
Andrew Tridgell dc58b0b950 AP_InertialSensor: changes from review feedback
thanks Sid!
2021-01-21 13:09:21 +11:00
Andrew Tridgell c9a83c8127 AP_InertialSensor: added INS_TCAL_OPTIONS
make persistent params optional, and allow save of accelcal
2021-01-21 13:09:21 +11:00
Andrew Tridgell 8caea96ab1 AP_InertialSensor: start auto-learning at boot
This makes it easier to setup the params. The ENABLE=2 value only
takes effect at boot
2021-01-21 13:09:21 +11:00
Andrew Tridgell 7cb7ad3636 AP_InertialSensor: fixed build error 2021-01-21 13:09:21 +11:00
Andrew Tridgell 3fb720354d AP_InertialSensor: added notify events for temperature calibration 2021-01-21 13:09:21 +11:00
Andrew Tridgell 7921e042f1 AP_InertialSensor: added IMU temperature calibration support
this adds parameters that can be setup by an external script for
compensating for temperature variation in gyros and accels using a 3rd
order polynomial
2021-01-21 13:09:21 +11:00
Peter Barker 239b09fb34 AP_InertialSensor: add simulator for ICM40609 2021-01-12 17:43:36 +11:00
Andrew Tridgell 957842f7eb AP_InertialSensor: added support for v3 Invensense sensors
starting with ICM-40609, ICM-42688 and ICM-42605
2021-01-11 14:43:35 +11:00
Andrew Tridgell b74e5c0e2f AP_InertialSensor: added ExternalAHRS backend 2021-01-05 21:13:12 +11:00
Andrew Tridgell 4f176c25de AP_InertialSensor: relax IMU wait time for low loop rates
allow for waiting for all IMUs for up to 1/3 of the loop time
2021-01-05 21:13:12 +11:00
Andrew Tridgell f6c45c3bcd AP_InertialSensor: cope with INS_MAX_INSTANCES < 3 2020-11-10 16:15:45 +11:00
Peter Barker 02c9aa2ae2 AP_InertialSensor: remove unused define 2020-10-20 11:24:34 +11:00
Andrew Tridgell d5c0522651 AP_InertialSensor: instantiate SIM_IMU_COUNT sensors in SITL 2020-08-28 10:17:00 +10:00
Andy Piper d4ba821297 AP_InertialSensor: make the backend fast gyro rate configurable and independent from the accel rate
allow fast sampling of gyros on MPU6000 and MPU6500
2020-07-28 20:47:16 +10:00
Andy Piper 05366e9aa9 AP_InertialSensor: delegate active harmonic calculation to the filter 2020-07-14 09:50:06 +10:00
Andy Piper faf9bbbf3a AP_InertialSensor: make the backend fast gyro rate configurable
raise gyro rate default on F7 and H7
clean up gyro rate docs and output startup banner
2020-07-10 16:45:29 +10:00
Andy Piper 61bb42cc0c AP_InertialSensor: allow up to four distinct notch center frequencies to be updated
apply the LPF after the notch filters to reduced notch-induced noise
2020-06-21 19:09:35 +10:00
Andy Piper 8ac79da643 AP_InertialSensor: FFT gyro window would overflow on windows >= 256
convert FFT buffers to ObjectBuffer<float> for lock-free access
push gyro samples directly into the FFT ring buffer from the gyro thread
2020-05-24 07:43:34 +10:00
Andy Piper d0a241597a AP_InertialSensor: add support for double harmonic notches to more effectively target wider noise peaks 2020-04-28 09:32:02 +10:00
Peter Barker efbf929bc0 AP_InertialSensor: rename APMrover2 to Rover 2020-04-14 09:50:34 +09:00
Andrew Tridgell d772289b0d AP_InertialSensor: added driver for ADIS16470 2020-04-13 11:57:04 +10:00
Andy Piper 0e9b2a26c5 AP_InertialSensor: SITL the raw sample rate is not the same as the sensor rate
use regulated time for frequency noise to avoid spurious harmonics
SITL sensors must be true separate instances
don't compile in FFT structures if DSP disabled
2020-02-22 11:15:37 +11:00
Andy Piper 3d9776dd6d AP_InertialSensor: expose statically filtered gyro values for FFT analysis and allow sampling to gyro window for FFT analysis.
FFT windows can be dynamically allocated
add harmonic notch dynamic tracking mode
unwind gyro window allocation in the case of failure
allow access to harmonic notch harmonics
2020-02-22 11:15:37 +11:00
Peter Barker ab7ee46423 AP_InertialSensor: mark some parameters as Calibration parameters 2020-02-04 20:29:09 +11:00
Randy Mackay b7f6f4a05e AP_InertialSensor: reduce POS param range to 5m and add increment 2020-02-01 08:46:03 +09:00
Andrew Tridgell e52a3b9978 AP_InertialSensor: default fast sampling on
if we have a first IMU capable of fast sampling then we want it
enabled by default
2019-12-23 09:55:07 +11:00
Mark Whitehorn 00948c33d5 AP_InertialSensor: rename sensor_config_error to config_error 2019-11-08 10:14:34 +11:00
Andy Piper a9a7fe3ea5 AP_InertialSensor: ensure harmonic notch gets appropriate defaults 2019-09-11 18:41:05 +10:00
Andy Piper 3261677e01 AP_InertialSensor: remove _ prefix from methods. use changed filter methods. 2019-09-11 18:41:05 +10:00
Andy Piper 50f7e50634 AP_InertialSensor: add harmonic notch filter to gyro filter chain
Allow dynamic updates to the calculated frequency. Convert bandwidth and frequency to floats.
backend variables do not need to be indexed per-backed
2019-09-11 18:41:05 +10:00
Andy Piper dde6dec145 AP_InertialSensor: correct reboot documentation for batch logger and filters 2019-09-10 20:29:56 +10:00
Andrew Tridgell 15e15e0b9d AP_InertialSensor: define GET_I2C_DEVICE() 2019-09-04 16:27:47 +10:00
Andrew Tridgell 1c92ecc89f AP_InertialSensor: removed old method of specifying most IMUs
and removed dangerous default values for rotations
2019-08-28 06:54:11 +10:00
Andrew Tridgell c99923d500 AP_InertialSensor: require gyro orientations in LSM9DS probe
this prevents a bug where they are missing in hwdef.dat
2019-08-27 19:29:37 +10:00
Andrew Tridgell 992016069a AP_InertialSensor: fixed watchdog on AHRS trim gyro wait 2019-08-19 14:37:46 +10:00
Andrew Tridgell e1ce735886 AP_InertialSensor: special check for CubeBlack to force INS_USE3=1
this will cope with users loading old parameter files
2019-07-31 12:53:57 +10:00
Andrew Tridgell 123800ccd2 AP_InertialSensor: default INS_USE3 to 1 2019-07-31 12:53:57 +10:00
Andrew Tridgell 8e5c0fa32b AP_InertialSensor: disable kill IMUs with HAL_MINIMIZE_FEATURES 2019-07-07 19:03:01 +10:00
Andrew Tridgell 3444e82ef9 AP_InertialSensor: added RC switch for killing IMUs 2019-07-07 19:03:01 +10:00
Andrew Tridgell 053f0cb689 AP_InertialSensor: try much harder to get all IMU samples
this we ensures we get new data for all active IMUs on each loop,
rather than sometimes returning with some IMUs not having data.

This matters as not having a sample on an IMU for a single loop can
cause an EKF IMU failover, which will degrade the learned bias
variances

The issue is usually only seen under high load, such as requesting a
loop rate beyond what the hardware is capable of
2019-07-07 19:03:01 +10:00
Andy Piper 36878e9b3c AP_InertialSensor: Allow all filter frequencies to be 16bit. 2019-06-06 17:09:17 +10:00
Andy Piper 18d403c3ac AP_InertialSensor: Rework notch filter allocation and sampling
https://github.com/ArduPilot/ardupilot/issues/11346

Allocate a notch filter per-IMU.
Update the notch filters in the backend at the sensor sample rate.
Allow raw logging of post-filtered gyro and accel values.
2019-06-06 17:09:17 +10:00