Commit Graph

1188 Commits

Author SHA1 Message Date
Andrew Tridgell 58281108c0 AP_InertialSensor: fix for ICM42688 stuck gyro issue
these undocumented bits in register 0x4d control the "adaptive full
scale range" mode of the ICM42688. The feature is enabled by default
but has a bug where it gives "stuck" gyro values for short periods
(between 1ms and 2ms):, leading to a significant gyro bias at longer
time scales, enough to in some cases cause a vehicle to crash if it is
unable to switch to an alternative IMU

this fixes https://github.com/ArduPilot/ardupilot/issues/25025
2023-11-07 17:36:12 +09:00
Andrew Tridgell e0ec7a9c9d AP_InertialSensor: fixed the error value for BMI088
the bad value is -32768 not 0xffff (which is -1)

-32768 badly corrupts the low-pass filter, and is what we see in logs
(a large negative spike on all 3 axes)

update to bug fix from:
https://github.com/ArduPilot/ardupilot/pull/23033
2023-10-13 16:26:01 +09:00
Randy Mackay c74eea54c5 AP_InertialSensor: SCHA63T comment fix 2023-06-08 09:29:59 +10:00
Randy Mackay 655bdb3390 AP_InertialSensor: SCHA63T loses unused ret bool 2023-06-08 09:29:59 +10:00
Randy Mackay fbfd8d506a AP_InertialSensor: formatting fixes 2023-06-08 09:29:59 +10:00
jfbblue0922 81424e2d05 AP_InertialSensor: add SCHA63T IMU support 2023-06-08 09:29:59 +10:00
bugobliterator 42d21ab9bc AP_InertialSensor: fix hardfault in BatchSampler 2023-04-21 09:48:59 +10:00
Peter Barker f3502a71e9 AP_InertialSensor: correct access beyond array in Ins TCal 2023-04-21 09:48:59 +10:00
bugobliterator b9e9d4cc4f AP_InertialSensor: fix duplicate sensor detection for AUX sensors 2023-03-24 11:55:45 +11:00
bugobliterator 6eaa05960f AP_InertialSensor: increase the temp tolerance for INV2 driver for fifo reset 2023-03-23 08:00:05 +11:00
bugobliterator 08bea2fcd2 AP_InertialSensor: move from INS_ top level parameters to INS 2023-03-21 10:04:16 +11:00
bugobliterator 10439cc42e AP_InertialSensor: add support for extra Aux IMUs 2023-03-21 10:04:16 +11:00
Andrew Tridgell 34a52142c8 AP_InertialSensor: added support using the 2nd IMU for heater control 2023-03-15 19:08:53 +11:00
Iampete1 77540dff07 AP_inertialSensor: BatchSampler: add enabled and initalised getters 2023-03-07 10:56:16 +11:00
Andrew Tridgell a0fe53414c AP_InertialSensor: removed the error count on BMI088 0xff data
this error happens often enough that it is frustrating for users who
can't arm, which just encourages use of forced arming.

logs show this happening at a rate of once every few seconds, which
doesn't impact on the usability of the gyro (which is at 2kHz), but
does prevent arming with this error incremement
2023-02-28 11:28:25 +11:00
Peter Barker 601c46f7e0 AP_InertialSensor: add gyro bias simulation 2023-02-24 09:21:42 +11:00
Andy Piper 3cca401af8 AP_InertialSensor: calculate backend sample rates on ICM45686 correctly 2023-02-22 18:06:46 +11:00
bugobliterator 5680c411e9 AP_InertialSensor: can check icm45686 RTC_CONFIG reg because reserved value changes 2023-02-22 18:06:46 +11:00
bugobliterator ef9e264919 AP_InertialSensor: set default data rate to 3.2kHz for ICM-45686 2023-02-22 18:06:46 +11:00
bugobliterator b20ffce39d AP_InertialSensor: add soft reset, clkin for icm45686 and other fixes 2023-02-22 18:06:46 +11:00
Andy Piper 727aa02c26 AP_InertialSensor: correct register setup for ICM45686, make CLKIN optional 2023-02-22 18:06:46 +11:00
Andy Piper 4aafb3ab71 AP_InertialSensor: fast sampling for ICM45686
Fix accel scale on ICM45686
2023-02-22 18:06:46 +11:00
Andrew Tridgell 18f0fc50d5 AP_InertialSensor: allow enabling of only some ExternalAHRS sensors 2023-01-30 09:22:02 +11:00
Andrew Tridgell 08d420a08c AP_InertialSensor: reject 0xff frames from BMI088 gyro
a log on a board with a BMI088 seems to show that this happened
2023-01-24 11:16:39 +11:00
Andy Piper bd05b548a7 AP_InertialSensor: use freq_min_ratio on notch tune setup
set harmonics in notch setup
2023-01-24 10:56:33 +11:00
Andrew Tridgell 645240cc2b AP_InertialSensor: cleanup NAMED_VALUE_FLOAT for fifo error 2023-01-19 15:44:13 +11:00
Andrew Tridgell 786ae7c67f AP_InertialSensor: fixed flood of log with fast fifo reset 2023-01-19 15:44:13 +11:00
Peter Barker e5c3dd871c AP_InertialSensor: create explicit define for AP_INERTIALSENSOR_BATCHSAMPLER_ENABLED
this allows the batch sampler to be removed for size reasons, or because you don't have logging enabled
2023-01-11 19:08:41 +11:00
Peter Barker 95527894de AP_InertialSensor: define AP_INERTIALSENSOR_ENABLED in a new AP_InertialSensor_config.h 2023-01-04 18:02:34 +11:00
Iampete1 2e465b4c18 AP_InertialSensor: External: report name in output banner 2023-01-03 10:32:20 +11:00
Peter Barker ee98d75173 AP_InertialSensor: rename HAL_INS_ENABLED to AP_INERTIALSENSOR_ENABLED 2023-01-03 10:28:42 +11:00
Andy Piper 7f7305a6d9 AP_InertialSensor: use correct include for sim-on-hardware 2022-12-31 09:32:32 +11:00
Andy Piper 16ca2e1179 AP_InertialSensor: use 234Hz accel LPF and 532Hz gyro LPF on BMI088 to more closely match Invensense
synchronize fifo reads with backend update on BMI088
2022-12-28 18:18:26 +11:00
Andy Piper 90cdc1aa52 AP_InertialSensor: allow FFT window to be captured post-filter
selectively apply filters twice to make sure that FFT is not tracking itself
clean-up notch disablement for non-DSP builds
use filter gyro data for FFT when analysing post-filter
always apply LPF after all of the notches
move to a phased application of window information for FFT
tap FFT gyro window at the appropriate place for downsampled FFTs
add accessor for FFT notch
document notch uses cases and flow
2022-12-28 18:14:56 +11:00
Andy Piper 9eb561639b AP_InertialSensor: add support for reading and writing INS data from a file in SITL
allow sketch to be stopped at end of SITL samples
2022-12-28 18:14:56 +11:00
Peter Barker fe10f15e17 AP_InertialSensor: various SITL INS improvements 2022-11-16 10:22:33 +11:00
Peter Barker 5e21a95016 AP_InertialSensor: change namespace of MultiCopter and FixedWing params
this stops the libraries knowing anything about AP_Vehicle
2022-11-09 19:04:37 +11:00
bugobliterator 5096023eef AP_InertialSensor: add fast reset for ICM20602 instead of full reset on bad temp sample 2022-11-01 10:53:09 +11:00
bugobliterator 35f05738d0 AP_InertialSensor: add support for ICM45686 IMU 2022-11-01 10:41:59 +11:00
Andy Piper 55aed98f81 AP_InertialSensor: ensure that hardware AAF and notch filter are enabled on 42605 and 42609 2022-10-25 11:06:02 +11:00
Andrew Tridgell 9fa3a433f5 Revert "AP_InertialSensor: disable temperature based fifo check on ICM20602"
This reverts commit 05f8e3c18d.

this leads to bad IMU data on ICM20602
2022-10-22 13:01:39 +11:00
Leonardo Garcia 72c6977ea5 AP_InertialSensor: Fix BMI085 accel scaling
Original BMI088 has 24G range so it was hardcoded for *scale* within
read_fifo_accel. Added a class variable accel_range which is assigned
the correct value when the sensor type is received (16.0 or 24.0).
2022-10-18 11:03:34 +11:00
Andrew Tridgell c42acd553e AP_InertialSensor: use motor_mask from SITL for which outputs are motors
generate noise based on motor_mask
2022-10-16 20:38:19 +11:00
bugobliterator 05f8e3c18d AP_InertialSensor: disable temperature based fifo check on ICM20602 2022-10-13 10:14:59 +11:00
Iampete1 4668e1b61e AP_InertialSensor: Logging: only log single notch frequency unless per-motor, never log fixed 2022-10-05 18:30:24 +11:00
jackhong12 4a4f361a17 all: use CLASS_NO_COPY() macro 2022-10-04 11:23:04 +11:00
Andy Piper 8037e10be7 AP_InertialSensor: make sure dynamic notches always get updates so that slew limiting is not too aggressive 2022-09-21 17:41:38 +10:00
murata a6d7d39364 AP_InertialSensor: Allow gyro counts to be returned 2022-09-20 09:37:29 +10:00
murata 734692460c AP_InertialSensor: Remove line breaks from PANIC strings 2022-09-15 13:21:09 +10:00
Andy Piper fcbaa0969e AP_InertialSensor: synchronize BMI70 on fifo reads 2022-09-06 09:31:21 +10:00