Commit Graph

1218 Commits

Author SHA1 Message Date
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
Peter Barker a4773413e4 AP_InertialSensor: correct INS_generic example
segfaults due to lack of singletoin objects in examples
2022-08-13 20:53:29 +10:00
Andy Piper a6312ac893 AP_InertialSensor: correctly detect bad frames on regular ICM42xxx 2022-08-12 20:53:36 +10:00
Andy Piper 221ab9752e AP_InertialSensor: synchronise fifo reads on the ICM42xxx 2022-08-12 20:53:36 +10:00
Iampete1 4e4bfda05d AP_InertialSensor: vector params always use set method 2022-08-03 13:43:48 +01:00
Iampete1 ea03ea320c AP_InertialSensor: params always use set method 2022-08-03 13:43:48 +01:00
Andy Piper 8855a54720 AP_InertialSensor: use filtered data in BMI270 and implement fifo reset
increase gyro ODR to 3.2Khz to allow higher AAF
use OSR4 on accel filter to achieve nominal 188Hz
2022-08-03 17:06:38 +10:00
Andy Piper 155d436807 AP_InertialSensor: support for fast sampling rates on ICM-42xxx series
thoughtfully set anti-aliasing filters on ICM-42xxx series
2022-08-02 17:26:46 +10:00
Andrew Tridgell 2582d5fad5 AP_InertialSensor: re-enable notch filter on 42688
thanks to Andy for pointing out this is for an internal resonance
2022-08-02 17:26:46 +10:00
Andrew Tridgell 8a6b8fc486 AP_InertialSensor: enable 180Hz LPF on ICM42670 2022-08-02 17:26:46 +10:00
Andrew Tridgell 5b579aebce AP_InertialSensor: enable AAF at 488Hz for gyro+accel on ICM42688
this should improve vibration handling
2022-08-02 17:26:46 +10:00
Andrew Tridgell 5bde9b0e7c AP_InertialSensor: added support for ICM42670 IMU 2022-08-02 17:26:46 +10:00
Iampete1 98d9f07507 AP_InertialSensor: defualt accel scale vector to 1.0 2022-07-28 16:51:33 +10:00
Andrew Tridgell 97646f4164 AP_InertialSensor: support BOARD_MATCH() for IMUs 2022-07-19 15:02:31 +10:00
Peter Barker e4ce4ebed3 AP_InertialSensor: remove un-needed methods 2022-07-19 10:30:36 +10:00
Peter Barker 80e70b2fb4 AP_InertialSensor: remove voiding of parameter
Clearly this is used - we pass it down
2022-07-05 09:54:53 +10:00
Andrew Tridgell c29b390e7b AP_InertialSensor: implemented harmonics in SITL vibration 2022-07-03 18:47:33 +10:00
Andy Piper 193375a7e5 AP_InertialSensor: implement triple notches 2022-07-03 18:21:41 +10:00
Andy Piper 9d851a0c1a AP_InertialSensor: allow concurrent logging of both pre- and post-filter IMU data for FFT
remove batch logging bitfields
2022-07-03 18:19:55 +10:00
Andrew Tridgell 9ac3472b47 AP_InertialSensor: add set_inactive() on notch filters 2022-06-30 20:58:37 +10:00
Andrew Tridgell d653499efc AP_InertialSensor: count filters to match notch options
this allows for much more complex filter setups as long as not
filtering on all IMUs
2022-06-12 15:39:44 +10:00
Andrew Tridgell a37f268dc6 Ap_Inertialsensor: by default only run harmonic notch on the active gyro
this should save quite a lot of CPU. Only the active gyro impacts
vehicle flight
2022-06-12 15:39:44 +10:00
Andy Piper 11f5d1974a AP_InertialSensor: don't print error when probing non-existant BMI270
fix device locking at startup on BMI270
2022-06-08 21:44:21 +10:00
Andy Piper 6cacdd1b34 AP_InertialSensor: properly reset MPU6000 signal path at startup
failure to reset the signal path as per the register spec leads to
very poor temperature response early on in startup.
2022-06-08 17:44:17 +10:00
Andrew Tridgell 19063a46a0 AP_InertialSensor: fixed build with logging disabled
fixes CubeOrange-periph build
2022-06-06 14:50:40 +10:00
Tom Pittenger 798f985ee5 AP_InertialSensor: relax is_still() threshold for SITL.. which is pretty darn still all the time for Plane 2022-05-20 10:52:47 -07:00
Randy Mackay 2382e58f04 AP_InertialSensor: extend ENABLE_MASK param desc IMUs 4 to 7 2022-05-19 07:54:24 +10:00
murata 324f5e3ac9 AP_InertialSensor: Console output can be disabled 2022-05-17 09:53:06 +10:00
Andy Piper e0b7e5f2a5 AP_InertialSensor: add throttle-based notch setup function
allocate harmonic notch filter if FFT is enabled
2022-05-04 17:05:51 +10:00
Peter Barker 94dc0e78cd AP_InertialSensor: tidy includes 2022-05-03 09:14:58 +10:00
Leonardo Garcia 0eb6ae365a AP_InertialSensor: Added BMI085 support
Fixed styling for 61125e2

Remove whitespace l202

Removed else
2022-04-27 18:37:39 +10:00
Iampete1 2d2165936a AP_InertialSensor: use pitch to guess which axis the user is trying to calibrate, warn about Q_TRIM_PITCH on plane 2022-04-26 10:03:30 +10:00
Andrew Tridgell db14ba46dc AP_InertialSensor: call notch param update with semaphore held 2022-04-19 09:39:03 +10:00
Andrew Tridgell dff0e5ecc1 AP_InertialSensor: fixed the last notch values to be per-instance
thanks to Andy for noticing this
2022-04-19 09:39:03 +10:00
Andrew Tridgell 184f84f4ee AP_InertialSensor: don't update disabled notches 2022-04-19 09:39:03 +10:00
Andrew Tridgell e2e1e74da5 AP_InertialSensor: switch to HarmonicNotch class
this makes the logic much easier to follow, without indexes into
arrays
2022-04-19 09:39:03 +10:00
Andrew Tridgell e67d9b4179 AP_InertialSensor: support two full harmonic notch filters 2022-04-19 09:39:03 +10:00
Andrew Tridgell 95ae150a21 AP_InertialSensor: catch FIFO overruns on BMI088
we have seen errors where the BMI088 gets out of sync, so that the 3
axes are rotated. The data is shifted by 4 bytes, so that X=Z, Y=X
and Z=Y

this changes the BMI088 to "stop on full" mode, which is what Bosch
use in their example drivers, and also catches FIFO overrun events and
triggers a full FIFO reset. This should fix the problem with the FIFO
sync
2022-04-16 19:24:16 +10:00
Andrew Tridgell ab5e8419d8 AP_InertialSensor: move INS_HNTC2 to a new parameter table ID 2022-04-16 08:14:06 +10:00
Andy Piper 29e8f96275 AP_InertialSensor: move frontend update into ramfunc. 2022-04-12 09:19:45 +10:00
Peter Barker 3dae386ae3 AP_InertialSensor: correct compilation with HAL_INS_ACCELCAL_ENABLED false 2022-03-22 10:39:44 +11:00
Peter Barker a53af5277c AP_InertialSensor: assume accel cals are stored for sitl-on-hw
Same as for SITL - they don't need to actually be in storage to be valid
2022-03-17 14:39:55 +11:00
Peter Barker da21b48f7e AP_InertialSensor: split AP_HAL_SITL and HAL_SIM_ENABLED 2022-03-17 14:39:55 +11:00
murata efe8427279 AP_InertialSensor: Change from division to multiplication 2022-03-16 18:41:52 +11:00
Iampete1 b77476caa1 AP_InertialSensor: remove custom orentations 2022-03-02 18:16:42 +11:00
Peter Barker fda4a65e3e AP_InertialSensor: include cleanups 2022-03-01 11:21:33 +11:00
Andy Piper c7a43f2a90 AP_InertialSensor: put some functions in fast ram
precisely split backend/frontend on Invensense for RAMFUNC allocation
allow building with no IMUs
2022-02-09 12:47:55 +00:00
Peter Barker 558f6babc4 AP_InertialSensor: correct compilation if INS_TEMPERATURE_CAL_ENABLE is off 2022-02-08 10:44:01 +11:00
Peter Barker c1c329e2b4 AP_InertialSensor: add and use AP_SIM_INS_ENABLED 2022-01-17 19:14:39 +11:00
Jaaaky f80a9ba3ce AP_InertialSensor: Fix issue #19599 Failed to build Pixhawk1 with O3
As suggested by @tridge
2022-01-17 08:33:27 +11:00
Peter Barker 80178f5d07 AP_InertialSensor: mark FTN as a streamed message 2022-01-05 16:34:36 +11:00
Peter Barker 6084682634 AP_InertialSensor: move INS notch filter logging into INS 2022-01-05 16:34:36 +11:00
Andy Piper 3fd79b8ffb AP_InertialSensor: BMI270 driver 2021-12-31 09:25:29 +11:00
Andrew Tridgell 7c8794b0bd AP_InertialSensor: fixed INS_generic example
useful for driver development
2021-12-30 10:02:35 +11:00
Andrew Tridgell 662327f2ea AP_InertialSensor: added support for more ADIS IMUs
support 32 bit delta angles and velocities
2021-12-29 18:25:18 +11:00
Andy Piper 6e3b502110 AP_InertialSensor: inline vector ops for backends and temp cal 2021-12-22 18:23:33 +11:00
Andy Piper d44478ff59 AP_InertialSensor: calculate number of notches based on motor count
configure default harmonics if dynamic harmonics
set number of notches correctly for FFT operation
include static notch in filter calculation and allow harmonic options on static notch
2021-12-22 18:13:38 +11:00
Jaaaky bbb38504d6 AP_InertialSensor: Fix multi #include's 2021-12-21 10:38:46 +11:00
Peter Barker c6734ad825 AP_InertialSensor: correct logging of inertial-sensor reg-change logging 2021-12-18 21:25:27 +11:00
QioTek e5a8695640 AP_InertialSensor: added support for ICM-20608-D sensor 2021-12-17 07:58:48 +11:00
QioTek 586c2064a6 AP_InertialSensor: added support for IIM-42652 and ICM-40605 sensors
handle new Invensense v3 sensor types
2021-12-14 11:38:36 +11:00
Josh Henderson 27bcec9d6e AP_InertialSensor: for all Cubes ensure use of non-isolated IMU 2021-11-30 10:20:54 +11:00
Randy Mackay 0de96f3f4a AP_InertialSensor: vibe units m/s/s
also specify no multiplier
2021-11-18 13:23:06 +09:00
Andrew Tridgell 12c10dce32 AP_InertialSensor: fixed comments on IMU types supported 2021-11-09 08:05:03 +11:00
Buzz 168dc34566 AP_InertialSensor: New fallback type = NONE, which successfully does nothing like an INS, but without needing a real one, like esp32 dev boards.
Good for boards that u want to boot even when they dont have an IMU attached.
Author: Charles Villard <charlesvillard10@gmail.com>
Author: Buzz <davidbuzz@gmail.com>
2021-11-01 17:40:31 +11:00
Andy Piper 6a00819b2d AP_InertialSensor: convert APM_BUILD_COPTER_OR_HELI() to APM_BUILD_COPTER_OR_HELI 2021-10-26 11:42:12 +11:00
Gone4Dirt 290794bf93 AP_InertialSensor: Add APM_BUILD_Heli 2021-09-29 19:55:48 +10:00
Peter Barker dac4134533 AP_InertialSensor: move from HAL_NO_GCS to HAL_GCS_ENABLED 2021-09-22 21:37:00 +10:00
Andrew Tridgell fefade783b AP_InertialSensor: allow accelcal with a rotation 2021-09-17 14:07:14 +10:00
Andrew Tridgell 4fdc1ebc30 AP_InertialSensor: fixed locking issue in delta accumulation
this fixes a bug in calculating delta velocity and delta acceleration
between threads.
2021-08-31 10:10:18 +10:00
Pierre Kancir 29b13ff98a AP_InertialSensor: fix externalAHRS detection
'A = B >= C' kind. The expression is calculated as following: 'A = (B >= C)'
2021-08-25 16:37:13 +09:00