Paul Riseborough
abc821ad36
AP_NavEKF2: Split GSF yaw estimator processing
...
Separate prediction and correction steps are required to provide an up to date yaw estimate using IMU prediction before it may be required by SelectMagFusion() whilst still doing the velocity update after GPS data haw been pulled from the buffer by SelectVelPosFusion()
2020-04-24 09:43:23 +10:00
Andrew Tridgell
c83e2d7c0e
AP_NavEKF2: fixed loss of GPS fusion
...
we must not do a storedGPS.recall unless we will be using the data,
otherwise we will lose GPS samples and risk stopping GPS fusion
2020-04-24 09:43:23 +10:00
Andrew Tridgell
6c3889b04f
AP_NavEKF2: fixed typos
2020-04-24 09:43:23 +10:00
Andrew Tridgell
3edbe81b1e
AP_NavEKF2: removed 2nd set of imuSampleTime_ms
2020-04-24 09:43:23 +10:00
Paul Riseborough
6952d83f00
AP_NavEKF2: Fix casting build error
2020-04-24 09:43:23 +10:00
Paul Riseborough
0d965d2a1c
AP_NavEKF2: Fix timer wrapping bugs
...
Also replaces tab characters
2020-04-24 09:43:23 +10:00
Paul Riseborough
de0040ad69
AP_NavEKF2: Enable use of EKF-GSF yaw estimate
...
Enables the yaw to be reset in flight to a value estimated from a specialised yaw estimator. This allows faster recovery if taking off with a bad magnetometer and also allows yaw alignment and GPS use to commence in-air when operating without any yaw sensing.
AP_NavEKF2: Add missing accesor functions for default airspeed
2020-04-24 09:43:23 +10:00
Randy Mackay
35dcb0d752
AP_NavEKF2: CorrectExtNavForSensorOffset made const
2020-04-21 10:21:23 +10:00
Randy Mackay
85704e4989
AP_NavEKF2: CorrectGPSForAntennaOffset made const
...
also reduce scope of call to slightly reduce CPU load
2020-04-21 10:21:23 +10:00
Peter Barker
f1fc05d357
AP_NavEKF2: rename APMrover2 to Rover
2020-04-14 09:50:34 +09:00
Randy Mackay
8749f30c64
AP_NavEKF2: external nav pos offsets from AP_VisualOdom library
2020-04-14 10:28:03 +10:00
Randy Mackay
fb7e68c53a
AP_NavEKF2: writeExtNavData reset handles system time wrap
2020-04-14 10:28:03 +10:00
Randy Mackay
9f81da1bf9
AP_NavEKF2: minor comment fix
2020-04-13 14:39:53 +09:00
Andrew Tridgell
c9755cf9e6
AP_NavEKF2: make mag variance reporting consistent
...
logged scaled variance should match the value used in MAVLink
EKF_STATUS_REPORT
2020-04-06 17:30:29 +10:00
Peter Barker
903d81c263
AP_NavEKF2: use compass reference rather than repeatedly asking AHRS for it
2020-03-13 08:26:18 +11:00
Andrew Tridgell
9030590a88
AP_NavEKF2: fixed use of antenna position when switching GPS primary
...
when GPS primary switches we were using a position which had not been
corrected for antenna offset. This was used for calculating the reset
for sensor change.
This fixes that (trivial fix) and also fixes a similar issue on
position reset
2020-02-19 18:12:54 +11:00
Siddharth Purohit
4cca1c307c
AP_NavEKF2: Primary compass is always at serial number 0
2020-02-19 13:59:53 +09:00
Peter Hall
e0eeb4f863
AP_NavEKF2: add initalized flag and change to uint32_t
2020-02-19 06:45:07 +11:00
chobits
a54f24c8c0
AP_NavEKF2: switch to optflow if gps is jammed
2020-02-04 10:13:57 +09:00
Peter Barker
da3d3cc21b
AP_NavEKF: stop taking ahrs in constructor
2020-01-21 11:53:18 +11:00
Peter Hall
2970334c0d
AP_NavEKF2: get_time_flying in vehicle
2020-01-14 22:34:37 -07:00
Peter Barker
524647d221
AP_NavEKF2: use instance number when logging rather than multiple message IDs
2019-12-17 12:22:07 +11:00
Peter Barker
060c851709
AP_NavEKF2: make send_status_report const
2019-12-11 07:54:41 +09:00
Peter Barker
369292f7f3
AP_NavEKF2: stop relying on the presence of a RangeFinder
2019-12-11 08:09:01 +11:00
Peter Barker
239df941e5
AP_NavEKF2: use instance # when logging EKF core timings
2019-12-06 12:52:03 +09:00
Andrew Tridgell
fce4d6952f
AP_NavEKF2: don't use WMM tables unless we have a compass scale factor set
2019-12-03 20:48:23 +11:00
Mark Whitehorn
5f6b3a1f5b
AP_NavEKF2: clean up init failure handling
...
only attempt to allocate memory once
2019-11-26 11:59:10 +11:00
Peter Barker
99689f65f8
AP_NavEKF2: adjust for renaming of RangeFinder files
2019-11-12 07:14:37 +08:00
Peter Barker
9735684184
AP_NavEKF2: use enum-class for RangeFinder Status
2019-11-09 08:01:53 +11:00
Mark Whitehorn
23ee9eef5f
AP_NavEKF2: fail prearm on any core setup failure
2019-11-05 11:23:54 +11:00
Mark Whitehorn
489ae83604
AP_NavEKF2: handle core setup failures
2019-11-05 11:23:54 +11:00
Mark Whitehorn
7c6630e216
AP_NavEKF2: EKF2 prefix for prearm failures and camelCase
2019-11-05 11:23:54 +11:00
Mark Whitehorn
95ea6ad807
AP_NavEKF2: provide reasons for init failures
2019-11-05 11:23:54 +11:00
Randy Mackay
cc5facf6d2
AP_NavEKF2: initialise pre-arm failure message
2019-10-31 09:51:27 +08:00
Mark Whitehorn
6e73feca5c
AP_NavEKF2: add prearm failure message for null core pointer
2019-10-29 11:59:29 +08:00
Randy Mackay
e32a8556b2
AP_NavEKF2: suppress ekf fail-to-set-origin if core disabled
2019-10-22 07:15:48 +08:00
Randy Mackay
e2d3afaaa7
AP_NavEKF2: reduce EK2_HRT_FILT max to 30
2019-10-18 11:15:25 +09:00
Paul Riseborough
c26c6fd078
AP_NavEKF2: Add missing vertical position derivative calculation
...
Use a third order order complementary filter to estimate the rate of change of vertical position output.
2019-10-18 11:15:25 +09:00
Andrew Tridgell
cbe34320b5
AP_NavEKF2: fixed build
...
broken by recent common variable change
2019-10-01 17:35:26 +10:00
Andrew Tridgell
f7e138bddd
AP_NavEKF2: 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
2019-10-01 15:39:03 +10:00
Andrew Tridgell
8dd2119b14
AP_NavEKF2: make it easy to do EK2 timing tests
...
for future benchmarking
2019-09-28 08:57:26 +10:00
Andrew Tridgell
163efd0df5
AP_NavEKF2: change optimisation from -O3 to -O2
2019-09-28 08:57:26 +10:00
Peter Barker
952d4d2cbc
AP_NavEKF2: initialise Kfusion stack variable to fix compilation
...
This fixes the compilation, as previous patches have done.
2019-09-25 12:54:55 +10:00
Andrew Tridgell
d40d812ea4
AP_NavEKF2: fixed build with g++ 9.1
...
this is a false positive, but the cost of clearing this array is low,
and it saves a much more complex fix
2019-09-24 14:59:17 +10:00
Andrew Tridgell
9226899c6f
AP_NavEKF2: added comment (review request)
2019-09-24 12:51:54 +10:00
Andrew Tridgell
255981c60c
AP_NavEKF2: moved some of the intermediate vars to the stack
...
this keeps stack frames below 1k, while giving faster access to the
variables and saving more memory
2019-09-24 12:51:54 +10:00
Andrew Tridgell
96c6544997
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
2019-09-24 12:51:54 +10:00
Andrew Tridgell
0041874826
AP_NavEKF2: 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
2019-09-24 12:51:54 +10:00
Andrew Tridgell
1d47f9186e
AP_NavEKF2: fixed use of old irqsave() API
2019-09-21 15:36:47 +10:00
Peter Barker
3619856fc9
AP_NavEKF2: correct return of empty prearm string
2019-09-19 08:47:47 +09:00