Commit Graph

1010 Commits

Author SHA1 Message Date
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
Peter Barker 011c93f38e AP_InertialSensor: add override keyword 2018-11-08 11:30:12 +11:00
Andrew Tridgell 755dc8dc5d AP_InertialSensor: use WITH_SEMAPHORE()
and removed usage of hal.util->new_semaphore()
2018-10-17 12:54:22 +11:00
Michael du Breuil f51d757844 AP_InertialSensor: Remove unused (and conflicting in some builds) include 2018-10-02 07:09:41 +10:00
Peter Barker 04c36efdbf AP_InertialSensor: eliminate SITL float-equals issues 2018-08-28 09:54:47 +10:00
Michael du Breuil 1efad07a84 AP_InertialSensor: Remove unused ADC include 2018-07-17 09:29:50 +10:00
Andrew Tridgell 5f8b57ba19 AP_InertialSensor: added SITL device IDs 2018-07-13 10:19:01 +10:00
Lucas De Marchi 49d08ba72a Global: remove minlure
Minlure is a port of ArduPilot to Minnow Board connected to daughter
board. Very few of those were produced and nobody is flying with it.

It served its purpose and all the the improvements to ArduPilot remain
regardless of it not being supported anymore. Now it's just adding
maintenance work with no clear benefit, so pull the plug.
2018-06-26 07:32:08 -07:00
Patrick José Pereira 0c06bf89e5 AP_InertialSensor: Use SITL singleton
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
2018-06-26 00:02:01 +01:00
Andrew Tridgell 89b8124560 AP_InertialSensor: added BMI055 IMU driver 2018-06-08 09:56:41 +10:00
Andrew Tridgell bfa66c9397 AP_InertialSensor: detect two IMUs on FMUv5 2018-06-06 07:15:41 +10:00
Francisco Ferreira 8b32960d3e AP_InertialSensor: remove Qualcomm board support 2018-05-17 09:57:20 +10:00
Peter Barker 1a640e3405 AP_InertialSensor: parameterise sensor-rate logging, generalise it
AP_InertialSensor: add parameters for push-to-log interval and count

AP_InertialSensor: rename BAT_RAW to BAT_OPT

This becomes a bitmask of options for the BatchSampler

AP_InertialSensor: rename 'fast sample' to 'sensorrate sample'

AP_InertialSensor: const sensor-rate filter method

AP_InertialSampler: remove hard-coding of sample rate multiplier

AP_InertialSensor: use parameter to enable/disable sensor-rate logging

AP_InertialSensor: use a parameter to control sensor-rate logging

AP_InertialSensor: allow backends to override sensor data multiplier

e.g. some accelerometers are sensitive over wider ranges than the default 16G

AP_Inertialsensor: correct sample rate multiplier
2018-05-01 09:35:29 +10:00
Andrew Tridgell 44131202cd AP_InertialSensor: 4kHz batch sampling 2018-05-01 09:35:29 +10:00
Jacob Walser ad4e928e7d AP_InertialSensor: add support for custom board orientations 2018-04-24 13:04:37 +01:00
Andrew Tridgell ca9d1a55fe AP_InertialSensor: support ICM-20689 IMU
like the 20789, but without the baro
2018-04-24 08:03:46 +10:00
Andrew Tridgell ea2dc9b831 AP_InertialSensor: added OMNIBUSF7V2 INS sensors
a dual-IMU board
2018-04-12 11:50:44 +10:00
Andrew Tridgell f788cde5c7 AP_InertialSensor: use multiply for fifo scale factors
this fixes issue from #8118 too
2018-04-10 14:17:16 +10:00
Peter Barker be634a893f AP_InertialSensor: remove unused ins error count logging 2018-04-04 14:21:20 +01:00
Peter Barker aca87ab638 AP_InertialSensor: remove pointless initialisations
AP_InertialSensor: avoid pointless zeroing in constructor

AP_InertialSensor is either in bss or is created via new (which zeroes
memory)
2018-04-04 12:14:02 +01:00
Peter Barker 2396a248ed AP_InertialSensor: use ahrs singleton for simple accelcal 2018-04-02 23:25:05 +01:00
Lucas De Marchi c4e8aeb105 AP_InertialSensor: remove linux-only include
We already include AP_HAL.h that includes the platform-agnostic gpio
header, which is all that this driver needs. This is an alternative
fix to #7794.
2018-03-09 11:12:31 -08:00
Andrew Tridgell 53b76efbd2 AP_InerialSensor: setup INT_PIN_CFG correctly
this restores the behavior lost with the 20789 driver change
2018-03-08 21:25:14 -08:00
Andrew Tridgell e8726865ab AP_InertialSensor: Correct scaling of batch data 2018-03-08 18:00:16 -08:00
Andrew Tridgell 455c0e25e1 AP_InertialSensor: allow for HAL_INS_NONE 2018-03-02 12:52:50 +11:00
Peter Barker 4288133ce0 AP_InertialSensor: correct compiler warning
../../libraries/AP_InertialSensor/AP_InertialSensor_Invensense.h:108:14:
warning: private field '_error_count' is not used
[-Wunused-private-field]
    uint16_t _error_count;
2018-03-02 09:26:37 +09:00
Andrew Tridgell b61caa9c57 AP_InertialSensor: added SP01 board type 2018-02-14 18:27:00 +11:00
Peter Barker 096f7367bf AP_InertialSensor: add ins() to AP:: namespace 2018-02-13 17:15:05 +11:00
Andrew Tridgell b5e5b622c7 AP_InertialSensor: use register header for Revo driver 2018-02-10 09:14:41 +11:00
Andrew Tridgell 0e6497aa85 AP_InertialSensor: merged in Revo driver 2018-02-10 09:14:41 +11:00
Andrew Tridgell b380143349 AP_InertialSensor: improved handling of I2C invensense sensor
on I2C the lower bus bandwidth changes the tradeoffs
2018-02-08 17:36:33 +11:00
Andrew Tridgell b33c815e96 AP_InertialSensor: added whoami for prototype 20789 2018-02-08 17:36:33 +11:00
Andrew Tridgell ad8db6cda3 AP_InertialSensor: added sensor type ICM20789_SPI 2018-02-08 17:36:33 +11:00
Andrew Tridgell b9e5649888 AP_InertialSensor: support PCNC1 2018-02-08 17:36:33 +11:00
Peter Barker 71cf3941a7 AP_InertialSensor: move Invensense register defines into separate file 2018-02-08 17:36:33 +11:00
Peter Barker 3ee112843c AP_InertialSensor: configure bypass for 20789 like we do for AK8963 2018-02-08 17:36:33 +11:00