Commit Graph

1220 Commits

Author SHA1 Message Date
James O'Shannessy 3d66fb83b4 AP_InertialSensor: Check the gyro/accel id has not been previously registered
If the Gyro/Accel ID is already in the registered list, do not try to add it again.

This stops an issue seen on a CubeOrangePlus BG3 where, during the very first boot after a parameter wipe, software incorrectly registers a fourth IMU.
The Fourth IMU is registered because the AUX IMU is the same DevID as the third ICM45686.
2024-08-21 20:39:44 +09:00
James O'Shannessy 30cf6c8ad4 AP_InertialSensor: Fix persistent storing of IMU Z Scale
Fixes INSn_ACCSCAL_Z not being stored in persistent storage when bootloader is flashed.
2024-08-21 20:39:44 +09:00
James O'Shannessy ec33bb9bab AP_InertialSensor: Improve bitmask indicating persistent parameters on bootloader flash
INS_TCAL_OPTIONS parameter description indicates a singular bit in a bitmask to persist Accels/TCAL parameters, however there are two separate bits for persistence.
2024-07-03 10:31:14 +09:00
Andrew Tridgell 8f0654ea8e AP_InertialSensor: fixed ICM42670
highres sampling is not working on the ICM42670 on some versions of
the Pixhawk6X. Disable for now.
2024-06-15 09:06:36 +09:00
Andy Piper 471079d5b6 AP_InertialSensor: allow FIFO rate logging for hires sampling 2024-05-16 10:59:52 +10:00
Andrew Tridgell 431ef6b4ba AP_InertialSensor: fixed accel cal simple to remove unused IMUs
when we change EAHRS_SENSORS to remove use of IMU from an external
AHRS we need to be able to zero the accel and gyro offsets to get
prearms to pass
2024-03-14 09:33:55 +09:00
Peter Barker 6a897f01d8 AP_InertialSensor: allow compilation with HAL_LOGGING_ENABLED false 2024-01-17 18:25:55 +11:00
Peter Barker 1051da5cb4 AP_InertialSensor: correct compilation when AP_AHRS_ENABLED is off
e.g. CubeOrange-periph-heavy
2024-01-16 16:14:04 +11:00
Peter Barker a81b229997 AP_InertialSensor: make AHRS attitude member variables private 2024-01-14 12:47:47 +11:00
Andrew Tridgell 9c8fa7f58c AP_InertialSensor: fixed build of NONE backend
conflict with rand_float()
2024-01-07 20:51:55 +11:00
muramura 4765ba8218 AP_InertialSensor: Specify the number of arrays by sizeof 2024-01-04 10:24:44 +11:00
Peter Barker 68d8a2606d AP_InertialSensor: SITL: call logging singleton methods only if available 2024-01-03 18:33:41 +11:00
Andrew Tridgell da7c556f77 AP_InertialSensor: avoid fcntl.h
allows mixing of lwip and sockets
2024-01-03 12:14:47 +11:00
Andrew Tridgell aba5ec6854 AP_InertialSensor: added support for writing raw IMU data to a UART
this is for supporting external visual odomotry systems which need the
IMU data to correctly process image data

# Conflicts:
#	libraries/AP_InertialSensor/AP_InertialSensor.cpp
2023-11-30 07:05:02 +11:00
Iampete1 eb4e3fc36a AP_InertialSensor: init all notch center frequencies 2023-11-28 18:05:37 +11:00
Andrew Tridgell 483d19f44c AP_InertialSensor: apply stuck gyro fix to all IxM42xxx sensors
TDK has confirmed this applies to all IxM42xxx sensors
2023-10-29 08:24:04 +11:00
Andy Piper 7ca2a4da56 AP_InertialSensor: remove ICM42xxx defaults 2023-10-25 19:23:11 +11:00
Andrew Tridgell 2688848cd1 AP_InertialSensor: fixed orientation of batch sampled data
we need to rotate the data so that FFT displays match the configured
orientation
2023-10-25 19:23:11 +11:00
Andrew Tridgell 0ebf9e7af5 AP_InertialSensor: pre-fetch instances for use in filter setup
we use the instance numbers during filter configuration to check if
fast sampling is enabled. We need to ensure these instance numbers
have been setup before the filtering functions get called
2023-10-25 19:23:11 +11:00
Andy Piper a9e0bf070c AP_InertialSensor: ensure indirect registers are not modified with sensors active on ICM-42688 2023-10-25 19:23:11 +11:00
Andy Piper da0b1402d3 AP_InertialSensor: add high-resolution reads for ICM45686
enable high-resolution support on all ICM4xxxx sensors
create INS_HIRES_SAMPLE mask
adjust high-resolution sampling for correct byte ordering and depth
correct high resolution scaling on 18bit ICM4xxxx IMUs
control highres via HAL_INS_HIGHRES_SAMPLE
2023-10-25 19:23:11 +11:00
Andrew Tridgell b6c9ac2569 AP_InertialSensor: added optional FIFO rate logging to invensensev3 driver
this is useful for tracking down and confirming the stuck gyro issue
on the ICM42688
2023-10-22 15:09:40 +11:00
Andrew Tridgell 792d8a4cb8 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-10-22 15:09:40 +11:00
Iampete1 e35a459090 AP_InertialSensor: call init for harmonic notch params 2023-10-10 08:07:16 +09:00
Andrew Tridgell 6e26f088bf 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-08 10:52:27 +11:00
Iampete1 3429276224 AP_InertialSensor: add INS_RAW_LOG_OPT to allow raw logging of post, and pre+post on primary or all gyros 2023-10-03 10:24:58 +11:00
Rhys Mainwaring 732b074bee AP_InertialSensor: update to support esp32
- Remove whitespace
- Remove instance checks in AP_InertialSensor_NONE timer update

Signed-off-by: Rhys Mainwaring <rhys.mainwaring@me.com>
2023-09-02 09:43:14 +10:00
Peter Barker baf5d34256 AP_InertialSensor: create define specifically for the developer feature for killing IMUs 2023-06-07 18:23:01 +10:00
Randy Mackay 217ba502ac AP_InertialSensor: SCHA63T comment fix 2023-05-10 17:24:02 +10:00
Randy Mackay 9d9de678a5 AP_InertialSensor: SCHA63T loses unused ret bool 2023-05-10 17:24:02 +10:00
Randy Mackay 7c2a173f30 AP_InertialSensor: formatting fixes 2023-05-10 17:24:02 +10:00
jfbblue0922 458fbb7f90 AP_InertialSensor: add SCHA63T IMU support 2023-05-10 17:24:02 +10:00
David Buzz a896ab9e71 AP_InertialSensor: quieten imu's on esp32
less noisy

ins debug

imu
2023-05-02 14:38:03 +10:00
Michael du Breuil b76d6d827f AP_InertialSensor: Factor accel cal in from GCS_MAVLink 2023-04-21 21:33:16 +10:00
Peter Barker 6e1cd839d8 AP_InertialSensor: don't check MINIMIZE_FEATURES when also checking BOARD_FLASH_SIZE
we have an assertion that no board with >1MB of flash is minimized
2023-04-15 09:33:35 +10:00
Wu 0f1253b393 AP_InertialSensor: the accel fast-sampling rate of MPU6500 is 4k,not 1k 2023-04-12 15:24:41 +10:00
bugobliterator 13cdc8bda8 AP_InertialSensor: fix hardfault in BatchSampler 2023-04-05 18:22:03 +10:00
Henry Wurzburg 00858dce78 AP_InertialSensor: add buzzer noises 2023-04-05 09:05:14 +10:00
Andy Piper c9382cd221 AP_InertialSensor: HAL_WITH_DSP -> HAL_GYROFFT_ENABLED 2023-03-29 20:49:40 +11:00
Peter Barker 3fada15681 AP_InertialSensor: correct access beyond array in Ins TCal 2023-03-28 21:25:11 +11:00
bugobliterator 866e6672c8 AP_InertialSensor: fix duplicate sensor detection for AUX sensors 2023-03-23 13:53:44 +11:00
bugobliterator fee6f435ea AP_InertialSensor: increase the temp tolerance for INV2 driver for fifo reset 2023-03-23 13:53:28 +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