Commit Graph

1245 Commits

Author SHA1 Message Date
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
Scott Parlane 4d95a9d1c3 AP_InertialSensor: BMI160: Allow configuring the rotation 2021-08-13 12:32:28 +10:00
Scott Parlane 700edd241f AP_InertialSensor: BMI160: Make it possible to use I2C
The BMI160 chip talks the same protocol over SPI and I2C,
so simply allowing I2C in hwdef is sufficient to allow it to be used.
2021-08-13 12:32:28 +10:00
Scott Parlane 6554c535a1 AP_InertialSensor: BMI160: Remove linux-only restriction 2021-08-13 12:32:28 +10:00
bugobliterator f20b7d0f8e AP_InertialSensor: change class name from SITL::SITL to SITL::SIM 2021-08-05 07:25:31 +10:00
Andrew Tridgell f68ed4f0a4 AP_InertialSensor: mark log messages as streaming 2021-08-03 10:23:36 +10:00
Andrew Tridgell 0f3dc195b6 AP_InertialSensor: fixed build warning 2021-07-27 19:50:21 +10:00
Siddharth Purohit c4caf2ff54 AP_InertialSensor: add HAL_INS_ENABLED 2021-06-30 17:06:02 +10:00
Siddharth Purohit 447935bf4c AP_InertialSensor: remove dependence on gcs for AP_Periph builds 2021-06-30 17:06:02 +10:00
Peter Barker 731cf038f0 AP_InertialSensor: remove @Values from param metadata where @Bitmask exists 2021-06-23 18:37:34 +10:00
Peter Barker 52a52e1e5b AP_InertialSensor: remove HIL support 2021-06-15 09:47:31 +10:00
nkruzan f4c18e0f9c AP_InertialSensor_Invensense: set reset count to 1 if 10s has passed since last reset 2021-05-25 10:46:38 +10:00
Josh Henderson 2b20dcf128 AP_InertialSensor: move GYR & ACC logging functions to Logging.cpp 2021-05-01 14:15:58 +10:00
Josh Henderson 9792202810 AP_InertialSensor: Privatize Logging 2021-04-29 19:19:12 +10:00
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
Tatsuya Yamaguchi 2c95093d36 AP_InertialSensor: fix temperature sensor on LSM9DS0 2021-03-16 12:09:19 +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
Pierre Kancir 67540dc5bb AP_InertialSensor: fix example 2021-03-03 18:07:38 +11:00
Pierre Kancir c8a7ab1a75 AP_InertialSensor: fix example 2021-03-03 18:07:38 +11:00
Andrew Tridgell bf999f701f AP_InertialSensor: fixed ICM-20602 y offset bug
this works around a bug in the ICM-20602 that can cause the Y facttory
offset register to change unexpectedly. We don't know what triggers
this.

The fix is to save the factory offset at boot and restore it if it
changes. We log a message describing the change, but don't mark the
IMU unhealthy as this happens too often and we don't want to fallback
to a 2nd less good quality IMU (eg. MPU6000 on MatekH743)
2021-02-24 18:18:37 +11:00
Andrew Tridgell 4cddf37984 AP_InertialSensor: log unexpected register changes
when the register checking code finds an error we will log what
register changed and to what value
2021-02-24 18:18:37 +11:00
Andrew Tridgell 85ef6b7ac6 AP_InertialSensor: added optional logging of register changes 2021-02-24 18:18:37 +11:00
Andrew Tridgell 25dd08a1fd AP_InertialSensor: added force_save_calibration() 2021-02-15 07:24:40 +11:00
Peter Barker 3da156e358 AP_InertialSensor: prevent nullptr dereference in SITL 2021-02-05 15:02:12 +11:00
Andrew Tridgell 0535c4f592 AP_InertialSensor: default TMAX to 70
if user forgets to set this then better to just timeout rather than
calibrating over a small range
2021-01-27 09:49:35 +11:00
Andrew Tridgell bdb364d461 AP_InertialSensor: save the accelerometer ID parameters
this is needed for factory accel cal
2021-01-27 09:49:35 +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 e908a996af AP_InertialSensor: support SIM_ACC_TRIM
and cleanup vector maths
2021-01-25 16:24:50 +11:00
Andrew Tridgell 6c8a57c2d7 AP_InertialSensor: review fixes 2021-01-21 13:09:21 +11:00
Andrew Tridgell 3ff71c7814 AP_InertialSensor: changes from review feedback 2021-01-21 13:09:21 +11:00
Andrew Tridgell b12a663f7a AP_InertialSensor: apply accel scaling 2021-01-21 13:09:21 +11:00
Andrew Tridgell 73ddde3629 AP_InertialSensor: changes for new SITL IMU params 2021-01-21 13:09:21 +11:00
Andrew Tridgell 5e60fac37e AP_InertialSensor: remove unused variable 2021-01-21 13:09:21 +11:00
Andrew Tridgell 285b53fe07 AP_InertialSensor: use vector polyfit
this reduces memory usage
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 1ddc21c9bb AP_InertialSensor: support saving tempcal params persistently 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 2e9f61fe49 AP_InertialSensor: fixed IMU index display in msgs
start at 1 for users
2021-01-21 13:09:21 +11:00
Andrew Tridgell d5b511f4a0 AP_InertialSensor: fixed start timer for temperature in SITL
when we are doing an autotest we want the temperature to start
climbing when we first set SIM_IMUT_FIXED=0
2021-01-21 13:09:21 +11:00
Andrew Tridgell 30e55d8dfc AP_InertialSensor: cope with user changing TMAX while calibrating 2021-01-21 13:09:21 +11:00
Andrew Tridgell e2e97c67ce AP_InertialSensor: catch user attempt to change TMAX during cal 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 cc3579ea5d AP_InertialSensor: change TCAL sampling to be even in temperature 2021-01-21 13:09:21 +11:00
Andrew Tridgell fc0f8b990a AP_InertialSensor: added online learning of temp cal
use INS_TCAL1_ENABLE=2 to start learning
2021-01-21 13:09:21 +11:00
Andrew Tridgell 6f6f89e5aa AP_InertialSensor: enable temperature sensor on LSM9DS0
this allows for temperature calibration of the LSM303D in CubeBlack
and Pixhawk1
2021-01-21 13:09:21 +11:00
Andrew Tridgell 4bdf506d10 AP_InertialSensor: apply 1e-5 scale factor
this keeps the params in a reasonable range for parameter editors
2021-01-21 13:09:21 +11:00
Andrew Tridgell 0f6f6bac6b AP_InertialSensor: expose TCal class for use in SITL 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
murata 219dc2e7da AP_InertialSensor: Set the gravitational acceleration value to the defined value 2021-01-05 09:11:14 +09:00
Andy Piper 3db6203fb6 AP_InertialSensor: reduce FIFO buffer size to avoid DMA contention 2020-12-23 18:03:12 +11:00
Peter Barker 72acc8bfc8 AP_InertialSensor: use primary gyro (not accel) for get_delta_angle_dt 2020-11-29 13:21:53 +11:00
Peter Barker 2437cf8a24 AP_Logger: use instance number for IMU logging 2020-11-11 19:31:53 +11:00
Andrew Tridgell f6c45c3bcd AP_InertialSensor: cope with INS_MAX_INSTANCES < 3 2020-11-10 16:15:45 +11:00
Andrew Tridgell e8f21d3458 AP_InertialSensor: fixed rpm indexing for vtol motors
quadplane vtol motors start at 1
2020-10-28 14:20:44 +11:00
Michael du Breuil c86dcf91d6 AP_InertialSensor: Run vibration monitoring on all instances 2020-10-24 09:54:04 +11:00
Peter Barker 02c9aa2ae2 AP_InertialSensor: remove unused define 2020-10-20 11:24:34 +11:00
mhefny 02daa4c3ec AP_InertialSensor: update L3G4200D driver 2020-10-06 09:27:26 -07:00
Andrew Tridgell cfc59497f6 AP_InertialSensor: trigger internal error on persistent IMU reset
this will give users a warning when they are getting the Invensense
IMU FIFO reset issue
2020-09-02 06:42:44 +10:00
Andrew Tridgell d5c0522651 AP_InertialSensor: instantiate SIM_IMU_COUNT sensors in SITL 2020-08-28 10:17:00 +10:00
bugobliterator 4cdb4b74f3 AP_InertialSensor: add support for checked register in Invensensev2 Drvr 2020-08-06 12:41:35 +10:00
Andy Piper e53a43461b AP_InertialSensor: remove ICM gyro pre-filter 2020-08-04 09:24:16 +10:00
bugobliterator 43c16cd417 AP_InertialSensor: ensure that we use environment Python interpreter 2020-08-03 14:02:09 +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
duccan cdcdd5ce27 AP_HAL_ChibiOS: Added support for Bitcraze Crazyflie 2.1
Rework after review:
- Kept old IMU and barometer definition of crazyflie 2.0 in hwdef
- Added comment regarding soft-reset command
- Added defaults.parm for crazyflie
2020-06-07 07:49:37 +10:00
duccan 0d96c7f7a5 AP_HAL_ChibiOS: Added support for Bitcraze Crazyflie 2.1 2020-06-07 07:49:37 +10:00
Andrew Tridgell cab3630009 AP_InertialSensor: switched to supplying timestamps for SITL
this allows the time step to change on each loop as we no longer use
the average sensor rate when calculating deltas
2020-06-03 18:11:06 +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
Andrew Tridgell 5c6749ee54 AP_InertialSensor: use wait_pin() to wait for DRDY pin if available 2020-04-23 07:28:13 +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
Andrew Tridgell d8b33bcac9 AP_InertialSensor: suppress expected errors from invensense IMUs 2020-03-11 16:30:06 +11:00
Andy Piper 507bd9eea9 AP_InertialSensor: add in user-specified background noise when there is no rpm noise 2020-02-25 08:35:09 +11:00
Andy Piper 41b41c05f3 AP_InertialSensor: scale SITL motor noise by SIM_VIB_MOT_MULT 2020-02-22 11:15:37 +11: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 58708c483f AP_InertialSensor: make all semaphores recursive
the cost is very similar and this prevents an easy coding error which
can occur on less used code paths
2020-01-19 20:19:30 +11:00
Andrew Tridgell b89c241329 AP_InertialSensor: use take_blocking instead of HAL_SEMAPHORE_BLOCK_FOREVER
this makes for cleaner and smaller code as the failure case is not
needed
2020-01-19 20:19:30 +11:00
Andy Piper 52f59fb573 AP_InertialSensor: more accurately compute INS noise taking throttle into account and adding frequency noise noisily
make SITL fast-sampling correct
2019-12-31 10:34:02 +11: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
Andy Piper 143a071788 AP_InertialSensor: add rpm-based motor noise to gyros and accels
Remove sample time error in backend.
2019-12-17 10:07:06 +11:00
Andy Piper 7e35622015 AP_InertialSensor: correct loop rate on BMI055, clean up setting of loop rate on BMI055 and BMI088 2019-12-09 13:29:34 +11:00
Andy Piper 763089addb AP_InertialSensor: slight improvement to LOG_BAT_OPT docs. 2019-12-01 12:19:46 +11:00
Andrew Tridgell 9dc618ddd4 AP_InertialSensor: added gyro_harmonic_notch_enabled() 2019-11-19 07:08:01 +08:00
Andrew Tridgell 77d21f9f5d AP_InertialSensor: return HarmonicNotchDynamicMode 2019-11-19 07:08:01 +08:00
Andrew Tridgell eb582ac0cc AP_InertialSensor: avoid SITL build on non-SITL 2019-11-17 20:10:54 +11:00
Mark Whitehorn 00948c33d5 AP_InertialSensor: rename sensor_config_error to config_error 2019-11-08 10:14:34 +11:00
Andrew Tridgell 236ce28339 AP_InertialSensor: updated for heater changes 2019-11-02 16:31:04 +11:00
Andy Piper 6381183aa3 AP_InertialSensor: expose harmonic notch tracking mode 2019-10-31 11:18:40 +08:00
Andrew Tridgell d6e17b0c2b AP_InertialSensor: publish an IMU temperature
makes testing of mavlink extension easier
2019-10-10 13:23:03 +11:00
Andrew Tridgell 850892c3d9 HAL_ChibiOS: fixes from LGTM errors 2019-09-22 18:35:15 +10:00
Andy Piper 8e385d7453 AP_InertialSensor: correct formatting 2019-09-11 18:41:05 +10:00
Andy Piper 5b7f9f6bea AP_InertialSensor: while sensors are converging update the filters sample rates. if gyro filtering produces invalid output, keep the previous value 2019-09-11 18:41:05 +10: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
Randy Mackay 6a154c4e4c AP_InertialSensor: resolve gcs::send_text compiler warning 2019-07-30 09:02:39 +09:00
Andrew Tridgell 8e5c0fa32b AP_InertialSensor: disable kill IMUs with HAL_MINIMIZE_FEATURES 2019-07-07 19:03:01 +10:00
Andrew Tridgell 09d3392aee AP_InertialSensor: zero accumulators on time step
this zeros the delta angle and delta velocity accumulators when a
sensor is unavailable for a period of 0.1s. This prevents garbage
values being passed into the EKF when a sensor dies and then becomes
available again some time later
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 31ea3466af AP_InertialSensor: Post-filter logging takes precedence over sensor-rate logging. 2019-06-06 17:09:17 +10:00
Andy Piper 36878e9b3c AP_InertialSensor: Allow all filter frequencies to be 16bit. 2019-06-06 17:09:17 +10:00
Andy Piper fff81a2163 AP_InertialSensor: Make sure the LPF output is used by the notch input. 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
Andrew Tridgell aef343bfd0 AP_InertialSensor: removed old mRoControlZeroF7 config 2019-05-30 15:39:57 +10:00
Andrew Tridgell 039e7366b0 AP_InertialSensor: support new sensor config setup 2019-05-30 15:39:57 +10:00
Andrew Tridgell 3823ba539c AP_InertialSensor: rename to EXPECT_DELAY_MS() 2019-05-15 15:33:48 +10:00
Andrew Tridgell 02326ac52c AP_InertialSensor: use EXPECT_DELAY() macro 2019-05-15 15:33:48 +10:00
Andrew Tridgell 4e769730c9 AP_InertialSensor: removed unusued AP_Common/Semaphore.h 2019-05-15 15:33:48 +10:00
Phillip Kocmoud 6665e4c0a7 AP_InertialSensor: probe IMUs for mRoControlZeroF7 2019-05-10 15:05:42 +10:00
Andrew Tridgell 893b49d145 AP_InertialSensor: disable register checking in invensensev2 driver
register checking doesn't work for the banked registers used in the
invensensev2 register layout. It ends up setting the wrong register
value in some cases, which can either cause the sensor to stop working
or in the worst case give bad data
2019-05-10 14:55:39 +10:00
Jaaaky 47c65314fb AP_InertialSensor: fix accelcalsimple watchdog 2019-05-01 14:23:20 +10:00
Andrew Tridgell 034d476fa5 AP_InertialSensor: prevent watchdog in accelcal 2019-04-22 16:53:35 +10:00
Andrew Tridgell 9c48d001ac AP_InertialSensor: skip gyro cal on watchdog reset 2019-04-22 16:53:35 +10:00
Andrew Tridgell c988eb2fd9 AP_InertialSensor: don't set INS_ENABLE_MASK to found IMU mask 2019-04-22 14:56:59 +10:00
Andrew Tridgell c7ed4bfbcc AP_InertialSensor: allow testing of IMU failure 2019-04-22 14:56:42 +10:00
Randy Mackay 9fa742e1be AP_InertialSensor: fix compiler warning in BMI088 driver 2019-04-11 10:32:51 +09:00
Peter Barker e0fc73776c AP_InertialSensor: return floats from raw-sample-rate getters
The underlying type changed at some stage but the getters did not
2019-04-09 10:02:16 +10:00
Andrew Tridgell fa63243eb0 AP_InertialSensor: added BMI088 accel config retry 2019-04-08 19:58:12 +10:00
Peter Barker ef860db558 AP_InertialSensor: add floating point constant designators 2019-04-05 23:04:17 -07:00
Michael du Breuil c7a9e8bf93 AP_InertialSensor: Fix implicit include of AP_Logger 2019-04-05 20:12:53 +11:00
L Kurt Shaw d08ab88dea INS: AP_InertialSensor comments for new cubes
Correct comments ICM20648 should have been ICM20948
2019-04-02 10:52:43 +11:00
Tom Pittenger 3eeaa2c8df AP_InertialSensor: rename dataflash to logger 2019-03-28 16:40:57 +11:00
na 494a3f86ad AP_IntertialSensor: support ICM20601 IMU 2019-03-28 09:15:27 +11:00
Randy Mackay 5d8747c81d AP_InetialSensor: fixup ENABLE_MASK parameter desc 2019-03-27 13:14:48 +09:00
Andrew Tridgell 4a334d0ed7 AP_IneertialSensor: fixed startup race in SITL 2019-03-21 18:54:32 +11:00
Andrew Tridgell 0a718ba330 AP_IneertialSensor: fixed orientations and gyro scale factors for new Invensense IMUs 2019-03-21 18:54:32 +11:00
Siddharth Purohit 8c2d3945de AP_IneertialSensor: add support for custom accel scale
adds support for 30g measurement on ICM20649
2019-03-21 18:54:32 +11:00
Siddharth Purohit 3a833d9a90 AP_InertialSensor: fix rotation for ICM20649 2019-03-21 18:54:32 +11:00
Andrew Tridgell 880a55c6a2 AP_InertialSensor: fixes for BMI088 on SPI
The sensor has an unusual SPI interface, with a pad byte on read, and
retries needed on write
2019-03-14 16:10:40 +11:00
L Kurt Shaw 8d75e8c5bb INS: AP_InertialSensor.cpp
Fix typo in comments should be NFC
2019-03-12 15:56:55 +09:00
Andrew Tridgell 81cd103073 AP_InertialSensor: probe for new v2 invensense IMUs
also suppress LSM9DS0 whoami warnings, as these will now be common
with new IMUs

and make 20602 show up as a new devtype so we can distinguish it
2019-03-11 12:40:21 +11:00
Andrew Tridgell dff3ea416c AP_InertialSensor: allow for LSM9DS0 to be used on I2C 2019-03-10 09:03:06 +11:00
Siddharth Purohit 086b4c1cfd AP_InertialSensor: use default value for temperature scale and offset 2019-03-06 20:47:10 +11:00
Siddharth Purohit b76ec8cc11 AP_InertialSensor: fix slave register structure for Invensensev2 2019-03-06 20:47:10 +11:00
Siddharth Purohit 528c0b4d7c AP_InertialSensor: add drivers for register bank based Invensense Sensors 2019-03-06 20:47:10 +11:00
Siddharth Purohit 0cfcd0986e AP_InertialSensor: look for icm20602 for Pixhawk 2 series flight boards 2019-03-06 20:47:10 +11:00
Andrew Tridgell 103af72859 AP_InertialSensor: remove more px4 remnants 2019-02-27 20:32:37 +11:00
Andrew Tridgell 2b285089e9 AP_InertialSensor: widen allowable temp gap on invensense IMUs
some sensors have more temperature noise
2019-02-26 16:18:26 +11:00
Andrew Tridgell 07e2167996 AP_InertialSensor: setup for fmuv6 2019-02-26 16:18:26 +11:00
Tom Pittenger 9347e6d36f AP_InertialSensor: unify singleton naming to _singleton and get_singleton() 2019-02-10 19:09:58 -07:00
Andrew Tridgell 6048c10a7c AP_InertialSensor: added driver for BMI088
setup for 1600 Hz accel sample, 2kHz gyro sample, 24g accel range
2019-01-31 12:05:57 -08:00
Andrew Tridgell 9520f5f768 AP_InertialSensor: removed F4Light 2019-01-21 21:57:21 +11:00
Peter Barker 6fc76a32af GLOBAL: use AP::logger() and strip redundant Log_ from methods 2019-01-18 18:08:20 +11:00
Peter Barker b47733142f GLOBAL: rename DataFlash_Class to AP_Logger 2019-01-18 18:08:20 +11:00
Peter Barker 43e3acc954 AP_InertialSensor: remove use of never-set AP_HAL_PX4 and AP_HAL_VRBRAIN 2019-01-18 09:53:44 +11:00
Peter Barker 43e47f33e4 AP_InertialSensor: remove PX4 backend 2019-01-17 06:41:33 +11:00
Andrew Tridgell a84af85689 AP_InertialSensor: support fast sampling in SITL
this allows testing of fast sample logs for FFT
2019-01-08 21:04:05 +11:00
Andrew Tridgell 512c50a6c4 AP_InertialSensor: use SIM_VIB_FREQ for SITL vibrations
this allows for testing of FFT on logs
2019-01-08 06:49:02 +11:00
Michael du Breuil 983356213a AP_InertialSensor: Remove unused parameter 2018-12-23 12:46:37 -08:00
Randy Mackay 6b3fa520b5 AP_InertialSensor: add range to POS param description 2018-12-13 20:14:01 +09:00
Andrew Tridgell 3de860f73b AP_InertialSensor: fixed orientation of 2nd OmnibusF7V2 IMU 2018-12-12 16:27:34 +11:00