Andrew Tridgell
745b739ab7
AP_InertialSensor: make calibrated() function fast enough to call in flight
...
this will be used in plane to make AHRS SYS_STATUS unhealthy if a user
tries to fly with EKF enabled without a full 3D accel cal.
Note that it doesn't rely on using AP_Param load() to detect that a
value has been set, as some users are first doing a 3D cal then later
doing a 1D cal. In that case load() was returning true and would give
a false positive
2015-01-03 14:06:42 +11:00
Andrew Tridgell
06a72839ed
AP_InertialSensor: fixed error detection on secondary IMUs
...
the break; was preventing error detection on lsm303d/l3gd20
2015-01-01 08:55:57 +11:00
Andrew Tridgell
b9adc6e466
AP_InertialSensor: prefer sensors that have zero error counts
...
if a sensor has failed in flight then try not to use it if another
error-free sensor is available
2014-12-29 21:19:35 +11:00
Andrew Tridgell
7bb56e50aa
AP_InertialSensor: fixed example build
2014-11-28 10:40:19 +11:00
Andrew Tridgell
f84f432ecf
AP_InertialSensor: allow gyro calibration to take up to 30 seconds
...
this gives time for the user time to get their battery hatches on and
hold the model steady. 5 seconds was just far too short
2014-11-22 18:27:51 +11:00
Andrew Tridgell
7c288e020b
AP_InertialSensor: fixed detection of dead IMU
...
if a PX4 sensor does not give new data we need to avoid calling
_rotate_and_offset_*() to avoid marking it as healthy. Otherwise if
the MPU6k dies we won't switch to the LSM303D automatically
2014-11-16 12:30:33 +11:00
Andrew Tridgell
986b7bf894
AP_InertialSensor: fixed frequency to 16 bit in LDM303D and L3GD20 drivers
2014-11-11 17:06:22 +11:00
Andrew Tridgell
3518cf5480
AP_InertialSensor: fixed default MPU9250 orientation for NavIO
2014-11-04 16:18:35 +11:00
Andrew Tridgell
ad7c612334
AP_InertialSensor: fixed SITL with new HIL code
2014-10-24 15:05:44 +11:00
Andrew Tridgell
aeaa3c1e04
AP_InertialSensor: fixed build for VRBrain
2014-10-24 12:10:41 +11:00
Andrew Tridgell
40e83ceb1f
AP_InertialSensor: simplify next sample time calculations
...
this makes the calculation much clearer
2014-10-24 12:10:40 +11:00
Andrew Tridgell
9dfbdb1e69
AP_InertialSensor: run the MPU6000 at 1kHz on fast CPUs
...
use a software filter and 1kHz sampling for better filtering if we
have a fast enough CPU to do it
2014-10-24 12:10:40 +11:00
Andrew Tridgell
a047d1f569
AP_InertialSensor: moved default filter and sample_rate to frontend
...
this simplifies the backends and prevents code repitition
2014-10-24 12:10:40 +11:00
Andrew Tridgell
17b2214798
AP_InertialSensor: make it easier to add multiple backends
...
use _add_backend() to add new backends on startup
2014-10-24 12:10:40 +11:00
Andrew Tridgell
bc5d79118d
AP_InertialSensor: updated comments
2014-10-24 12:10:39 +11:00
Andrew Tridgell
3a9a5a9c18
AP_InertialSensor: implement gyro and accel health monitoring
...
sensor is healthy if it gave a sample on the last update()
2014-10-24 12:10:39 +11:00
Andrew Tridgell
586fa9a816
AP_InertialSensor: added product_id support
...
fill in parameter from first backend
2014-10-24 12:10:39 +11:00
Andrew Tridgell
520727e5bd
AP_InertialSensor: fixed example build
2014-10-24 12:10:39 +11:00
Andrew Tridgell
dbcd02f2be
AP_InertialSensor: converted MPU9150 driver
...
untested conversion
2014-10-24 12:10:38 +11:00
Andrew Tridgell
ff5f791343
AP_InertialSensor: converted flymaple driver to new API
2014-10-24 12:10:38 +11:00
Andrew Tridgell
a42af0f2f1
AP_InertialSensor: use common AP_InertialSensor driver for PX4 and VRBRAIN
2014-10-24 12:10:38 +11:00
Andrew Tridgell
3ce7667e5a
AP_InertialSensor: tidy up MPU6000 driver
2014-10-24 12:10:37 +11:00
Andrew Tridgell
2d47a07480
AP_InertialSensor: ported L3G4200D driver to new API
2014-10-24 12:10:37 +11:00
Andrew Tridgell
deafcd6ddc
AP_InertialSensor: improved timing in all drivers
2014-10-24 12:10:37 +11:00
Andrew Tridgell
ff6d87f145
AP_InertialSensor: minor tidy up for HIL driver
2014-10-24 12:10:37 +11:00
Andrew Tridgell
85686c22ec
AP_InertialSensor: converted the APM1/Oilpan driver to new API
2014-10-24 12:10:37 +11:00
Andrew Tridgell
dcef9bb3b8
AP_InertialSensor: converted the MPU9250 driver to new API
2014-10-24 12:10:37 +11:00
Andrew Tridgell
d48beb0c0f
AP_InertialSensor: converted PX4 driver to new API
2014-10-24 12:10:37 +11:00
Andrew Tridgell
ec11417705
AP_InertialSensor: converted HIL backend, which gets SITL working
2014-10-24 12:10:36 +11:00
Andrew Tridgell
448efc70a3
AP_InertialSensor: first steps in frontend/backend split
...
This converts the MPU6000 driver to a frontend/backend structure, and
disables all other drivers. They will be progressively re-enabled as
each is converted
2014-10-24 12:10:36 +11:00
Randy Mackay
834f2bea07
INS: add gyro_calibrated_ok_all method
...
This returns true if the gyros have been calibrated successfully
2014-10-09 10:00:07 +09:00
Randy Mackay
0803d79701
INS: param descriptions for ACC2, GYR2
2014-09-27 21:05:33 +09:00
Randy Mackay
74553e523d
INS: add get_accel_health_all and get_gyro_health_all
...
Returns true only if all available accels or gyros are healthy
2014-09-03 11:22:46 +09:00
Randy Mackay
50ae5b2519
InertialSensor: reorder .cpp file to match .h
...
No functional changes
2014-09-03 11:19:36 +09:00
Andrew Tridgell
dcdb53584b
AP_InertialSensor: use lockless structures in MPU9250 driver
...
this avoids suspending timers when transferring data between main
thread and SPI read thread
2014-08-22 21:13:11 +10:00
Andrew Tridgell
5c9e5fbc11
AP_InertialSensor: removed use of hrt_absolute_time()
2014-08-20 09:10:24 +10:00
Andrew Tridgell
a14f8dbd0a
AP_InertialSensor_MPU9250: use micros64() and millis64()
2014-08-20 08:02:34 +10:00
Andrew Tridgell
3c2ab31415
AP_InertialSensor: get rid of data_ready for MPU9250
...
when running off a 1kHz timer and reading at 1kHz it is better to
double sample than it is to skip a sample, as skipping samples will
throw the filter off, whereas a double sample will have minimal effect
2014-08-19 20:03:33 +10:00
Andrew Tridgell
9e01c657e5
AP_InertialSensor: update MPU9250 driver for 1kHz operation
...
use a time base sample wait, with 1kHz sampling
2014-08-19 20:03:33 +10:00
Andrew Tridgell
532e9aace4
AP_InertialSensor: fixed timer bug in HIL sensors
2014-08-19 20:03:33 +10:00
Andrew Tridgell
12239de00d
AP_InertialSensor: fix data_ready return for L3GD20
2014-08-19 10:14:20 +10:00
Andrew Tridgell
7286e7acd2
AP_InertialSensor: fixed build errors on APM2
2014-08-19 10:08:17 +10:00
Andrew Tridgell
50068a7c6a
AP_InertialSensor: fixed default orientation for PXF board MPU9250
2014-08-19 10:08:16 +10:00
Víctor Mayoral Vilches
5e5319e23b
AP_InertialSensor: MPU9250 cleaning
2014-08-19 10:08:16 +10:00
Víctor Mayoral Vilches
df1de4efd6
AP_InertialSensor: Driver added for the LSM303D
2014-08-19 10:08:15 +10:00
Víctor Mayoral Vilches
8968647873
AP_InertialSensor: INS_generic example, add support L3GD20
2014-08-19 10:08:15 +10:00
Víctor Mayoral Vilches
0f908a8ccd
HAL_Linux: Add L3GD20 to the AP_InertialSensor header
2014-08-19 10:08:15 +10:00
Víctor Mayoral Vilches
556d46a4ef
AP_InertialSensor: L3GD20 driver added
...
L3GD20 gyro userspace sensor added. The driver constructs
over the implementation of the PX4 Dev Team at
https://github.com/diydrones/PX4Firmware .
2014-08-19 10:08:15 +10:00
Víctor Mayoral Vilches
bfacf08c30
HAL_Linux: LSM9DS0 legacy driver moved to AP_InertialSensor/LSM9DS0/
...
The new LSM9DS0 driver will consist of the AP_InertialSensor_L3GD20 and
the AP_InertialSensor_LSM303D. For that reason the old LSM9DS0
(consisting of gyro and accel+mag implemented on a single class) has
been moved to a folder.
Legacy LSM9DS0 didn't probe to receive "correct" data.
2014-08-19 10:08:15 +10:00
Randy Mackay
51f40fe3d6
INS: add accessor for mpu6k filter
2014-08-14 11:47:23 +09:00