Andrew Tridgell
1ccda938cb
AP_NavEKF3: make external navigation optional
2021-01-24 11:56:52 +11:00
Andrew Tridgell
8da511f039
AP_NavEKF3: make body odomotry build depend on vehicle type
...
saves about 11k of flash
2021-01-24 11:56:52 +11:00
Peter Barker
3582b69e9c
AP_NavEKF3: remove getFilterTimeouts access methods
2021-01-22 13:04:36 +11:00
Peter Barker
b3bacdd33c
AP_NavEKF3: remove internal-only getTiltError method
2021-01-21 21:26:17 +11:00
Peter Barker
5ad0ac6727
AP_NavEKF3: remove unused getAccelNED method
2021-01-21 21:26:17 +11:00
Randy Mackay
4492e5024c
AP_NavEKF3: enable ekf3 by default
2021-01-16 08:24:23 +09:00
Andy Piper
099d6aa72e
AP_NavEKF3: add filter reset when vehicle is idle for too long
2021-01-15 15:47:20 +11:00
chobitsfan
26a3a02c81
AP_NavEKF3: use posxy_source in all places
2021-01-14 16:49:12 +09:00
chobits
e73d28fe19
AP_NavEKF3: remove redundant extnav code
2021-01-12 21:56:36 +09:00
Andrew Tridgell
59fa794818
AP_NavEKF3: constrain vertical error
...
this prevents a floating point exception with external AHRS
2021-01-05 21:13:12 +11:00
Randy Mackay
647c568ab9
AP_NavEKF3: out-of-date comments removed
...
GPS, Static and ExtNav yaw buffers have been separated
2021-01-05 10:58:06 +11:00
Randy Mackay
27c998ad94
AP_NavEKF3: rename source and yawFusionMethod from EXTERNAL to GPS
2021-01-05 10:58:06 +11:00
Randy Mackay
c14b4a8b6c
AP_NavEKF3: add support for GSF as yaw source
2021-01-05 10:58:06 +11:00
Randy Mackay
5891c6ace8
AP_NavEKF3: separate GPS yaw from ExtNav yaw
2021-01-05 10:58:06 +11:00
Randy Mackay
6850b48ea1
AP_NavEKF3: add comments for yaw sensor variables
2021-01-05 10:58:06 +11:00
Andrew Tridgell
e747edbcf2
AP_NavEKF3: fixed init order for scheduler
...
this can impact replay of EKF2
2021-01-02 10:30:26 +11:00
Randy Mackay
39be85cef4
AP_NavEKF3: integrate Source loss of init
2020-12-21 16:56:38 +09:00
Peter Barker
6dfd2f2ff9
AP_NavEKF3: use use_EKFGSFYaw to reduce code duplication
2020-12-17 16:00:29 +09:00
Randy Mackay
a2cca60beb
AP_NavEKF3: constify EKFGSF_getYaw
2020-12-16 19:18:29 +11:00
Randy Mackay
0c3fcfd9d6
AP_NavEKF3: add missing break to case statements
2020-12-16 19:18:29 +11:00
Randy Mackay
9cb529cfd6
AP_NavEKF3: minor formatting fix
...
also replace tab with spaces
2020-12-16 19:18:29 +11:00
Paul Riseborough
908b348c31
AP_NavEKF3: Fix typo in enum label
2020-12-15 19:29:16 +11:00
Randy Mackay
e819dbdd64
AP_NavEKF3: add EKFGSF_getYaw to reduce duplicate code
2020-12-15 19:29:16 +11:00
Randy Mackay
c2edae905f
AP_NavEKF3: simplify logic when updating yawAngDataStatic
2020-12-15 19:29:16 +11:00
Randy Mackay
843ddb4fdc
AP_NavEKF3: minor format fix
2020-12-15 19:29:16 +11:00
Paul Riseborough
a9e76d44af
AP_NavEKF3: Clean up yaw fusion logic
2020-12-15 19:29:16 +11:00
Paul Riseborough
ccfd89240b
AP_NavEKF3: Fix error in calculation of static 312 order yaw reference
2020-12-15 19:29:16 +11:00
Dr.-Ing. Amilcar do Carmo Lucas
f77ab30f7a
Revert "AP_NavEKF3: Remove unsupported parameter unit descriptions"
...
This reverts commit 4f4a2f446d
.
Makes more sense to add those to the list of supported units
2020-12-15 18:22:36 +11:00
Paul Riseborough
8f32430294
AP_NavEKF3: Fix white spaces
2020-12-11 15:21:41 +11:00
Paul Riseborough
bdc202378a
AP_NavEKF3: fix white space
2020-12-11 15:21:41 +11:00
Paul Riseborough
ed17d8e48f
AP_NavEKF3: Improve parameter display names
2020-12-11 15:21:41 +11:00
Paul Riseborough
171f0b399f
AP_NavEKF3: Remove commented code
2020-12-11 15:21:41 +11:00
Andrew Tridgell
b86c014400
AP_NavEKF3: rename drag parameters to start with EK3_DRAG_
2020-12-11 15:21:41 +11:00
Paul Riseborough
47d4506e68
AP_NavEKF3: Add drag and sideslip innovation logging
2020-12-11 15:21:41 +11:00
Paul Riseborough
4884476c09
AP_NavEKF3: Formatting and comment fixes
2020-12-11 15:21:41 +11:00
Andrew Tridgell
be4d10a95e
AP_NavEKF3: rework parameter handling
...
and fixed indentation
2020-12-11 15:21:41 +11:00
Paul Riseborough
5da62aeaa2
AP_NavEKF3: Fix CI build errors
2020-12-11 15:21:41 +11:00
Paul Riseborough
0d2c235027
AP_NavEKF3: Fix #define typo
2020-12-11 15:21:41 +11:00
Paul Riseborough
ab05e8ed4a
AP_NavEKF3: Update param descriptions
2020-12-11 15:21:41 +11:00
Paul Riseborough
4f4a2f446d
AP_NavEKF3: Remove unsupported parameter unit descriptions
2020-12-11 15:21:41 +11:00
Paul Riseborough
c9ab4b18b0
AP_NavEKF3: Add multicopter wind estimation
2020-12-11 15:21:41 +11:00
Andrew Tridgell
ac4a05ffbf
AP_NavEKF3: fixed null dereference of airspeed
...
this caused a segfault in replay
2020-12-11 14:22:46 +11:00
Andrew Tridgell
2071a19a40
AP_NavEKF3: only fuse airspeed if healthy
2020-12-11 09:59:49 +11:00
Peter Barker
58f6570755
AP_NavEKF3: stop using QUAT_* defines from AP_Logger/LogStructure.h
...
The EKFs logging is independant so we can kill EKF2...
Also use correct structure for logging XKF1; these structures were
identical.
2020-12-08 11:30:10 +11:00
chobits
013b39d2a6
AP_NavEKF3: fix ext nav vel timestamp cal
2020-12-07 08:54:42 +09:00
Peter Barker
287e9350a5
AP_NavEKF3: move log message IDs in from AP_Logger LogStructure
2020-12-03 19:22:26 +11:00
Peter Barker
79109458c2
AP_NavEKF3: move EKF3 logging structures into EKF3 LogStructure.h
2020-12-03 19:22:26 +11:00
Andrew Tridgell
bdba430e55
AP_NavEKF3: save memory on beacon debug structure
...
only allocate when beacons are enabled. This relies on a guarantee in
the DAL that the beacon count cannot change
2020-12-01 10:53:08 +11:00
Andrew Tridgell
bb32f1a397
AP_NavEKF3: avoid initialising unused ring buffers
...
this assumes the nav sources are treated as reboot required
2020-12-01 10:53:08 +11:00
Peter Barker
e972fb31b1
AP_NavEKF3: remove unused variables
2020-12-01 10:40:09 +11:00
Peter Barker
0529ddcd67
AP_NavEKF3: move badMagYaw onto stack
2020-12-01 10:40:09 +11:00
Peter Barker
2885026bba
AP_NavEKF3: move tasHealth to be a stack variable
2020-12-01 10:40:09 +11:00
Peter Barker
b79a26135c
AP_NavEKF3: move posvel fusion health booleans to be on the stack
2020-12-01 10:40:09 +11:00
Peter Barker
2d25149e2e
AP_NavEKF3: move global state to be on the stack
2020-12-01 10:40:09 +11:00
Andrew Tridgell
d242339f2e
AP_NavEKF3: added have_vz flag to GPS buffer data
...
this ensures that we record GPS vertical velocity status for every
sample correctly
2020-12-01 10:33:50 +11:00
Andrew Tridgell
80f7906744
AP_NavEKF3: removed inhibitGps and inhibitGpsVertVel options
...
these were unused
2020-12-01 10:33:50 +11:00
Andrew Tridgell
603e0c090d
AP_NavEKF3: don't reset EKx_GPS_TYPE when GPS has no vertical velocity
...
setting the parameter to 1 causes the following issues:
- the GPS may not have vertical velocity at the time the parameter
set happens, but may get it later when the GPS is fully configured
- we may switch between GPS modules which do/don't have vertical
velocity
- the user may download parameters after the set(1), and end up with
incorrect parameters they may later load onto the vehicle,
permanently disabling use of vertical velocity
2020-12-01 10:33:50 +11:00
Peter Barker
52b8b95a72
AP_NavEKF3: rearrange readGPSData to remove some nesting
2020-11-30 11:51:12 +11:00
Randy Mackay
4cd1c3cfde
AP_NavEKF3: param conversion loses config_error
...
config_error should only be run as part of setup because it may never return
2020-11-27 08:20:07 +09:00
Randy Mackay
adfc92523b
AP_NavEKF3: add configuredToUseGPSForPosXY
2020-11-25 21:00:07 +11:00
Andrew Tridgell
7eea13f86f
AP_NavEKF3: fixed build of standalone replay link test
...
parameter conversion not needed for replay
2020-11-24 20:46:37 +11:00
Peter Barker
200b085eea
AP_NavEKF3: move XKY0 and XKY1 to be normal log structures (from Log_Write)
2020-11-22 20:47:29 +11:00
Peter Barker
e1a033b296
AP_NavEKF3: make logging a core concern
...
Also dissolve some methods only used for logging
2020-11-22 20:47:29 +11:00
Peter Barker
914629351f
AP_NavEKF3: use scalar rather than array for state-prediction-allowed
...
EKF2 needs this for choosing alternate cores. EKF3 does not.
2020-11-22 14:09:48 +11:00
Paul Riseborough
8561f5239d
AP_NavEKF3: Fix bug preventing yaw alignment to EKF-GSF estimate
2020-11-21 12:56:10 +11:00
Andrew Tridgell
1e4b1d7563
AP_NavEKF3: convert to using common buffer classes
...
this saves a considerable amount of flash
2020-11-20 21:56:32 +11:00
Randy Mackay
d1983b0b77
AP_NavEKF3: fixup source param conversion
...
shorten param conversion config error
if gps and optical flow are enabled we default SRC2_VELXY to optflow
convert_params run from InitialiseFilter
ensure param conversion only run once
2020-11-20 16:43:44 +09:00
Randy Mackay
04e3623620
AP_NavEKF3: improve MAG_CAL vs EK3_SRCn_YAW checks
...
MAG_CAL param description include deprecated values
Pre-arm check of MAG_CAL using deprecated values
effective_magCal interprets 5 (was EXTERNAL_YAW) as Never, 6 (was EXTERNAL_YAW_FALLBACK) as WhenFlying
Update comments in param conversion from MAG_CAL to EK3_SRC1_YAW
2020-11-20 16:43:44 +09:00
Andrew Tridgell
36c946113d
AP_NavEKF3: handle compass fallback in yaw source reset
...
if we get to this point we must be using the compass fallback logic,
and should do the reset
2020-11-20 16:43:44 +09:00
Randy Mackay
8895d20c45
AP_NavEKF3: rename setPosVelYawSourceSet
2020-11-20 16:43:44 +09:00
Randy Mackay
5eb3875ebb
AP_NavEKF3: rename posxy_source_last and posxy_source_reset
2020-11-20 16:43:44 +09:00
Randy Mackay
f88364d653
AP_NavEKF3: use_compass minor order fixup
2020-11-20 16:43:44 +09:00
Randy Mackay
b475f01b25
AP_NavEKF3: update comments
2020-11-20 16:43:44 +09:00
Randy Mackay
0f8d0ef11b
AP_NavEKF3: move sources to 2nd bank of parameters
2020-11-20 16:43:44 +09:00
Randy Mackay
33b6212cce
AP_NavEKF3: rename _sources to sources
2020-11-20 16:43:44 +09:00
Randy Mackay
9716b09cad
AP_NavEKF3: minor indenting fix
2020-11-20 16:43:44 +09:00
Randy Mackay
6daaa06317
AP_NavEKF3: integrate AP_NavEKF_Source::useVelXYSource
...
also integrate useVelZSource
2020-11-20 16:43:44 +09:00
Andrew Tridgell
72ee7d15e1
AP_NavEKF3: fixup for AP_DAL
2020-11-20 16:43:44 +09:00
Randy Mackay
73835f0c11
AP_NavEKF3: pre_arm_check includes sources
2020-11-20 16:43:44 +09:00
Randy Mackay
6c0bb6a198
AP_NavEKF3: add convert_params for source
2020-11-20 16:43:44 +09:00
Randy Mackay
849e94cc24
AP_NavEKF3: call sources align inactive sources
2020-11-20 16:43:44 +09:00
Randy Mackay
ba9f60abc7
AP_NavEKF3: add getVelInnovationsAndVariancesForSource
2020-11-20 16:43:44 +09:00
Randy Mackay
58aa6086df
AP_NavEKF3: always calculate GPS innovations and variances
2020-11-20 16:43:44 +09:00
Randy Mackay
e7e91b1c3b
AP_NavEKF3: always calculate extNav innovations and variances
2020-11-20 16:43:44 +09:00
Randy Mackay
6b2b5c4ca0
AP_NavEKF3: add CalculateVelInnovationsAndVariances
2020-11-20 16:43:44 +09:00
Randy Mackay
2505fd5c1c
AP_NavEKF3: body and wheel odometry check source
2020-11-20 16:43:44 +09:00
Randy Mackay
1263648d88
AP_NavEKF3: beacon fusion checks source
2020-11-20 16:43:44 +09:00
Randy Mackay
8a56ce49be
AP_NavEKF3: optical flow fusion checks source
2020-11-20 16:43:44 +09:00
Randy Mackay
4cadaa5194
AP_NavEKF3: readyToUseOptFlow, Beacon, ExtNav check source
2020-11-20 16:43:44 +09:00
Randy Mackay
faed58a027
AP_NavEKF3: integrate Source for yaw
2020-11-20 16:43:44 +09:00
Randy Mackay
8931e50166
AP_NavEKF3: integrate Source for alt
2020-11-20 16:43:44 +09:00
Randy Mackay
c21d58ebea
AP_NavEKF3: integrate Source for position
2020-11-20 16:43:44 +09:00
Andrew Tridgell
4c606a30bb
AP_NavEKF3: use common structure names
2020-11-17 13:45:07 +11:00
Paul Riseborough
aaf558f593
AP_NavEKF3: Add velocity innovation check to use of EKF-GSF yaw
...
Only apply to non fly forward vehicle, eg copters, because magnitude of velocity innovation produced by plane launches is TBD.
2020-11-16 16:01:13 +11:00
Paul Riseborough
db86a5acc8
AP_NavEKF3: Don't update yaw estimator with bad GPS
2020-11-16 16:01:13 +11:00
Andrew Tridgell
5686dafeef
AP_NavEKF3: fixed logged core for GSF messages
2020-11-16 10:28:43 +11:00
Andrew Tridgell
03f2e853ce
AP_NavEKF3: fixed memory corruption on push before init
...
this fixes a bug that happens with VISION_SPEED_ESTIMATE from a
companion computer, which may come in before the EKF buffers are
allocated. That causes a push to an uninitialised ringbuffer which
triggers memory corruption
found using the new memory guard system
2020-11-15 15:42:48 +11:00
Andrew Tridgell
c14d19be68
AP_NavEKF3: fixed gcc 9.3 build error
...
gcc 9.3 doesn't like the use of get_accel(i) when array length is 1
2020-11-13 14:30:11 +11:00
Andrew Tridgell
0bc77a3baf
AP_NavEKF3: fixed whitespace
2020-11-10 16:15:45 +11:00
Andrew Tridgell
6ee1b23d28
AP_NavEKF3: removed use of another lanes gyro in optflow takeoff detection
...
as discussed with Paul
2020-11-10 16:15:45 +11:00
Andrew Tridgell
6fe05a9ab6
AP_NavEKF3: restore XKTV message
2020-11-10 16:15:45 +11:00
Andrew Tridgell
f5275fd0ad
AP_NavEKF3: fixed use of pointers in ringbuffers
...
these don't work with AP_DAL
2020-11-10 16:15:45 +11:00
Andrew Tridgell
eaa8474563
AP_NavEKF3: cope with INS_MAX_INSTANCES below 3
2020-11-10 16:15:45 +11:00
Andrew Tridgell
9b81c5a1e0
AP_NavEKF3: use dal reference in EKF backends
...
saves a bit of flash space
2020-11-10 16:15:45 +11:00
Andrew Tridgell
1bdf6173ec
AP_NavEKF3: removed have_ekf_logging
2020-11-10 16:15:45 +11:00
Andrew Tridgell
21dfdc2192
AP_NavEKF3: use DAL for body frame odometry
2020-11-10 16:15:45 +11:00
Andrew Tridgell
a0de6c620f
AP_NavEKF3: use selected GPS for gps_yaw_deg()
...
more than one GPS could provide yaw
2020-11-10 16:15:45 +11:00
Andrew Tridgell
f4c3d7286c
AP_NavEKF3: support replay with wheel odomotry
2020-11-10 16:15:45 +11:00
Andrew Tridgell
e87f98066f
AP_NavEKF3: support replay with external navigation data
2020-11-10 16:15:45 +11:00
Andrew Tridgell
7bbbbd314c
AP_NavEKF3: added optflow support for AP_DAL
2020-11-10 16:15:45 +11:00
Andrew Tridgell
31091d6307
AP_NavEKF3: use ekf_low_time_remaining for core scheduling
2020-11-10 16:15:45 +11:00
Andrew Tridgell
f3c3778169
prevent duplicate EKF logging
...
vehicle code sometimes tries to log the same data twice
2020-11-10 16:15:45 +11:00
Andrew Tridgell
096aab9388
AP_NavEKF3: convert to use AP_DAL for new replay structure
...
Co-authored-by: Peter Barker <pbarker@barker.dropbear.id.au>
2020-11-10 16:15:45 +11:00
Randy Mackay
2681d3afe2
AP_NavEKF3: simplify alignYawAngle
2020-11-03 11:00:01 +11:00
Peter Barker
fc49b55b85
AP_NavEKF3: make coreBetterScore const
2020-11-03 10:39:35 +11:00
Randy Mackay
b726630ef4
AP_NavEKF3: pos timeout or glitch does not reset vel if fusing successfully
...
vel is not reset if GPS velocity, optical flow, visual odometry or wheel
encoders are successfully being fused
2020-10-28 19:06:53 +11:00
Randy Mackay
3b38aa6d7b
AP_NavEKF3: GPS change pos reset uses ResetPositonNE and ResetPositionD
...
Using these existing functions removes some code duplicate
non-functional change
2020-10-28 19:03:34 +11:00
Randy Mackay
7b898ee001
AP_NavEKF3: minor comment and format fixes
2020-10-28 12:17:40 +09:00
Paul Riseborough
f2af2b3458
AP_NavEKF3: Initialise tiltErrorVariance class variable
2020-10-26 11:03:50 +11:00
Paul Riseborough
43386a8eea
AP_NAvEKF3: Use a const reference
2020-10-26 11:03:50 +11:00
Paul Riseborough
64a3d8fe4e
AP_NavEKF3: Update documentation
2020-10-26 11:03:50 +11:00
Paul Riseborough
6c7820dd8d
AP_NavEKF3: Add verification of tiltErrorVariance() method in SITL
2020-10-26 11:03:50 +11:00
Paul Riseborough
90e928c32a
AP_NavEKF3: Re-tune tilt alignment check
...
New tilt error variance estimate is more accurate and larger than before.
2020-10-26 11:03:50 +11:00
Paul Riseborough
16ae75a681
AP_NavEKF3: Consolidate and log tilt error variance calculation
2020-10-26 11:03:50 +11:00
Paul Riseborough
8a88dd23a2
AP_NavEKF3: Add missing generated code file for yaw fusion
2020-10-26 11:03:50 +11:00
Paul Riseborough
69632336e1
AP_NavEKF3: Remove singularity in yaw fusion at +-90deg yaw
...
Uses sympy derivation
2020-10-26 11:03:50 +11:00
Paul Riseborough
4e41e9f5f1
AP_NavEKF3: Ensure consistent use of 312 or 321 rotation order
...
Prevents possibility of a differnt sequence being used to calculate the yaw and application of the yaw to the quaternions
2020-10-26 11:03:50 +11:00
Paul Riseborough
fa10d114e4
AP_NavEKF3: Fix yaw drift after yaw reset at +-90 deg pitch
...
Use existing covariance prediction code to set quaternion state covariances.
Assumes tilt error is 3 deg 1-sigma.
2020-10-26 11:03:50 +11:00
Paul Riseborough
73d5ca5ad3
AP_NavEKF3: Fix yaw drift after yaw reset at +-90 deg pitch
...
Use existing covariance prediction code to set quaternion state covariances.
Assumes tilt error is 3 deg 1-sigma.
TODO derive and add function that calculates tilt error variance.
2020-10-26 11:03:50 +11:00
Paul Riseborough
a97d030e4b
AP_NavEKF3: Reset earth field variances when starting mag field estimation
2020-10-26 11:03:50 +11:00
Paul Riseborough
9168d0cd19
AP_NavEKF3: Initialise mag field variances to non zero values
2020-10-26 11:03:50 +11:00
Paul Riseborough
0b96f046c2
AP_NavEKF3: Unblock initial yaw alignment message
2020-10-26 11:03:50 +11:00
Paul Riseborough
f81abd73d6
AP_NavEKF3: Update covariance prediction to yse SymPy generated equations
...
Saves flash and variable space.
2020-10-26 11:03:50 +11:00
Andrew Tridgell
a4716fb9bf
AP_NavEKF3: fixed multi-core yaw reset
...
thanks to Alex Burka for finding this
2020-10-24 19:35:30 +11:00
Andrew Tridgell
fcccdcc936
AP_NavEKF3: fixed bug in external yaw for fixed wing
...
when we are on the ground we should not chang to AID_NONE if we have
an external yaw source
this fixes an EKF3 error loop on the ground found by Michael
2020-10-24 13:50:33 +11:00
Randy Mackay
c3fd82b6d7
AP_NavEKF3: minor spelling fix
2020-10-24 12:35:58 +11:00
Randy Mackay
2f1ae29a9c
AP_NavEKF3: extnav data gets corrected boolean
...
CorrectExtNavForSensorOffset and CorrectExtNavVelForSensorOffset use
corrected boolean to avoid correcting twice
2020-10-24 12:35:58 +11:00
Randy Mackay
a16de76f57
AP_NavEKF3: correct extnav position as it is recalled from the buffer
...
This makes extnav position correction consistent with the velocity correction
2020-10-24 12:35:58 +11:00
Randy Mackay
71487e9c10
AP_NavEKF3: gps_elements gets corrected flag
...
CorrectGPSForAntennaOffset uses this flag to ensure position and velocity are only corrected once
2020-10-24 08:49:33 +09:00
Randy Mackay
3d4e1cd5c5
AP_NavEKF3: CorrectGPSForAntennaOffset always corrects vel
2020-10-24 08:49:33 +09:00
Randy Mackay
e25579cc00
AP_NavEKF3: correct GPS for position as it is recalled from buffer
2020-10-24 08:49:33 +09:00
Peter Barker
0496ecc4f6
AP_NavEKF2: remove unused state variables
2020-10-22 08:47:08 +11:00
Peter Barker
a1e7c91f8e
AP_NaveEKF3: reduce code duplication in setup_core
...
Less code.
Saves 40 bytes on PixRacer
2020-10-22 08:47:08 +11:00
Randy Mackay
e4056086e0
AP_NavEKF3: minor format and spelling fixes
2020-10-21 13:54:22 +09:00
Randy Mackay
231a958e51
AP_NavEKF3: minor comment fix
2020-10-21 11:40:35 +09:00
Randy Mackay
e4ccd21dd7
AP_NavEKF3: consolidate extNav height source timeouts
2020-10-20 17:11:26 +09:00
Randy Mackay
6989a28bfc
AP_NavEKF3: allow alt from other sources when using ExtNav
...
also allows using ExtNav alt when not using it for XY position
removes redundant and incorrect setting of activeHgtSource from ExtNav
which was always being overwritten by the correct value later in selectHeightForFusion
2020-10-20 17:11:26 +09:00
Randy Mackay
0cebde0632
AP_NavEKF3: minor restructure of how fusePosData and fuseVelData are set
...
this non-functional change slightly reduces the number of places we set these variables
2020-10-20 17:11:26 +09:00
Peter Barker
ef505df78a
AP_NavEKF3: remove unused quat2Tbn method
2020-10-20 11:40:54 +11:00
Peter Barker
0eafe4b662
AP_NavEKF3: remove dangling method declarations
2020-10-20 11:40:54 +11:00
Peter Barker
83d784c22d
AP_NavEKF3: fix includes
2020-10-20 11:40:54 +11:00
Peter Barker
3dc67f09fd
AP_NavEKF3: remove unused innovationIncrement and lastInnovation
2020-10-20 11:24:34 +11:00
Randy Mackay
eeb1a1846c
AP_NavEKF3: replace prearm_healthy with pre_arm_check
2020-10-07 11:53:07 +11:00
Randy Mackay
f5a04fd1a3
AP_NavEKF3: shorten buffer size send_text message length
2020-09-29 08:57:52 +09:00
Randy Mackay
7398529f6b
AP_NavEKF3: minor format fix
2020-09-28 20:57:39 +09:00
Andrew Tridgell
8a4b0f858a
AP_NavEKF3: reset body mag variances at key points
...
we need to reset the body mag variances if we change sensors or if we
are starting 3D fusion. When not doing 3D fusion we zero the
variances, so they must be initialised again when we restart
fusion. This fixes a bug in handling the variances on a 2nd flight
2020-09-20 09:25:57 +10:00
Andrew Tridgell
e9185f526b
AP_NavEKF3: add comments on state indexes
...
make it easier to check indexes
2020-09-20 09:25:57 +10:00
Andrew Tridgell
1f21d72c79
AP_NavEKF3: fixed init of earth state mag variances
...
we were starting with zero variance for X and Y earth states, it
should start with sq(magNoise)
2020-09-20 09:25:57 +10:00
Andrew Tridgell
2bc7d17e7a
AP_NavEKF3: improved core comparison to check alignment
...
this adds coreBetterScore() which takes account of tilt and yaw
alignment when comparing cores for lane switching
this ensures we don't switch to a lane that is unaligned due to the
zero error score for unaligned lanes
2020-09-14 20:29:04 +10:00
Andrew Tridgell
c03c43e52c
AP_NavEKF3: use same mag switch pattern as EKF2
...
based on Pauls suggested change
2020-09-08 11:01:14 +10:00
Andrew Tridgell
3836b59041
AP_NavEKF3: fixed handling of failed compass
...
when a compass goes unhealthy due to sensor failure we should try
another compass after 10s if another compass is available
2020-09-08 11:01:14 +10:00
Andrew Tridgell
458ade86f5
AP_NavEKF3: fixed segfault when IMU mask covers more IMUs than GSF mask
2020-08-28 10:17:00 +10:00
Harshit Kumar Sankhla
edc3709653
AP_NavEKF3: implement sensor affinity using EK3_AFFINITY parameter
...
this allows the EKF core index to be used to select a GPS/baro/mag
instance. This is an alternative to GPS blending that allows EKF lane
switching to be used to select the right combination of GPS and IMU
add logging to XKFS message
2020-08-27 20:20:51 +10:00
Harshit Kumar Sankhla
d7edc946b6
AP_NavEKF3: Relative Error based Lane-Switching
...
Improvments to the lane selection logic, we accumulate error for each
EKF lane relative to the primary for a more robust core selection
2020-08-27 20:20:51 +10:00
Randy Mackay
46a7e96c48
AP_NavEKF3: readRngBcnData avoids array overflow from beacon count
2020-08-25 09:38:10 +09:00
Randy Mackay
b314195f6e
AP_NavEKF3: minor spelling fix
2020-08-25 09:38:10 +09:00
Randy Mackay
b86e16e927
AP_NavEKF3: readRngBcnData gets minor formatting fix
2020-08-25 09:38:10 +09:00
Randy Mackay
384029d278
AP_NavEKF3: rngBcnDataNew made local
2020-08-25 09:38:10 +09:00
Randy Mackay
8c877f02af
AP_NavEKF3: shrink beacon arrays and add assert
2020-08-25 09:38:10 +09:00
Randy Mackay
d292ba028a
AP_NavEKF3: increase beacon buffer to imu + 1
2020-08-25 09:38:10 +09:00
Randy Mackay
886a7d44a7
AP_NavEKF3: allow switch to ExtNav from optflow
2020-08-24 16:52:34 +09:00
Randy Mackay
6bf2057712
AP_NavEKF3: minor formatting fixes
2020-08-21 13:18:58 +09:00
Randy Mackay
4c40d2ac3f
AP_NavEKF3: readyToUseBodyOdm uses delayed imu and wheel encoder timestamps
2020-08-21 13:18:58 +09:00
Randy Mackay
056a2de260
AP_NavEKF3: wheelOdmDataNew member made local
...
this variable is never used outside the writeWheelOdom method
2020-08-21 13:18:58 +09:00
Randy Mackay
3d5161f364
AP_NavEKF3: remove unused usingWheelSensors variable
...
This variable was set but never consumed
2020-08-21 13:18:58 +09:00
Randy Mackay
c4b7a1c41a
AP_NavEKF3: flowDataToFuse moved to local variable
...
This variable is never used outside the SelectFlowFusion() method
This variable is always updated at the top of the function meaning subsequent calls to the function will always overwrite its previous value
2020-08-21 13:12:10 +09:00
Randy Mackay
41acf555bf
AP_NavEKF3: fix skipping of optflow fusion if mag fusion performed
2020-08-21 13:12:10 +09:00
Andrew Tridgell
44d5a923cc
AP_NavEKF3: apply min GPS accuracy at measurement point
...
this fixes an issue a RTK GPS gives 1cm horizontal and vertical
accuracy and that causes the variances to get too small
2020-08-21 07:40:13 +10:00
chobits
c722367c6c
AP_NavEKF3: move extNavVelNew to local variable
2020-08-12 15:40:38 +09:00
chobits
7ad9e3548f
AP_NavEKF3: make reset source variable local
2020-08-10 09:43:28 +09:00
Peter Barker
6b701ae3b3
AP_NavEKF3: correct includes
2020-08-07 19:20:07 +10:00
chobits
4b8be2e535
AP_NavEKF3: fix comments
2020-08-04 18:16:18 +10:00
Paul Riseborough
c8bbbd2720
AP_NavEKF3: Fix bug preventing setting of mag field states
2020-07-25 20:46:04 +10:00
Randy Mackay
d8f2d0cf8d
AP_NavEKF3: max delay includes visual odometry
2020-07-21 09:31:52 +10:00
chobits
564244ce9a
AP_NavEKF3: fix extnav vel reset
2020-07-17 14:13:06 +09:00
Andy Piper
e35458cedf
AP_NavEKF3: INS get_sample_rate() renamed to get_loop_rate_hz()
2020-07-10 16:45:29 +10:00
Paul Riseborough
24fccd5d87
AP_NavEKF3: Don't delay GPS use unnecessarily
...
Fixed wing should not wait for bias state convergence after in-flight yaw alignment
2020-07-07 15:33:58 +10:00
Paul Riseborough
9a4108f55e
AP_NavEKF3: Simplify setting EK3_MAG_CAL
...
Don't require user to separately set EK3_MAG_CAL to fly without a magnetomer
2020-07-07 15:33:58 +10:00
Paul Riseborough
0dc598a6e1
AP_NavEKF3: Fix param description and comment
2020-07-07 15:33:58 +10:00
Paul Riseborough
21ea5d5039
AP_NavEKF3: Require GSF yaw history for reset when not using a yaw sensor
2020-07-07 15:33:58 +10:00
Paul Riseborough
f86c2e1db6
AP_NavEKF3: Don't fuse EKF-GSF yaw for FW flight
2020-07-07 15:33:58 +10:00
Paul Riseborough
354b551ef0
AP_NavEKF3: Handle repeated FW flight without magnetometer
...
The EKF can build up large yaw errors on ground so it is safer to stop using GPS and re-align after launch as per first launch.
2020-07-07 15:33:58 +10:00
Paul Riseborough
8ff6780323
AP_NavEKF3: Clarify distinct use cases for 'takeoff expected'
2020-07-07 15:33:58 +10:00
Paul Riseborough
d1a0c2eb30
AP_NavEKF3: Start EKF-GSF yaw estimator before fixed wing takeoff
2020-07-07 15:33:58 +10:00
Paul Riseborough
b469a80633
AP_NavEKF3: Reset all co-variances when performing a yaw reset
2020-07-07 15:33:58 +10:00
Paul Riseborough
d8c2096ad8
AP_NavEKF3: improve angle accuracy during no mag launch
2020-07-07 15:33:58 +10:00
Paul Riseborough
f7c8ee807c
AP_NavEKF3: Reset yaw estimator bias states at start of flight
...
Enables yaw bias to be learned when sitting stationary on ground.
2020-07-07 15:33:58 +10:00
Paul Riseborough
bcd23e1063
AP_NavEKF3: Fix one frame delay in processing yaw estimator velocity data
2020-07-07 15:33:58 +10:00
Peter Barker
2e55584417
AP_NavEKF3: correct comments on getFilterFaults and getFilterTimeouts methods
2020-07-07 10:50:41 +10:00
Randy Mackay
ec5f84c926
AP_NavEKF3: remove unused terrainHgtStableSet_ms
2020-06-24 21:16:50 +09:00
Randy Mackay
dccc3e22d9
AP_NavEKF3: minor comment fix re RNG_USE_HGT
2020-06-24 21:16:50 +09:00
Paul Riseborough
ed5b695c94
AP_NavEKF3: Clarify intended use of setTerrainHgtStable accessor
2020-06-24 21:16:50 +09:00
Dr.-Ing. Amilcar do Carmo Lucas
fca8d33c50
AP_NavEKF3: fix vertical flyaways when rangefinder stops providing data
2020-06-24 21:16:50 +09:00
Dr.-Ing. Amilcar do Carmo Lucas
a3d140b949
AP_NavEKF3: reduce duplicated code.
2020-06-24 21:16:50 +09:00
Paul Riseborough
344d621a08
AP_NavEKF3: Add missing fallback to baro for range beacon use case
2020-06-24 21:16:50 +09:00
Paul Riseborough
906731222d
AP_NavEKF3: Fix range aid switching logic
...
Clarifies use of EK3_RANGE_USE_HGT and EK3_ALT_SOURCE parameters to control range finder use.
Setting EK3_RNG_USE_HGT to a positive number to enable automatic switching between the primary height source (baro or GPS) and range finder should be disabled if any primary height source other than Baro or GPS is selected via the EK3_ALT_SOURCE parameter.
2020-06-24 21:16:50 +09:00
Pierre Kancir
431468452c
AP_NavEKF3: add --debug-ekf to debug the EKF
2020-06-20 19:59:05 +10:00
Randy Mackay
ca0ae57b56
AP_NavEKF3: protect against position-delta sensor data being NaN
2020-06-19 13:46:52 +09:00
Randy Mackay
331f2f5fe7
AP_NavEKF3: writeExtNavData stores pos to buffer first
...
This is a non-functional change
2020-06-19 13:46:52 +09:00
Randy Mackay
578800dfbb
AP_NavEKF3: protect against ExtNav being NaN
2020-06-19 13:46:52 +09:00
chobits
9b448b83c0
AP_NavEKF3: use err info from ext nav interface
2020-06-09 13:31:21 +09:00
Randy Mackay
345029ec67
AP_NavEKF3: print extNav buff size
2020-06-09 09:42:14 +10:00
Randy Mackay
0f212ca727
AP_NavEKF3: accept extnav at up to 50hz
2020-06-09 09:42:14 +10:00
Peter Barker
86687d240d
AP_NavEKF3: avoid compiler warnings from -Wclass-memaccess
...
../../libraries/AP_NavEKF2/AP_NavEKF2_core.cpp: In member function ‘void NavEKF2_core::InitialiseVariables()’:
../../libraries/AP_NavEKF2/AP_NavEKF2_core.cpp:343:50: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct NavEKF2_core::ext_nav_vel_elements’; use assignment or value-initialization instead [-Wclass-memaccess]
343 | memset(&extNavVelNew, 0, sizeof(extNavVelNew));
| ^
In file included from ../../libraries/AP_NavEKF2/AP_NavEKF2_core.cpp:4:
../../libraries/AP_NavEKF2/AP_NavEKF2_core.h:518:12: note: ‘struct NavEKF2_core::ext_nav_vel_elements’ declared here
518 | struct ext_nav_vel_elements {
| ^~~~~~~~~~~~~~~~~~~~
../../libraries/AP_NavEKF2/AP_NavEKF2_core.cpp:344:58: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct NavEKF2_core::ext_nav_vel_elements’; use assignment or value-initialization instead [-Wclass-memaccess]
344 | memset(&extNavVelDelayed, 0, sizeof(extNavVelDelayed));
| ^
In file included from ../../libraries/AP_NavEKF2/AP_NavEKF2_core.cpp:4:
../../libraries/AP_NavEKF2/AP_NavEKF2_core.h:518:12: note: ‘struct NavEKF2_core::ext_nav_vel_elements’ declared here
518 | struct ext_nav_vel_elements {
| ^~~~~~~~~~~~~~~~~~~~
2020-06-05 08:42:45 +10:00
Randy Mackay
93d8458d2a
AP_NavEKF3: FuseVelPosNED uses ext nav vel err in obs data check
2020-06-02 08:33:42 +09:00
Randy Mackay
d37eec5fd8
AP_NavEKF3: ext nav vel corrected for sensor position when recalled from buffer
2020-06-02 08:33:42 +09:00
chobits
c7817eaca1
AP_NavEKF3: support VISION_SPEED_ESTIMATE
...
Co-authored-by: Randy Mackay <rmackay9@yahoo.com>
2020-06-02 08:33:42 +09:00
Peter Barker
bf3cb977fd
AP_NavEKF3: clarify yaw reset error message
...
The current wording can be taken to indicate that the mag sensors
stopped, causing this issue.
2020-05-26 10:05:35 +10:00
Paul Riseborough
939331ae8d
AP_NavEKF3: Fix double iteration of axes in SelectMagFusion
2020-05-18 09:38:45 +10:00
Randy Mackay
6c20264d9c
AP_NavEKF3: minor comment fix
2020-05-15 11:23:07 +09:00
Randy Mackay
5ad3611142
AP_NavEKF3: improve ext nav glitch handling
...
replaces extNavTimeout with posTimeout
replaces lastExtNavPassTime_ms with lastPosPassTime_ms
2020-05-15 11:23:07 +09:00
Randy Mackay
ef02942459
AP_NavEKF3: writeBodyFrameOdom accepts delay
2020-05-15 10:07:52 +09:00
Randy Mackay
c28fd27b02
AP_NavEKF3: writeExtNavData accepts delay
2020-05-15 10:07:52 +09:00
Paul Riseborough
318811210f
AP_NavEKF3: Don't perform emergency yaw reset unless commanded externally
...
This limits the use of the reset to situations where it is a last ditch resort before a lane switch and failsafe.
This will limit false positives for general deployment, but still provide protection from fly-aways at the cost of some increase in reaction time.
2020-05-14 10:40:48 +10:00
Randy Mackay
45e6896d95
AP_NavEKF3: ensure extnav angle error is at least 5deg
2020-05-14 08:02:13 +10:00
Randy Mackay
67903a29e2
AP_NavEKF3: fix getLLH when no GPS
2020-05-10 15:35:55 +10:00
Andrew Tridgell
5350ea5c58
AP_NavEKF3: avoid build warnings with g++ 9
2020-05-10 15:11:22 +10:00
Henry Wurzburg
8b3f07416c
AP_NAVEKF3: change plane check_scaler value to match EKF2 value
2020-05-10 07:59:27 +10:00
Andrew Tridgell
cd5aae20c1
AP_NavEKF3: fixed scary message for non-compass planes
2020-05-09 12:33:33 +10:00
Andrew Tridgell
0c1ba48212
AP_NavEKF3: fixed external yaw EK3_MAG_CAL=5 or 6
...
don't use GSF
2020-05-04 15:05:56 +10:00
Randy Mackay
183ce50138
AP_NavEKF3: check GPS used before resetting pos due to GPS receiver change
2020-04-30 15:55:59 +09:00
Randy Mackay
f79d5d2d2c
AP_NavEKF3: handle external nav position reset
2020-04-30 15:55:59 +09:00
Randy Mackay
cbb25311bb
AP_NavEKF3: setAidingMode uses lastExtNavPassTime_ms
2020-04-30 15:55:59 +09:00
Randy Mackay
d763597065
AP_NavEKF3: compensate for visual odometry sensor position
2020-04-30 15:55:59 +09:00
priseborough
c5e465aec9
AP_NavEKF3: add external nav system support
...
includes decoupling height source from use of external nav data
2020-04-30 15:55:59 +09:00
Andrew Tridgell
7e010ef50a
AP_NavEKF3: use set_enable() to set enable flag
2020-04-29 07:36:55 +10:00
Paul Riseborough
ad5ae1813d
AP_NavEKF3: Don't use geomag data when user specifies declination
2020-04-28 11:42:31 +09:00
Randy Mackay
91a79543c9
AP_NavEKF3: getLLH fix when no GPS available
2020-04-24 20:29:18 +09:00
Peter Barker
3440a64b66
AP_NavEKF3: correct description on XKY0
2020-04-24 18:08:14 +10:00
Peter Barker
aa3165b71c
AP_NavEKF3: remove incorrect units from yaw esimtator LoggerMessage
2020-04-24 18:08:14 +10:00
Andrew Tridgell
43ef8a192b
AP_NavEKF3: added missing log documentation for field C
2020-04-24 09:43:23 +10:00
Paul Riseborough
1720c8de0f
AP_NavEKF3: Add documentation for GSF logging
2020-04-24 09:43:23 +10:00
Paul Riseborough
9bdb89474a
AP_NavEKF3: Use unique names for EKF2 logging
2020-04-24 09:43:23 +10:00
Andrew Tridgell
080f555b16
AP_NavEKF3: remove unused isDeltaYaw param from resetQuatStateYawOnly
2020-04-24 09:43:23 +10:00
Andrew Tridgell
197d31e9cc
AP_NavEKF3: fixed in-flight yaw reset
2020-04-24 09:43:23 +10:00
Randy Mackay
86d221708c
AP_NavEKF3: more white space fixes
2020-04-24 09:43:23 +10:00
Randy Mackay
c1ef894a30
AP_NavEKF3: getDataEKFGSF and getYawData pass by reference
2020-04-24 09:43:23 +10:00
Randy Mackay
8a8271c2c7
AP_NavEKF3: minor format fixes
2020-04-24 09:43:23 +10:00
Randy Mackay
ed3d072318
AP_NavEKF3: rename GSF_RUN_MASK, GSF_USE_MASK, GSF_RST_MAX
2020-04-24 09:43:23 +10:00
Paul Riseborough
7ba39c844c
AP_NavEKF3: Split GSF yaw estimator processing
...
Separate prediction and correction steps are required to provide an up to
2020-04-24 09:43:23 +10:00