Randy Mackay
e5615ec349
INS: add USE parameters
2015-08-19 16:44:15 +09:00
Randy Mackay
affbd67c43
InertialSensor: add vibration monitoring of 2nd IMU
2015-08-19 16:44:12 +09:00
Andrew Tridgell
980659d346
AP_InertialSensor: removed AVR1280 specific ifdef
2015-08-11 16:47:56 +10:00
Gustavo Jose de Sousa
7789aec85b
AP_InertialSensor: standardize inclusion of libaries headers
...
This commit changes the way libraries headers are included in source files:
- If the header is in the same directory the source belongs to, so the
notation '#include ""' is used with the path relative to the directory
containing the source.
- If the header is outside the directory containing the source, then we use
the notation '#include <>' with the path relative to libraries folder.
Some of the advantages of such approach:
- Only one search path for libraries headers.
- OSs like Windows may have a better lookup time.
2015-08-11 16:28:43 +10:00
Randy Mackay
69bfeaf58e
INS: accel offset parameter range desc to 3.5m/s/s
2015-08-10 10:30:34 -07:00
Lucas De Marchi
c3063f0ab2
AP_InertialSensor: MPU6000: be agnostic to I2C bus/address
...
This decision is better made by the caller rather than polluting the
driver with board-specific details.
2015-08-08 14:12:22 +10:00
Lucas De Marchi
4d4dac867e
AP_InertialSensor: pass backend instead of pointer to function
...
Different detect() function might need different arguments and passing a
pointer to function here is cumbersome. For example, it forces to have a
method like "detect_i2c2" rather than allowing hal.i2c2 to be passed as
parameter.
2015-08-08 14:12:22 +10:00
Gustavo Jose de Sousa
d3eebdb6aa
AP_InertialSensor: L3G4200D: add probe code
...
This driver works properly but had the initialization logic missing. Add
the support to probe it.
2015-08-08 14:12:22 +10:00
Lucas De Marchi
55279664c2
AP_InertialSensor: remove out of place ifdef
...
AP_InertialSensor isn't a good place to comment about board issues.
2015-08-08 14:12:21 +10:00
Julien BERAUD
3cf952d1f8
AP_InertialSensor: add fifo support for MPU6000
...
And remove the use of data rdy in this case
2015-07-10 14:24:09 +10:00
Julien BERAUD
8a76ff53bd
AP_InertialSensor: add i2c bus driver for MPU6050
2015-07-10 14:24:09 +10:00
Andrew Tridgell
ac3200fd32
AP_InertialSensor: make max_abs_offsets a single float, not a vector
2015-06-30 10:51:43 +10:00
Gustavo Jose de Sousa
42eb73a1d1
AP_InertialSensor: add LSM9DS0 backend
...
This adds the backend driver for LSM9DS0. This implementation is based on the
legacy driver coded by Víctor Mayoral Vilches (under folder LSM9DS0) and makes
some necessary adaptations and fixes in order to work properly. The legacy
driver folder was removed.
2015-06-30 10:27:46 +10:00
Gustavo Jose de Sousa
c340e072f2
AP_InertialSensor: use accel instance max abs offset instead of a constant value
...
The calibration on LSM9DS0 was giving offsets between 4.0 and 4.2 on x-axis and
around 3.6 on y-axis. It turned out that those offsets were actually right.
The maximum absolute values of calibration offset should be a sensor
characteristic rather than a constant value for all sensors.
The constant value previously used (3.5 m/s/s for all axes) is set here as a
default maximum absolute calibration offset for every instance to keep it
working.
2015-06-30 10:27:44 +10:00
Andrew Tridgell
bc0ae630a1
AP_InertialSensor: always provide delta_velocity and delta_angles
...
this makes the NavEKF code simpler
2015-06-17 13:10:26 +10:00
Andrew Tridgell
727be87d84
AP_InertialSensor: support HIL functions for delta_velocity and delta_angles
2015-06-16 09:53:55 +10:00
Randy Mackay
8ceccd778d
InertialSensor: disable vibration checks on APM2
...
Also bug fix get_accel_clip_count's instance check
2015-06-12 21:36:56 +09:00
Randy Mackay
0db7acc628
InertialSensor: calc vibration and accel clipping
2015-06-12 21:36:22 +09:00
Andrew Tridgell
6a2c585632
AP_InertialSensor: fixed build warnings
2015-05-30 22:51:19 +10:00
Andrew Tridgell
aaa35bd1ec
AP_InertialSensor: using atan2f() gives more accurate euler corrections
...
thanks to Jon and Paul!
2015-05-16 08:19:18 +10:00
Andrew Tridgell
9e723ef907
AP_InertialSensor: added calibrate_trim() function
...
used for redoing trim calculation
2015-05-16 07:56:34 +10:00
Andrew Tridgell
b564ba0868
AP_InertialSensor: fixed AHRS_TRIM calculation again
2015-05-16 07:56:33 +10:00
Jonathan Challinger
159599879f
AP_InertialSensor: simplify and correct AHRS_TRIM computation
2015-05-15 21:03:03 +10:00
Randy Mackay
1f14eec4ea
InertialSensor: accel_calibrated_all_ok replaces calibrated
...
This checks that the current number of accelerometers matches the number
of calibrated accels in order to catch accel failures at boot
2015-05-12 16:32:16 +09:00
Andrew Tridgell
8bf2baef70
AP_InertialSensor: fixed primary accel/gyro in replay
2015-05-11 11:19:11 +10:00
Andrew Tridgell
7d90033a36
AP_InertialSensor: support raw accel and gyro dataflash logging
2015-05-07 12:08:30 +10:00
Andrew Tridgell
089e63f987
AP_InertialSensor: fixed PSTR handling
...
must use PSTR on code compiled for AVR
2015-05-05 13:54:00 +10:00
Andrew Tridgell
e6a8a6da07
AP_InertialSensor: revert AP_Math class change
2015-05-05 13:27:06 +10:00
Tom Pittenger
9e98c68099
AP_InertialSensor: compile warnings: format not a string literal, argument types not checked
...
PSTR() goofs things up when using hal.console->printf_P()
2015-05-05 13:27:01 +10:00
Tom Pittenger
820199635b
AP_InertialSensors: compiler warnings: apply is_zero(float) or is_equal(float)
2015-05-05 13:26:51 +10:00
Tom Pittenger
3cb2221315
AP_IntertialSensor: double to float warning
2015-05-05 13:26:50 +10:00
Randy Mackay
6773c0b232
AP_InertialSensor: default primary accel and gyro
2015-05-01 16:37:33 +09:00
Tom Pittenger
a4b8575432
InertialSensor: fix compile warnings re float constants
2015-04-24 14:03:49 +09:00
Andrew Tridgell
45e016ea5b
AP_InertialSensor: check for zero delta_velocity dt
2015-04-03 15:10:47 -07:00
Jonathan Challinger
b306d7a356
AP_InertialSensor: accel cal sample for 400ms instead of 1s
2015-04-03 14:54:19 -07:00
Jonathan Challinger
1e1d8efa22
AP_InertialSensor: use expected update rate for accel cal sampling
2015-04-03 14:54:17 -07:00
Jonathan Challinger
bd84328440
AP_InertialSensor: hack to "reset" the accel filter before taking a cal sample
2015-04-03 14:54:15 -07:00
Jonathan Challinger
b2b42e081a
AP_InertialSensor: use delta_velocity/dt for calibration if available
2015-04-03 14:54:10 -07:00
Andrew Tridgell
4147825b87
AP_InertialSensor: fixed gyro calibration bug
...
we must not update _gyro_offset[] until we have completed calibration
of that gyro, or we will end up using the new offsets when asking for
the raw gyro vector
2015-04-03 06:57:30 -07:00
Andrew Tridgell
cf2445dc97
AP_InertialSensor: prevent nested accelerometer calibration
2015-03-15 15:22:59 +11:00
Andrew Tridgell
8a99cab535
AP_InertialSensor: load only HIL backend for hil_mode
2015-03-13 22:52:55 +11:00
Andrew Tridgell
07fd31c724
AP_InertialSensor: change copter filters to 20Hz
...
with the backend filters disabled 20Hz is closer to the old default of
30Hz
2015-03-12 13:11:17 +11:00
Andrew Tridgell
3d7d46b9b0
AP_InertialSensor: replaced INS_MPU6K_FILTER with INS_ACCEL_FILTER and INS_GYRO_FILTER
...
this allows filtering to be set separately on accels and gyros where possible
2015-03-12 12:50:31 +11:00
Andrew Tridgell
f3314791f2
AP_InertialSensor: removed INS_CALSENSFRAME
...
it is no longer needed as we have shifted the accel cal indexes
2015-03-12 12:50:31 +11:00
Andrew Tridgell
4bc6c8e655
AP_InertialSensor: shift to new parameter indexes for accel calibration
...
this allows for users to switch between development trees and previous
stable versions while retaining their accel calibration values.
2015-03-12 12:50:30 +11:00
Andrew Tridgell
e6a4b9f68c
AP_InertialSensor: check accel health during accel cal
2015-03-12 12:50:29 +11:00
Andrew Tridgell
875339f12a
AP_InertialSensor: try to avoid a compiler fault in travis
2015-03-12 12:50:29 +11:00
Andrew Tridgell
786172aa4e
AP_InertialSensor: removed 1D accel calibration
...
it is finally time to move on from this. We want to push people
towards better calibration and removing the 1D accel cal is the first
step
2015-03-12 12:50:28 +11:00
Andrew Tridgell
a975520033
AP_InertialSensor: check range of accels in 3D calibration
...
during 3D accel cal it is possible to get data which passes the sphere
fit but which has very poor coverage and does not provide sufficient
data for a good result. This checks that each axis covers a range of
at least 12 m/s/s in body frame
2015-03-12 12:50:28 +11:00
Andrew Tridgell
a8a8628515
AP_InertialSensor: added INS_CALSENSFRAME parameter
...
this allows us to detect if accel calibration was done in sensor frame
or not. If it was done in sensor frame then the accel calibration is
independent of AHRS_ORIENTATION, which makes it easier to move a board
to a new airframe without having to recalibrate.
2015-03-12 12:50:28 +11:00
Jonathan Challinger
2a547f329b
AP_InertialSensor: allow backends to publish delta velocities and angles
2015-03-12 12:50:27 +11:00
Jonathan Challinger
155c173ed1
AP_InertialSensor: rename _rotate_and_offset to _publish
2015-03-12 12:50:27 +11:00
Randy Mackay
5f26a36060
INS: protect against two calibrations running at the same time
2015-03-09 17:58:38 +11:00
Randy Mackay
f9c6e35d19
INS: add calibrating method
2015-03-09 17:58:38 +11:00
Randy Mackay
b0e7990c90
INS: set gyro_cal_ok only after completing calibration
2015-03-09 17:58:37 +11:00
Andrew Tridgell
aec7907571
AP_InertialSensor: updated comment on accel check in gyro cal
2015-03-09 17:58:36 +11:00
Andrew Tridgell
38bde56523
AP_InertialSensor: continue finding best gyro after convergence
...
with multiple gyros if we are still calibrating one of the gyros then
keep looking for better values for the already converged gyros.
2015-03-08 07:49:38 +11:00
Andrew Tridgell
20a4c98bac
AP_InertialSensor: use accelerometers to prevent bad gyro cal
...
if the board is rotating at a steady rate we can end up with a bad
gyro calibration. This can happen on a steadily moving platform such
as a ship.
This uses the accelerometers to detect the steady movement and not
accept the gyro calibration
2015-03-08 07:48:16 +11:00
Randy Mackay
b650d39786
InertialSensor: remove product_id set to zero
2015-02-21 09:14:33 +09:00
Andrew Tridgell
9b2d44d6ed
AP_InertialSensor: use delay_microseconds_boost()
...
this gives much more consistent timing for PX4
2015-02-16 12:19:13 +11:00
Andrew Tridgell
f54d799bff
AP_InertialSensor: added TIMING_DEBUG code for finding loop timing issues
2015-02-16 10:12:10 +11:00
Andrew Tridgell
04bef5ccf3
AP_InertialSensor: don't skip delay if we are a bit early
...
this produces a bit more even timing
2015-02-14 12:25:44 +11:00
Emile Castelnuovo
dae32984f1
AP_InertialSensor: use PX4 library for VRBRAIN boards.
2015-02-02 08:43:59 +11:00
LukeMike
6a93148b92
AP_InertialSensor: added library for VRBRAIN Inertial Sensor
2015-02-02 08:43:58 +11:00
Andrew Tridgell
6e62e1ca7b
AP_InertialSensor: make calibrated() const
2015-02-01 14:13:54 +11:00
Andrew Tridgell
8b59c72eb9
AP_InertialSensor: cope with 2 IMUs in SITL
2015-01-20 19:47:45 +11:00
Andrew Tridgell
b3ce56d34d
AP_InertialSensor: fixed 2nd IMU in Replay
...
this makes for much more accurate replay runs
2015-01-20 09:20:47 +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
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
ad7c612334
AP_InertialSensor: fixed SITL with new HIL code
2014-10-24 15:05:44 +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
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
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
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
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
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
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
Randy Mackay
c5a03ea18e
AP_InertialSensor: init members to reduce compiler warnings
2014-07-16 14:40:53 +09:00
Randy Mackay
7e04b5d1f1
INS: calibrated method checks all accelerometers
2014-07-13 22:05:21 +09:00
Andrew Tridgell
ca12592448
AP_InertialSensor: allow for 3 accels and 3 gyros on Pixhawk
...
this supports FMUv3
2014-06-30 07:58:27 +10:00
Andrew Tridgell
2763393908
AP_InertialSensor: fixed some compiler warnings
2014-03-24 12:52:16 +11:00
Andrew Tridgell
a95a3142e0
AP_InertialSensor: use fixed size arrays
...
apparently helps SITL build on MacOS
2014-02-08 19:32:26 +11:00
Andrew Tridgell
58d3729d16
AP_InertialSensor: fixed default health functions
...
this fixes INS on APM1. Thanks to Mike McCauley for noticing this!
2014-01-22 22:08:28 +11:00
Don Gagne
68b3b31499
Param doc typo
2014-01-18 10:18:58 +09:00
Randy Mackay
965e5b2dfd
INS: check for good calibration for 10seconds
...
Shortened gyro calibration commit also halved the total time we would
look for a good gyro calibration. This restores the total time to 10
seconds.
2014-01-17 12:48:11 +09:00
Randy Mackay
1f76ada9dd
INS: shortened gyro calibration
...
Removed delays before calibration, reduced number of samples taken,
widened convergence criteria
2014-01-16 13:40:49 +09:00
Randy Mackay
a400ddeb88
INS: replace APM with vehicle in accel calibrate
2013-12-28 10:41:49 +09:00