Andrew Tridgell
f24de4e2bc
AP_NavEKF3: set a min yaw accuracy from GPS of 5 degrees
...
GPS modules tend to be rather optimistic about their yaw accuracy. By
setting a min or 5 degrees we prevent the user constantly getting
warnings about yaw innovations
2020-02-05 10:13:53 +11:00
Andrew Tridgell
b1e0299a0f
AP_NavEKF3: use parent class for intermediate static variables
...
this makes the code faster as well as using less memory when both EK2
and EK3 are enabled
2020-02-05 10:10:20 +11:00
Andrew Tridgell
6ffffff8c6
AP_NavEKF3: moved intermediate variables to common memory
...
this moves intermediate variables from being per-core to being common
between cores. This saves memory on systems with more than one core by
avoiding allocating this memory on every core.
This is an alternative to #11717 which moves memory onto the stack. It
doesn't save as much memory as #11717 , but avoids creating large stack
frames
2020-02-05 10:09:00 +11:00
Andrew Tridgell
43df0022e1
use common variables for EKF
2019-10-06 10:58:07 +11:00
Andrew Tridgell
a49cc87dae
AP_NavEKF3: change optimisation from -O3 to -O2
2019-10-02 12:03:53 +10:00
Peter Barker
6693610c7a
AP_NavEKF3: correct return of empty prearm string
2019-09-22 21:09:04 +10:00
Andrew Tridgell
372eca7dad
AP_NavEKF3: fixed use of uninitialised variable in EKF3 mag fusion
...
not all elements of H_MAG are initialised, but they are used, as found
by valgrind
2019-09-22 21:07:38 +10:00
Andrew Tridgell
fae2e44eac
AP_NavEKF3: reset inhibitMagStates on in-flight yaw reset
...
this is needed to prevent the next ConstrainVariances() from zeroing
the variances, which leads to very slow learning of mag states
2019-09-11 14:22:18 +10:00
Randy Mackay
0e1a2efb7c
EKF3: RNG_USE_HGT param only used when ALT_SOURCE = rangefinder
2019-09-10 18:44:52 +10:00
Michael du Breuil
9a7d64e8fc
AP_NavEKF3: Allow the GPS to be responsible for logging
2019-09-10 09:09:17 +10:00
Peter Barker
7ea449076f
AP_NavEKF3: use timing logging from AP_NavEKF
2019-09-03 09:28:37 +10:00
Peter Barker
61ed6e07eb
AP_NavEKF3: shorten EKF3 initialisation send-text string
...
Now:
pbarker@bluebottle:~/rc/ardupilot(master)$ echo -n "EKF3 IMU1 buffers IMU=11 OBS=4 OF=10, dt=0.0120" | wc
0 7 47
pbarker@bluebottle:~/rc/ardupilot(master)$
Closes #11952
2019-08-05 19:50:32 +10:00
Andrew Tridgell
fc65e04ef2
AP_NavEKF3: fixed baro innovation gate when on ground with AIDING_NONE
...
when on the ground without a position source we would disable the
innovation gate for the barometer. This meant that a single (or small
number of) really bad baro readings would be fused into the EKF,
causing it to destabilise
Fixes #11903
2019-07-30 08:23:21 +10:00
Andrew Tridgell
04944fa6ce
AP_NavEKF3: review fixes
...
thanks Paul!
2019-07-29 10:08:22 +10:00
Andrew Tridgell
451fe840ee
AP_NavEKF3: ensure that EKF origin stays in sync on all cores
...
this prevents the EKF origin on different cores from being initialised
to different values. A common value is stored in the frontend and used
by a core if it doesn't have an origin
2019-07-29 10:08:22 +10:00
Andrew Tridgell
0fcb2037e1
AP_NavEKF3: use origin lat for earth rates
...
home may not yet be set when this code is run, so using home may be
invalid
2019-07-29 10:08:22 +10:00
Andrew Tridgell
a3411efdb5
AP_NavEKF3: set origin on all cores
...
when EKF origin is set, make sure it is set on all cores
2019-07-29 10:08:22 +10:00
Andrew Tridgell
3818d8ecda
AP_NavEKF3: restrict setting of EKF origin
...
only allow EKF origin to be set if EKx_GPS_TYPE is set to 3, which is
used for indoor operation
2019-07-29 10:08:22 +10:00
Siddharth Purohit
db9f7c3dd5
AP_NavEKF3: do logging for 3rd EKF core
2019-07-23 12:34:38 +10:00
priseborough
209a32b8b9
AP_NavEKF3: Fix bug in use of external 321 yaw to align
2019-07-13 11:05:57 +10:00
priseborough
122f214416
AP_NavEKF3: Don't allow mag to interfere with use of external yaw sensor
2019-07-13 11:05:57 +10:00
Andrew Tridgell
b56914b879
AP_NavEKF3: use GPS yaw if available and enabled
...
this allows a suitable GPS to be used as an external yaw source
2019-07-13 11:05:57 +10:00
priseborough
0c4f92d4c1
AP_NavEKF3: Add control logic to use external yaw sensor
2019-07-13 11:05:57 +10:00
priseborough
71d358803a
AP_NavEKF3: Fix yaw sensor alignment status reporting
2019-07-13 11:05:57 +10:00
priseborough
977a7b68ed
AP_NavEKF3: Add push to buffer for external yaw sensor data
2019-07-13 11:05:57 +10:00
priseborough
0a971c5181
AP_NavEKF3: Add function to reset yaw to external measurement
2019-07-13 11:05:57 +10:00
Andrew Tridgell
62575a194c
AP_NavEKF3: Add data buffers for yaw sensor
2019-07-13 11:05:57 +10:00
priseborough
87c7649d09
AP_NavEKF3: Add interface for yaw angle measurements
2019-07-13 11:05:57 +10:00
Andrew Tridgell
634db441f8
AP_NavEKF3: origin handling fixes from Francisco
2019-07-11 06:40:55 +10:00
Andrew Tridgell
92783bccfa
AP_NavEKF3: don't allow height datum reset when not on ground
2019-07-07 19:20:32 +10:00
Andrew Tridgell
3f9e48951b
AP_NavEKF3: set terrainState to zero on height datum reset
2019-07-07 19:20:32 +10:00
Andrew Tridgell
f3fc910abe
AP_NavEKF3: continuously update gpsGoodToAlign
...
use it to determine how to handle a height datum reset
2019-07-07 19:20:32 +10:00
Andrew Tridgell
b9a5794671
AP_NavEKF3: ensure that both AMSL and relative alt are correct after a reset
...
this forces the EKF origin to the GPS alt on a height datum reset if
we have GPS lock. If we don't do this then the reported AMSL alt will
drift over time away from the GPS alt when we reset while on the
ground
2019-07-07 19:20:32 +10:00
Andrew Tridgell
2208689893
AP_NavEKF3: don't use disabled gyros in opticalflow takeoff detection
2019-07-07 19:03:01 +10:00
Andrew Tridgell
209bca162c
AP_NavEKF3: added inactive bias learning
...
this allows for biases on inactive IMUs to be learned so that an IMU
switch within an EKF lane does not cause a jump in the IMU data
2019-07-07 19:03:01 +10:00
Peter Barker
ce45baa034
AP_NavEKF3: factor out and logging functions, reuse for 2nd core
2019-07-06 19:05:51 +10:00
Peter Barker
f3f364de26
AP_NavEKF3: move logging in from AP_Logger
2019-07-06 19:05:51 +10:00
Andrew Tridgell
5151416080
AP_NavEKF3: force first EKF lane when disarmed
...
this ensures we consistently fly with EKF lane1 if it is healthy at
the point we arm. Otherwise the choice of lane will be a lottery.
This is important as many systems have quite different filtering and
vibration characteristics on their different IMUs. We by default
enable fast sampling only on the first IMU for example, which means
the 2nd and 3rd IMUs are more vulnerable to high freq causing
aliasing.
2019-07-04 06:48:23 +10:00
Peter Barker
ef2589738d
AP_NavEKF3: use beacon singleton
2019-07-01 07:20:58 +09:00
Michael du Breuil
b624f6f008
AP_NavEKF3: Reduce scope of AP_Baro.h
2019-06-27 14:56:21 +10:00
Michael du Breuil
be74b631fe
AP_NavEKF3: Fix AP_GPS.h include
2019-06-18 10:02:05 +10:00
Andrew Tridgell
60831c2878
AP_NavEKF3: added checkLaneSwitch()
...
this allows the vehicle code to ask the EKF to change lanes if it is
about to do an EKF failsafe
2019-06-12 09:52:20 +10:00
Peter Barker
dce472745e
AP_NavEKF3: take EAS2TAS from AHRS rather than airspeed
2019-06-06 12:44:36 +10:00
Jaaaky
f21e4d833c
AP_NavEKF3: Fix GPS < 3D empty PreArm: msg-as EKF2
2019-05-20 16:57:57 +10:00
Randy Mackay
0a5d6a430a
AP_NavEKF3: accept optical flow data at up to 50hz
2019-05-11 16:23:57 +09:00
Andrew Tridgell
e4f6ffe719
AP_NavEKF3: fixed bug in EKF lane selection
...
this fixes an issue in selecting the best lane to change to when we
have 3 or more EKF cores. The bug is that if the current lane is
unhealthy it would always choose the last healthy lane instead of
choosing the lane with the lowest score
2019-05-07 06:59:50 +10:00
Michael du Breuil
fe3b29a088
AP_NavEKF3: Allow checking all cores for health
2019-04-09 10:53:25 +10:00
Pierre Kancir
b3a1c9c90c
AP_NavEKF3: use get_distance_NE instead of location_diff
2019-04-08 08:00:52 -07:00
Paul Riseborough
9aaa0cd2e0
AP_NavEKF3: Fix typo in comment
2019-04-02 10:51:12 +11:00
Paul Riseborough
b7e0a2345c
AP_NavEKF3: Fix indexing error
...
Caused by copy and paste from AP_NavEKF2 which useds index 5 for vertical velocity. EKF3 should use index 6.
2019-04-02 10:51:12 +11:00