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
Randy Mackay
91ef87064a
AP_NavEKF2: rename GSF_RUN_MASK, GSF_USE_MASK, GSF_RST_MAX
2020-04-24 09:43:23 +10:00
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
Randy Mackay
94a52b3525
EKF2: RNG_USE_HGT param only used when ALT_SOURCE = rangefinder
2019-09-10 18:44:52 +10:00
Michael du Breuil
a4d10b2e86
AP_NavEKF2: Allow the GPS to be responsible for logging
2019-09-10 09:09:17 +10:00
Peter Barker
c8fac758ee
AP_NavEKF2: use timing logging from AP_NavEKF
2019-09-03 09:28:37 +10:00
Andrew Tridgell
414d3eb670
AP_NavEKF2: don't fuse GPS when EK2_GPS_TYPE=3
...
when using a vision position system, the user may have vision derived
GPS data coming in using GPS_INPUT msgs. We should not fuse these when
EK2_GPS_TYPE=3 as we end up fusing both vision data and GPS data,
which does not work with the current EK2 code
This change makes it possible to run EK2 and EK3 in parallel in a
Vicon, wityh EK2 using VISION_POSITION_ESTIMATE data and EK3 using
GPS_INPUT (with yaw) data.
2019-08-26 12:27:31 +10:00
hoangthien94
fc9ff2b09a
AP_NavEKF2: add method to check if ext nav is used for yaw
2019-08-03 08:44:11 +09:00
Andrew Tridgell
098701ec79
AP_NavEKF2: 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
e7163afe06
AP_NavEKF2: review fixes
...
thanks Paul!
2019-07-29 10:08:22 +10:00
Andrew Tridgell
c57b25b4c9
AP_NavEKF2: 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
a01faa2f00
AP_NavEKF2: 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
742ae0b750
AP_NavEKF2: 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
5db41147ed
AP_NavEKF2: 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
1527a5b97c
AP_NavEKF2: do logging for 3rd EKF core
2019-07-23 12:34:38 +10:00
Andrew Tridgell
2427440e13
AP_NavEKF2: origin handling fixes from Francisco
2019-07-11 06:40:55 +10:00
Andrew Tridgell
e8d9a1fae9
AP_NavEKF2: don't allow height datum reset when not on ground
2019-07-07 19:20:32 +10:00
Andrew Tridgell
f5fd38aef2
AP_NavEKF2: set terrainState to zero on height datum reset
2019-07-07 19:20:32 +10:00
Andrew Tridgell
9372073f63
AP_NavEKF2: continuously update gpsGoodToAlign
...
use it to determine how to handle a height datum reset
2019-07-07 19:20:32 +10:00
Andrew Tridgell
20ebb2500b
AP_NavEKF2: 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
ddef40fa3d
AP_NavEKF2: don't use disabled gyros in opticalflow takeoff detection
2019-07-07 19:03:01 +10:00
Andrew Tridgell
1c4c5a6850
AP_NavEKF2: learn gyro biases for inactive gyros
...
this allows us to learn the gyro biases each lane would need if it had
to switch to another gyro due to a sensor failure. This prevents a
sudden change in gyro bias on IMU failure
2019-07-07 19:03:01 +10:00
Peter Barker
6a0a466f42
AP_NavEKF2: factor out and logging functions, reuse for 2nd core
2019-07-06 19:05:51 +10:00
Peter Barker
5175d23cc1
AP_NavEKF2: move logging in from AP_Logger
2019-07-06 19:05:51 +10:00
Andrew Tridgell
567c902e75
AP_NavEKF2: 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
82df167ad4
AP_NavEKF2: use beacon singleton
2019-07-01 07:20:58 +09:00
Michael du Breuil
f04e47fc17
AP_NavEKF2: Reduce scope of AP_Baro.h
2019-06-27 14:56:21 +10:00
Michael du Breuil
892b687c09
AP_NavEKF2: Fix AP_GPS.h include
2019-06-18 10:02:05 +10:00
Andrew Tridgell
3073c4da7a
AP_NavEKF2: 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
Andrew Tridgell
df4fc0fff0
AP_NavEKF2: default EK2_MAG_EF_LIM to 50
...
this was supposed to be part of the original PR (agreed with Paul to
enable by default)
2019-06-08 20:24:58 +10:00
Peter Barker
11f31c2851
AP_NavEKF2: take EAS2TAS from AHRS rather than airspeed
2019-06-06 12:44:36 +10:00
Andrew Tridgell
e9ed3540f1
AP_NavEKF2: constrain field by table after fusion
...
this should make for faster convergence
2019-06-03 12:21:29 +10:00
Andrew Tridgell
3835d2613e
AP_NavEKF2: added EK2_MAG_EF_LIM parameter
...
this sets a limit on the difference between the earth field from the
WMM tables and the learned earth field inside the EKF. Setting it to
zero disables the feature. A positive value sets the limit in mGauss.
2019-06-03 12:21:29 +10:00
Randy Mackay
e19d638c0f
AP_NavEKF2: support higher optical flow updates rates
2019-05-11 16:23:57 +09:00
Andrew Tridgell
cc62998d40
AP_NavEKF2: 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
7f639c1bb2
AP_NavEKF2: Allow checking all cores for failure
2019-04-09 10:53:25 +10:00
Pierre Kancir
50e99b6e1a
AP_NavEKF2: use get_distance_NE instead of location_diff
2019-04-08 08:00:52 -07:00
Pierre Kancir
3f5a6a243c
AP_NavEKF2: use get_distance instead of location_diff
2019-04-08 08:00:52 -07:00
Paul Riseborough
8038efc152
AP_NavEKF2: Flow use parameter updates
2019-04-02 10:51:12 +11:00
Paul Riseborough
e2148e7e2a
AP_NavEKF2: Update default plane optical flow param values
...
Reduce time required to form estimate of terrain offset
2019-04-02 10:51:12 +11:00
Paul Riseborough
aa6eee82f4
AP_NavEKF2: Rework opt flow terrain height logic
2019-04-02 10:51:12 +11:00
Paul Riseborough
67d20f3b3c
AP_NavEKF2: Update parameter description
2019-04-02 10:51:12 +11:00
Paul Riseborough
1862512c2b
AP_NavEKF2: Use flow sensor for navigation with unknown platform type
...
This is the more common use case.
2019-04-02 10:51:12 +11:00
Paul Riseborough
921205f61c
AP_NavEKF2: Minor amendments from review
2019-04-02 10:51:12 +11:00
Paul Riseborough
a40208ebd4
AP_NavEKF2: Improve optical flow height estimation
...
Updated derivation using sequential fusion of Y and X axis data.
2019-04-02 10:51:12 +11:00
Paul Riseborough
2b8b53d6b2
AP_NavEKF2: Add parameter to control how optical flow flow data is used
2019-04-02 10:51:12 +11:00
Mark Whitehorn
6b70181837
AP_NavEKF2: add getQuaternionBodyToNED
2019-03-29 10:58:00 +11:00
Tom Pittenger
8506ae9c32
AP_NavEKF2: rename dataflash to logger
2019-03-28 16:40:57 +11:00
Dr.-Ing. Amilcar do Carmo Lucas
79ee52917f
AP_NavEKF2: replace location_offset() and get_distance() function calls with Location object member function calls
...
This allows removing duplicated code
2019-02-28 11:44:09 +11:00
Arjun Vinod
78b165e36f
AP_NavEKF2: fixed typos
2019-02-26 08:33:39 +11:00
Arjun Vinod
a0e7c37f8c
AP_NavEKF2: fixed typos
2019-02-22 10:21:35 +11:00
Tom Pittenger
b32e8a4424
AP_NavEKF2: remove HAL_CPU_CLASS_150 check, 150 is already a minimum requirement
2019-02-17 12:59:52 -08:00
Tom Pittenger
8a6a39b590
AP_NavEKF3: unify singleton naming to _singleton and get_singleton()
2019-02-10 19:09:58 -07:00
Andrew Tridgell
ccc1f906f8
AP_NavEKF2: fixed EKF compass switching
...
when we had 3 compasses the lack of the 'break' meant when we switched
compass in flight we would always switch back instantly to the one
that we had just rejected.
2019-02-09 13:04:52 +11:00
chobits
3766ee1b60
AP_NavEKF2: add external navigation data lag
2019-01-31 08:30:22 +09:00
Peter Barker
6fc76a32af
GLOBAL: use AP::logger() and strip redundant Log_ from methods
2019-01-18 18:08:20 +11:00
Peter Barker
b47733142f
GLOBAL: rename DataFlash_Class to AP_Logger
2019-01-18 18:08:20 +11:00
Peter Barker
ebd12b30e8
AP_NavEKF2: adjust for Location_Class and Location unification
2019-01-16 11:45:29 +11:00
Peter Barker
9be604e3ce
AP_NavEKF2: adjust for location flags being moved out of union
2019-01-16 11:45:29 +11:00
Randy Mackay
c616587b86
AP_NavEKF: increase ABIAS_P_NSE param doc range to 0.005
2018-12-27 14:09:53 +09:00
Pierre Kancir
49d20364cb
AP_NavEKF2: pass quaternion by const reference
2018-12-20 09:05:01 +09:00
Andrew Tridgell
8ea7df3efe
AP_NavEKF2: added filter reset if unhealthy for 5s and disarmed
2018-11-30 11:02:30 +11:00
Michael du Breuil
29db069c75
AP_NavEKF2: Suppress clearing non-trival type warning
2018-10-30 16:17:03 -07:00
chobitsfan
1e56ad4837
AP_NavEKF2: add external nav system to POSNE_M_NSE description
2018-10-24 19:14:54 +09:00
chobits
08b9bf4a89
AP_NavEKF2: fix extNav position noise
2018-10-24 19:14:54 +09:00
Andrew Tridgell
805647df85
AP_NavEKF2: enable use of in-flight compass learning
2018-10-24 07:25:42 +10:00
Peter Barker
1c1d651979
AP_NavEKF2: add space for null-termination
...
This is simply to preserve existing behaviour when snprintf starts to
null-terminate strings
2018-10-21 07:54:30 +11:00
Peter Barker
3a79ae4eca
AP_NavEKF2: use union to alias array and struct access to states
...
This avoids creating two pointers of different types to the same memory.
Having two pointers to the same memory can lead to the compiler
optimising code such that a write to one pointer is rearranged to be
either before or after a read from the other pointer depending on which
is deemed faster - not a good outcome.
2018-10-19 08:46:43 +11:00
Peter Barker
fb176b544f
AP_NavEKF2: correct compilation when running MATH_CHECK_INDEXES
2018-10-19 08:46:43 +11:00
Peter Barker
889190d46e
AP_NavEKF2: always set EKF control limits, even with no cores
2018-10-09 10:47:38 +11:00
Peter Barker
3774aa6619
AP_NavEKF2: remove default clause in setAidingMode
...
All values from the enumeration should be handled in this switch; adding
a default will hide a compiler warning which may be useful.
2018-10-03 17:49:43 +01:00
Michael du Breuil
66e9286cf6
AP_NavEKF2: Fix roundoff, and missing offset handling of getLLH
2018-09-21 00:18:49 +01:00
Peter Barker
d8aa8d2b71
AP_NavEKF2: fix writeOptFlowMeas signature
...
const some of the vectors, stop taking references to scalars that aren't
being changed
2018-09-11 09:03:22 +10:00
Michael du Breuil
ee9cc28fda
AP_NavEKF2: Utilize the GPS drivers estimate for lag
2018-08-07 09:55:26 +10:00
Randy Mackay
3d72022f6e
EKF: modify ALT_SOURCE param description
...
We regularly find users changing the ALT_SOURCE to 1 (range finder) when trying to implement terrain following which is not the correct way to do it
2018-07-18 08:31:09 +09:00
Andrew Tridgell
3d31773fb4
AP_NavEKF2: fill in gps_quality_good flag
2018-07-14 17:49:52 +10:00
Dr.-Ing. Amilcar do Carmo Lucas
59e087214f
AP_NavEKF2: spell in comments (NFC)
2018-07-10 08:17:57 +09:00
Peter Barker
baa818a812
AP_NavEKF2: use compass singleton for logging
2018-07-04 20:11:27 +01:00
murata
a9b2b9dddf
AP_NavEKF2: Delete unused definitions
2018-06-11 09:11:44 +09:00
murata
1e011c0c15
AP_NavEKF2: Clarify the message
2018-06-04 11:32:15 +09:00
Andrew Tridgell
fb0deba3aa
AP_NavEKF2: send airspeed variance over mavlink
2018-04-30 15:41:31 +10:00
Peter Barker
578facc9ad
AP_NavEKF2: do not pass GPS into Log_Write_GPS; it uses singleton
2018-04-18 13:50:55 +09:00
Peter Barker
81044760c7
AP_NavEKF2: const accessors
2018-04-04 12:20:36 +01:00
priseborough
12fd19ea26
AP_NavEKF2: Clarify definition for gps_glitching flag
2018-03-27 20:28:57 +09:00
Paul Riseborough
c680b931dc
AP_NavEKF2: Enable fusion of external nav position data
2018-03-27 20:28:42 +09:00
Peter Barker
40957ec430
AP_NavEKF2: use ins singleton
2018-03-16 00:37:35 -07:00
Peter Barker
5ab89324b2
AP_NavEKF2: use baro singleton
2018-03-08 21:20:05 -08:00
Peter Barker
5b7d5a9757
AP_NavEKF2: mark getEulerAngles as const
2018-03-07 12:34:39 +00:00
Peter Barker
dbe860152d
AP_NavEKF2: tight types on constants
...
This saves ~200 bytes on at stm32 build, at the expense of people having
to watch the type carefully when increasing the values
2018-03-01 20:27:19 +09:00
Peter Barker
3a99b2bce1
AP_NavEKF: move initialisation of EKF constants into header file
...
Various comments where getting out of sync with one-another, and
having everything in one place lets you match values against types.
2018-03-01 20:27:19 +09:00
bugobliterator
b1213a522d
AP_NavEKF2: allocate NavEKF core from MEM_FAST region
2018-01-15 11:46:02 +11:00
Peter Barker
9c8466dc03
AP_NavEKF2: use GPS singleton
2017-12-27 00:58:02 +00:00
Pierre Kancir
171e80d8dc
AP_NavEKF2: only report terrain estimator innovations with valid rng value
2017-12-18 22:51:46 +00:00
Andrew Tridgell
4d4e66d825
AP_NavEKF2: removed create() method for objects
...
See discussion here:
https://github.com/ArduPilot/ardupilot/issues/7331
we were getting some uninitialised variables. While it only showed up in
AP_SbusOut, it means we can't be sure it won't happen on other objects,
so safest to remove the approach
Thanks to assistance from Lucas, Peter and Francisco
2017-12-14 08:12:28 +11:00
priseborough
3b32d583a9
AP_NavEKF2: Fix delta time use error
2017-12-12 11:39:38 +11:00
priseborough
440d361aff
AP_NavEKF2: Limit range of delta times
2017-12-12 11:39:38 +11:00
Andrew Tridgell
97729a12f0
AP_NavEKF2: don't run IMU updates until buffer fills
...
this prevents us using bad initial data multiple times. It fixes a bug
where the IMU may pause during EK2 initialisation
2017-12-12 11:39:38 +11:00
Andrew Tridgell
4019a167a9
AP_NavEKF2: fixed inverted function setInhibitGpsVertVelUse()
2017-11-29 09:47:14 +09:00
Samuel Tabor
1b4705242c
AP_NavEKF2: print reason for EKF2 arming failure when no GPS is available
2017-11-20 13:53:31 +09:00
priseborough
efdc651d1a
AP_NavEKF2: Require reboot after changing ALT_SOURCE parameter
...
Toggling between alt sources in flight using the parameter can have unpredictable effects due to the various height offsets and the possibility that the data source may be unavailable.
2017-10-04 00:24:15 +01:00
Lucas De Marchi
3c04f4e4d1
AP_NavEKF2: add static create method
2017-09-26 03:01:21 +01:00
Peter Barker
1e83ef3c44
AP_NavEKF2: use rangefinder backend accessors
2017-08-15 18:30:45 +01:00
priseborough
f2f3067326
AP_NavEKF2: Add interface to control GPS vertical velocity use
2017-08-10 19:49:45 +10:00
Michael du Breuil
dffa3d3b40
AP_NavEKF2: Fix possible compass nullptr dereference
2017-08-01 15:25:05 +01:00
priseborough
ac568bae53
AP_NavEKF2: Initialise EKF origin height to field elevation
...
Enables copters to set bit position 2 in the EK2_OGN_HGT_MASK parameter without having a large jump in reported local position height.
2017-07-17 02:22:02 +01:00
priseborough
027552ef44
AP_NavEKF2: Fix default behaviour for height origin corrections
...
Previous default was to apply in-flight height origin changes to local position instead of to reported origin height. This caused problems with copters that took off before getting GPS lock.
2017-07-17 02:22:02 +01:00
Peter Barker
5da3759ff4
AP_NavEKF2: eliminate GCS_MAVLINK::send_statustext_all
2017-07-11 23:53:53 +01:00
Randy Mackay
7e7f78d4b5
AP_NavEKF2: final mag reset at 2.5m
2017-07-08 08:39:43 +09:00
priseborough
c69c5440a0
AP_NavEKF2: Fix calculation of predicted LOS rate in terrain estimator
2017-06-26 14:58:06 +01:00
priseborough
ce8e935896
AP_NavEKF2: Fix terrain estimator innovation consistency check
2017-06-20 02:08:56 +01:00
priseborough
b7e6e6f95f
AP_NavEKF2: Fix bug in flow fusion for terrain estimation
...
Also remove unused class variables
2017-06-20 02:08:56 +01:00
Andrew Tridgell
cbffc29f0b
AP_NavEKF2: use AHRS likely flying state
...
this sets inFlight when AHRS has indicated flying for 5s
2017-06-20 09:44:44 +10:00
priseborough
647db728ce
AP_NavEKF2: Improve is flying check for non fly forward vehicles
...
Will enable use of EK3_MAG_TYPE = 0 for coptersAP_NavEKF2:
2017-06-19 06:09:07 +10:00
Dr.-Ing. Amilcar Do Carmo Lucas
7426bdb9b7
AP_NavEKF2: Fix long description of EK2_OGN_HGT_MASK parameter
2017-06-16 12:05:20 +01:00
priseborough
b42fb31d7d
AP_NavEKF2: Change default value of EK2_OGN_HGT_MASK
...
Turn off by default.
Update parameter description
2017-06-14 12:44:41 +01:00
priseborough
fd25450632
AP_NavEKF2: Ensure reported local height = global height - origin height
2017-06-14 12:44:41 +01:00
priseborough
77d21f72d4
AP_NavEKF2: Allow reporting of origin height for specified instance
2017-06-14 12:44:41 +01:00
priseborough
36e7dfb5f6
AP_NavEKF2: Improve GPS reference height estimator
...
Fix rounding error bug preventing state from updating after initial convergence.
Decouple GPS reference height from published EKf origin height.
Add bitmask parameter to control update and publishing of GPS reference height.
2017-06-14 12:44:41 +01:00
priseborough
1985dcd366
AP_NavEKF2: Fix bug in declination fusion
2017-06-03 15:16:25 +01:00
Dr.-Ing. Amilcar Do Carmo Lucas
3f6059397c
AP_NavEKF2: Add missing @RebootRequired: True
2017-05-27 01:55:55 +01:00