Commit Graph

554 Commits

Author SHA1 Message Date
Randy Mackay f6cb0819ef AP_NavEKF3: pre_arm_check may skip position checks 2021-01-26 10:46:49 +11:00
Andrew Tridgell ddc4d08e8f AP_NavEKF3: make drag fusion optional 2021-01-24 11:56:52 +11:00
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