Andrew Tridgell
1e75bb971e
AP_NavEKF2: constrain vertical error
...
this prevents a floating point exception with external AHRS
2021-01-05 21:13:12 +11:00
Andrew Tridgell
b36bfe4206
AP_NavEKF2: fixed init order for scheduler
...
this can impact replay of EKF2
2021-01-02 10:30:26 +11:00
Paul Riseborough
b372d62f35
AP_NavEKF2: Add accessor function for body frame airspeed vector
2020-12-11 15:21:41 +11:00
Andrew Tridgell
5e72907730
AP_NavEKF2: only fuse airspeed if healthy
2020-12-11 09:59:49 +11:00
Peter Barker
f6d3983e1b
AP_NavEKF2: move EKF2 message ids into AP_NavEKF2
2020-12-08 11:30:10 +11:00
Peter Barker
00ac8391c0
AP_NavEKF2: move EKF2 logging structures into EKF2 LogStructure.h
2020-12-08 11:30:10 +11:00
Peter Barker
c5c810b724
AP_NavEKF2: use structures for logging GSF data
...
This makes it look like EKF2 and is marginally more efficient.
2020-12-02 10:30:48 +11:00
Peter Barker
f94f51d9d3
AP_NavEKF2: move log message metadata to be above the structure
...
This is the pattern we are adopting elsewhere to try to keep things
related as much as possible.
2020-12-02 10:30:48 +11:00
Peter Barker
d600b87454
AP_NavEKF2: make logging a core concern
2020-12-01 13:06:04 +11:00
Peter Barker
fc7e7dcee4
AP_NavEKF2: remove unused variables
2020-12-01 10:40:09 +11:00
Peter Barker
addd57dcab
AP_NavEKF2: move badMagYaw onto stack
2020-12-01 10:40:09 +11:00
Peter Barker
0aa10d8281
AP_NavEKF2: move tasHealth to be a stack variable
2020-12-01 10:40:09 +11:00
Peter Barker
3a98d51427
AP_NavEKF2: move posvel fusion health booleans to be on the stack
2020-12-01 10:40:09 +11:00
Peter Barker
400ba7a9df
AP_NavEKF2: move global state to be on the stack
2020-12-01 10:40:09 +11:00
Andrew Tridgell
7313e9eb0f
AP_NavEKF2: removed inhibitGps and inhibitGpsVertVel options
...
these were unused
2020-12-01 10:33:50 +11:00
Andrew Tridgell
79148498d3
AP_NavEKF2: 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
Randy Mackay
4087d7b792
AP_NavEKF2: add configuredToUseGPSForPosXY
2020-11-25 21:00:07 +11:00
Andrew Tridgell
39ba8a8c83
AP_NavEKF2: convert to using common buffer classes
...
this saves a considerable amount of flash
2020-11-20 21:56:32 +11:00
Andrew Tridgell
3a4095fc7f
AP_NavEKF2: use common structure names
2020-11-17 13:45:07 +11:00
Paul Riseborough
248ef92ed7
AP_NavEKF2: 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
e5e8d0ba3c
AP_NavEKF2: Don't update yaw estimator with bad GPS
2020-11-16 16:01:13 +11:00
Andrew Tridgell
a2f4b16cdc
AP_NavEKF2: fixed logged core for GSF messages
2020-11-16 10:28:43 +11:00
Andrew Tridgell
01cd678244
AP_NavEKF2: 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
7099bb6096
AP_NavEKF2: 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
5b41d5541f
AP_NavEKF2: removed use of another lanes gyro in optflow takeoff detection
...
as discussed with Paul
2020-11-10 16:15:45 +11:00
Andrew Tridgell
7d7031d3d7
AP_NavEKF2: added const (review request)
2020-11-10 16:15:45 +11:00
Andrew Tridgell
16f7e51ea5
AP_NavEKF2: fixed use of pointers in ringbuffers
...
these don't work with AP_DAL
2020-11-10 16:15:45 +11:00
Andrew Tridgell
246a441883
AP_NavEKF2: cope with INS_MAX_INSTANCES below 3
2020-11-10 16:15:45 +11:00
Andrew Tridgell
5f0e943f0f
AP_NavEKF2: use dal reference in EKF backends
...
saves a bit of flash space
2020-11-10 16:15:45 +11:00
Andrew Tridgell
8591b31665
AP_NavEKF2: cleanup unused code
2020-11-10 16:15:45 +11:00
Andrew Tridgell
bec095d661
AP_NavEKF2: support replay with external navigation data
2020-11-10 16:15:45 +11:00
Andrew Tridgell
224792b8b8
AP_NavEKF2: added optflow support for AP_DAL
2020-11-10 16:15:45 +11:00
Andrew Tridgell
90a8c5cb1a
AP_NavEKF2: 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
6be3d19e82
AP_NavEKF2: 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
Peter Barker
84c92b717f
AP_NavEKF2: make coreBetterScore const
2020-11-03 10:39:35 +11:00
Randy Mackay
fccc1fcb72
AP_NavEKF2: minor comment fix
2020-10-28 12:17:22 +09:00
Andrew Tridgell
dc32f7a12f
AP_NavEKF2: fixed multi-core yaw reset
...
thanks to Alex Burka for finding this
2020-10-24 19:35:30 +11:00
Peter Barker
0496ecc4f6
AP_NavEKF2: remove unused state variables
2020-10-22 08:47:08 +11:00
Peter Barker
53305ba2a4
AP_NavEKF2: remove unused quat2Tbn method
2020-10-20 11:40:54 +11:00
Peter Barker
312cf725aa
AP_NavEKF2: remove dangling method declarations
2020-10-20 11:40:54 +11:00
Peter Barker
c90265f94d
AP_NavEKF2: fix includes
2020-10-20 11:40:54 +11:00
Peter Barker
80f9ef7ed1
AP_NavEKF2: remove unused innovationIncrement and lastInnovation
2020-10-20 11:24:34 +11:00
Randy Mackay
b2d4622320
AP_NavEKF2: replace prearm_healthy with pre_arm_check
2020-10-07 11:53:07 +11:00
Andrew Tridgell
35e95d3328
AP_NavEKF2: reset body mag variances at key points
...
reset on sensor switch or when changing to 3D fusion
2020-09-20 09:25:57 +10:00
Andrew Tridgell
534e63e2fa
AP_NavEKF2: 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
d6dcbda0d3
AP_NavEKF2: removed duplicate compass switch check
...
left over from last set of changes
2020-09-20 09:25:57 +10:00
Andrew Tridgell
067001bd61
AP_NavEKF2: take into account alignment when comparing cores
...
ensure we don't switch to a lane that does not have yaw or tilt
alignment from a lane that is aligned
2020-09-14 20:29:04 +10:00
Paul Riseborough
da7bb44a61
AP_NavEKF2: Consolidate magnetometer timeout checks
2020-09-08 11:01:14 +10:00
Andrew Tridgell
6b9e595602
AP_NavEKF2: 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
6ee527d3e0
AP_NavEKF2: fixed segfault when IMU mask covers more IMUs than GSF mask
2020-08-28 10:17:00 +10:00
Harshit Kumar Sankhla
56cbcb42ee
AP_NavEKF2: Add core relative error and errorscore logging in NKF3 packet
...
TODO : Port lane switching logic from EKF3 to make use of these terms
Since both share the same NKF3 log structure, needed to do this.
Just log 0 as of.
2020-08-27 20:20:51 +10:00
Andrew Tridgell
83e5639225
AP_NavEKF2: 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
Peter Barker
032b7c81e5
AP_NavEKF2: correct includes
2020-08-07 19:20:07 +10:00
Andy Piper
e39e24bd18
AP_NavEKF2: INS get_sample_rate() renamed to get_loop_rate_hz()
2020-07-10 16:45:29 +10:00
Paul Riseborough
25cba50f10
AP_NavEKF3: Fix EK2_MAG_CAL parameter description
2020-07-07 15:33:58 +10:00
Paul Riseborough
ea4589ea94
AP_NavEKF2: 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
b6d9b6f3c7
AP_NavEKF2: Update documentation for non-compass use case
...
Instruction now explicitly specifies that all COMPASS_USE parameters must be set to 0 and COMPASS_ENABLE must be set to 1
2020-07-07 15:33:58 +10:00
Paul Riseborough
ccaa4d6aa9
AP_NavEKF2: Fix one frame delay in processing yaw estimator velocity data
2020-07-07 15:33:58 +10:00
Peter Barker
081c0bbfe0
AP_NavEKF2: correct comments on getFilterFaults and getFilterTimeouts methods
2020-07-07 10:50:41 +10:00
Paul Riseborough
9507a2e157
AP_NavEKF2: Fix parameter description
2020-06-24 21:16:50 +09:00
Randy Mackay
a8c2be26ba
AP_NavEKF2: remove unused terrainHgtStableSet_ms
2020-06-24 21:16:50 +09:00
Paul Riseborough
502b96f49c
AP_NavEKF2: Clarify intended use of setTerrainHgtStable accessor
2020-06-24 21:16:50 +09:00
Dr.-Ing. Amilcar do Carmo Lucas
83dc46d539
AP_NavEKF2: fix vertical flyaways when rangefinder stops providing data
2020-06-24 21:16:50 +09:00
Dr.-Ing. Amilcar do Carmo Lucas
280d33d030
AP_NavEKF2: reduce duplicated code.
2020-06-24 21:16:50 +09:00
Paul Riseborough
11a0fef3d0
AP_NavEKF2: Fix indent
2020-06-24 21:16:50 +09:00
Paul Riseborough
fc18ee91df
AP_NavEKF2: Add missing fallback to baro for range beacon use case
2020-06-24 21:16:50 +09:00
Paul Riseborough
d118c8fc38
AP_NavEKF2: Fix range aid switching logic
...
Clarifies use of EK2_RANGE_USE_HGT and EK2_ALT_SOURCE parameters to control range finder use.
Setting EK2_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 EK2_ALT_SOURCE parameter.
2020-06-24 21:16:50 +09:00
Pierre Kancir
9bbd2b19c2
AP_NavEKF2: add --debug-ekf to debug the EKF
2020-06-20 19:59:05 +10:00
Randy Mackay
989ffb79cd
AP_NavEKF2: minor format fix
2020-06-19 13:46:52 +09:00
Randy Mackay
966d59a26d
AP_NavEKF2: protect against ExtNav being NaN
2020-06-19 13:46:52 +09:00
chobits
f5f403947c
AP_NavEKF2: clarify POSNE_M_NSE desc
2020-06-09 20:44:57 +09:00
chobits
e64c92b322
AP_NavEKF2: use err info from ext nav interface
2020-06-09 13:31:21 +09:00
Randy Mackay
6c10655059
AP_NavEKF2: accept extnav at up to 50hz
2020-06-09 09:42:14 +10:00
Peter Barker
b02d9abd32
AP_NavEKF2: 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
chobits
dee095b4a4
AP_NavEKF2: support VISION_SPEED_ESTIMATE
2020-06-01 17:51:24 +09:00
Peter Barker
19dc07250d
AP_NavEKF2: 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
af19fea268
AP_NavEKF2: Fix 3-axis mag fusion per axis error handling
...
Ensure that if fusion checks for an axis fails, fusion will not be perfomred for all axes.
2020-05-20 15:09:32 +10:00
Andy Piper
9f02b1b1a8
AP_NavEKF2: fix typo in comment
...
Signed-off-by: Dr.-Ing. Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
2020-05-20 07:29:31 +09:00
Randy Mackay
f26a2a47b4
AP_NavEKF2: writeExtNavData accepts delay
2020-05-15 10:07:52 +09:00
Paul Riseborough
c94de61e29
AP_NavEKF2: 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
chobits
a7aa43f5d5
AP_NavEKF2: ext nav will not reset yaw if compass is used
2020-05-14 08:04:55 +09:00
Randy Mackay
b95bc9076b
AP_NavEKF2: fix getLLH when no GPS
2020-05-10 15:35:55 +10:00
Andrew Tridgell
c9ffe8dcea
AP_NavEKF2: use set_enable() to set enable flag
2020-04-29 07:36:55 +10:00
Paul Riseborough
e1f27054d5
AP_NavEKF2: Don't use geomag data when user specifies declination
2020-04-28 11:42:31 +09:00
Randy Mackay
90db3d6317
AP_NavEKF2: minor comment fix
2020-04-27 19:15:43 +09:00
Randy Mackay
2919491298
AP_NavEKF2: getLLH fix when no GPS available
2020-04-24 20:29:18 +09:00
Randy Mackay
6e93f54cff
AP_NavEKF2: handle external nav position resets
2020-04-24 18:16:52 +09:00
Randy Mackay
990313371d
AP_NavEKF2: minor comment fixes
2020-04-24 18:16:52 +09:00
Randy Mackay
43c9e13372
AP_NavEKF2: rename HGT_SOURCE_EV to HGT_SOURCE_EXTNAV
...
presumably EV stands for ExternalVision but we normally refer to this source as External Nav
2020-04-24 18:16:52 +09:00
Randy Mackay
014c889ceb
AP_NavEKF2: setAidingMode uses lastExtNavPassTime_ms
2020-04-24 18:16:52 +09:00
Randy Mackay
3b20623a31
AP_NavEKF2: remove unused ext nav elements
2020-04-24 18:16:52 +09:00
Peter Barker
7dfc285f2a
AP_NavEKF2: remove incorrect units from yaw esimtator LoggerMessage
2020-04-24 18:08:14 +10:00
Andrew Tridgell
d8c533e7ab
AP_NavEKF2: added missing log documentation for field C
2020-04-24 09:43:23 +10:00
Paul Riseborough
8f1b732d79
AP_NavEKF2: Add documentation for GSF logging
2020-04-24 09:43:23 +10:00
Paul Riseborough
49e4c799d3
AP_NavEKF2: Use unique names for EKF2 logging
2020-04-24 09:43:23 +10:00
Randy Mackay
4d7e7a960a
AP_NavEKF2: more white space fixes
2020-04-24 09:43:23 +10:00
Randy Mackay
0fb233ed4b
AP_NavEKF2: minor comment fixes
2020-04-24 09:43:23 +10:00
Randy Mackay
a9cbd5aa29
AP_NavEKF2: getDataEKFGSF and getYawData pass by reference
2020-04-24 09:43:23 +10:00
Randy Mackay
d61c517e76
AP_NavEKF2: minor format fix
2020-04-24 09:43:23 +10:00