Staroselskii Georgii
f7f9cd2173
AP_InertialSensor: prevented MPU9250 from disabling I2C slaves
2015-01-07 08:41:13 +11:00
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
Randy Mackay
0e7cbd28c8
INS_HIL: init members to resolve compiler warnings
2014-08-14 11:27:32 +09:00
Andrew Tridgell
24251a7e12
AP_InertialSensor: fixed example build
2014-08-13 21:48:35 +10:00
Andrew Tridgell
984064f3d3
AP_InertialSensor: fixed example build
2014-08-13 18:46:44 +10:00
Mikhail Avkhimenia
34da221c3d
AP_InertialSensor: Use MPU9250 DRDY pin only on boards that support it
2014-08-12 22:13:00 +10:00
Andrew Tridgell
f8ceccce32
AP_InertialSensor: improved HIL timing consistancy
...
try to keep the average time for each sample right
2014-08-09 22:50:15 +10:00
Andrew Tridgell
1d4d848300
AP_InertialSensor: fixed a build warning
2014-08-08 13:48:03 +10:00
Andrew Tridgell
ed6ab5f1d3
AP_InertialSensor: use bool for blocking_read()
...
uint8_t return was confusing
2014-08-07 13:09:17 +10:00
Michael Carpenter
b4c0e1215b
AP_InertialSensor: Use return value of blocking_read to handle calibration timeouts
2014-08-07 13:04:18 +10:00
Andrew Tridgell
cc735a4200
AP_InertialSensor: some more debug info for VibTest
2014-07-31 12:48:30 +10:00
Andrew Tridgell
f7b01a6f3f
AP_InertialSensor: avoid integer underflow in mavlink txspace check
2014-07-27 22:18:52 +10:00
Andrew Tridgell
662276597a
AP_InertialSensor: fixed example build
2014-07-25 17:52:14 +10:00
Andrew Tridgell
79f453dfd3
AP_InertialSensor: use LSM9DSO_AM device
2014-07-19 13:23:54 +10:00
Randy Mackay
6baedbda1d
AP_InertialSensor: add empty virtual destructor
2014-07-16 14:56:56 +09:00
Randy Mackay
a09f7b9198
AP_InertialSensor_MPU6k: init members to reduce compiler warnings
2014-07-16 14:40:55 +09:00
Randy Mackay
c5a03ea18e
AP_InertialSensor: init members to reduce compiler warnings
2014-07-16 14:40:53 +09:00
LukeMike
85fc72c57c
AP_InertialSensor: VRBRAIN added 3th inertial sensor
2014-07-15 20:42:15 +10:00
Andrew Tridgell
0f724c1d7a
AP_InertialSensor: removed per-device example code
...
now can use a single generic test for all boards
2014-07-14 09:44:36 +10:00
Andrew Tridgell
5a170c6343
AP_InertialSensor: added INS_generic test
2014-07-14 09:44:36 +10:00
Andrew Tridgell
d1ba78002d
AP_InertialSensor: added paranoid check for DRDY pin
2014-07-14 09:44:36 +10:00
Andrew Tridgell
6f9965cc22
AP_InertialSensor: fixed setup of DRDY pin on MPU9250
2014-07-14 09:44:36 +10:00
Andrew Tridgell
6a6dbe5790
AP_InertialSensor: added check for WHOAMI on MPU9250
2014-07-14 09:44:35 +10:00
Andrew Tridgell
abb53eb9a2
AP_InertialSensor: simplify using HAL board subtypes
2014-07-14 09:44:35 +10:00
Andrew Tridgell
848b563fc3
AP_InertialSensor: rotate acccel/gyro for PXF
2014-07-14 09:44:34 +10:00
Andrew Tridgell
ea188528fc
AP_InertialSensor: fixed build errors for LSM9DSO
2014-07-14 09:44:34 +10:00
Víctor Mayoral Vilches
2982fc029c
AP_InertialSensor_LSM9DS0: Fix _dump_registers method
2014-07-14 09:44:34 +10:00
Víctor Mayoral Vilches
feedc40f72
AP_InertialSensor_LSM9DS0: Move LSM9DS0_DEBUG flag to the header
2014-07-14 09:44:34 +10:00
Andrew Tridgell
297bb52ced
AP_InertialSensor: added MPU9250 header
2014-07-14 09:44:34 +10:00
Víctor Mayoral Vilches
f213f01983
AP_InertialSensor_LSM9DS0: Remove previous CS handling.
...
CS is now being automatically handled by the SPI Driver.
2014-07-14 09:44:33 +10:00
Andrew Tridgell
3ed4f82cb0
AP_InertialSensor: fixed DRDY include for Linux
2014-07-14 09:44:33 +10:00
Andrew Tridgell
06b6d7aaf0
AP_InertialSensor: fixeup DRDY pin for different boards
2014-07-14 09:44:33 +10:00
Víctor Mayoral Vilches
3379ddd51f
AP_InertialSensor_MPU6000: Add _register_write_check method.
...
This private method allows to check whether the value written and
the posterior value readed are the same.
Should be used only for debuging purposes, for release versions use
_register_write instead.
2014-07-14 09:44:33 +10:00
Víctor Mayoral Vilches
0fff8df491
AP_InertialSensor: fix LSM9DS0 test code
2014-07-14 09:32:30 +10:00
Víctor Mayoral Vilches
bb5de8a6a1
AP_InertialSensor_LSM9DS0: Fix the CS.
2014-07-14 09:29:45 +10:00
Víctor Mayoral Vilches
ad3a3f9366
AP_InertialSensor_MPU6000: Fix the CS.
2014-07-14 09:29:45 +10:00
Víctor Mayoral Vilches
aa60a89cda
AP_InertialSensor_MPU9250: Fix SPI CS.
2014-07-14 09:29:45 +10:00
Víctor Mayoral Vilches
bae84e2942
AP_InertialSensor: Add missing library to test example.
2014-07-14 09:29:36 +10:00
Víctor Mayoral Vilches
4df3b55ed4
AP_InertialSensor_MPU9250: Add missing library for example/
...
In order to compile the examples test a library needed to
added.
2014-07-14 09:29:36 +10:00
Víctor Mayoral Vilches
eb95130441
AP_InertialSensor_MPU9250: remove legacy CS.
2014-07-14 09:29:18 +10:00
Víctor Mayoral Vilches
5e7e28a83e
AP_InertialSensor_MPU9250.cpp: Update the DRDY pin.
2014-07-14 09:29:18 +10:00
Víctor Mayoral Vilches
d053a91cd5
AP_InertialSensor_MPU6000: Remove MPU6000_CS_PIN
...
Remove MPU6000_CS_PIN, a legacy way of handling
Chip Select.
2014-07-14 09:29:18 +10:00
Víctor Mayoral Vilches
d9cb29ea8b
AP_InertialSensor_MPU6000: Correct DRDY pin.
2014-07-14 09:29:18 +10:00
Víctor Mayoral Vilches
df14318bbd
AP_InertialSensor_L3G4200D: Clock-based wait_for_sample() impl.
2014-07-14 09:29:08 +10:00
Víctor Mayoral Vilches
7cf1187473
AP_InertialSensor_MPU9150: Clock-based wait_for_sample() impl.
...
Adapt the I2C driver to a system clock based wait_for_sample()
implementation.
The sample rate of the sensor has been corrected to 800 Hz (could be
further pushed up to 1KHz).
Filters for the mag have also been created but remain commented until
the code for the mag is ready.
2014-07-14 09:10:23 +10:00
Víctor Mayoral Vilches
c4babc543d
AP_InertialSensor_LSM9DS0: SPI userspace sensor driver.
...
ST Microelectronics 9 DOF IMU userspace sensor driver. Some
work with the filters needs to be done.
2014-07-14 09:10:23 +10:00
Víctor Mayoral Vilches
1c07985518
AP_InertialSensor_MPU9150: Comment the suspend_timer_procs
...
It causes the driver to hang. This matter should be inspected.
2014-07-14 09:02:47 +10:00
Víctor Mayoral Vilches
d65aefbef5
AP_InertialSensor_MPU6000: Fix the test code so that compiles.
2014-07-14 09:02:47 +10:00
Víctor Mayoral Vilches
fac3d1c271
AP_InertialSensor_MPU9250: SPI userspace sensor driver.
...
InvenSense MPU9250 sensor driver and test code (available under
libraries/examples/).
2014-07-14 09:02:47 +10:00
Víctor Mayoral Vilches
4d79887cc5
L3G4200D: fix in the test example provided.
...
The test coded had a call to "wait_for_sample" that expected one
argument and 0 where provided.
2014-07-14 08:52:51 +10:00
Andrew Tridgell
ab7e96b9de
AP_InertialSensor: updates for ERLE board type
2014-07-14 08:51:44 +10:00