Paul Riseborough
5ea0ef39cd
EKF: Update declination fusion logic
...
We do not need to run declination fusion if 3-axis mag fusion is not being used.
2016-02-09 07:54:24 +11:00
Paul Riseborough
47ab5ebcdd
EKF: Make PR comply with project convention for indenting
2016-02-08 15:12:38 +11:00
Paul Riseborough
cdc42c1de0
EKF: Add simple control logic for magnetic declination constraint
2016-02-08 14:18:43 +11:00
Paul Riseborough
dbb8e12948
EKF: Add fusion method to constrain declination when unobservable
...
When fusing 3-axis magnetometer data without absolute external aiding leg GPS), the declination is ultimately unobservable and the declination of the field states and the vehicle heading will slowly drift over time. To prevent this we need to fuse in a declination to constraint the NE earth field estimates.
2016-02-08 14:18:43 +11:00
Paul Riseborough
9347afe250
EKF: Use unique variable name for mag heading fusion observation Jacobian
2016-02-08 14:18:43 +11:00
Paul Riseborough
6aeccf01ff
EKF: Add missing fusion health status messages
2016-02-08 14:18:43 +11:00
Paul Riseborough
2c8c6efb45
EKF: Eliminate use of power function to square numbers
...
Use of the power function to square a number can be very inefficient depending on processor and compiler. Replace with an inlined function that multiplies the number by itself. This has not been put into the maths library because the use of the sq() function is peculiar to the autocode generated for the EKF and an inlined function was desired.
2016-02-08 11:11:59 +11:00
Paul Riseborough
3f81eb7d1b
EKF: fix formatting
2016-02-04 17:15:03 +11:00
Paul Riseborough
9bfc11b660
EKF: Use specific position observation noise when flying without GPS
...
A larger position uncertainty is required when flying without GPS to reduce tilt attitude estimation errors caused by vehicle manoeuvring. This needs to be tuneable to allow optimisation for different use cases (e.g. outdoor vs indoor).
2016-02-03 18:40:32 +11:00
Paul Riseborough
7de1d39ce4
EKF: Improve use of position and velocity observation noise parameters
...
Fix bug where noise parameters were not being squared when calculating the observation variance.
Use GPS reported speed accuracy to set velocity observation noise and use the parameter to set the minimum.
2016-02-03 18:15:38 +11:00
Paul Riseborough
2b1e8fe910
EKF: Update tuning parameters
...
Set conservative defaults as a baseline for tuning
Add a missing parameter for magnetometer observation noise.
Correct error in definition of magnetic heading observations noise (previous parameter defined the variance directly, not the noise).
Scale vertical GPS noise to allow for average EPV to EPH ratio.
Update documentation and display names for consistency.
2016-02-03 17:05:45 +11:00
Lorenz Meier
b21a49b3f9
EKF: Use standard C++ initializers
2016-01-31 23:24:36 +01:00
Roman
b749a7557b
fixed typos
2016-01-31 21:36:58 +01:00
bugobliterator
d79e12dfa1
EKF: fix code style
2016-01-31 00:12:16 -08:00
bugobliterator
8200ef4d17
EKF: allocate and unallocate buffer more robustly
2016-01-31 00:12:16 -08:00
bugobliterator
c6249a2825
EKF: change estimator base class name to estimation interface
2016-01-31 00:12:07 -08:00
bugobliterator
3cafedd4c1
EKF: start storing samples only when ekf is initialised
2016-01-30 12:46:01 -08:00
bugobliterator
b062bd2e38
EKF: move estimator specific variables to estimator core
2016-01-30 12:45:23 -08:00
bugobliterator
287f5eb0c2
EKF: move all estimator specific types to common header
2016-01-30 12:44:19 -08:00
bugobliterator
b05e2d825c
EKF: move estimator specific initialisations to estimator core
2016-01-30 12:42:24 -08:00
Paul Riseborough
f1b82057c0
EKF: Combine GPS velocity innovation gate parameters
...
Separate vertical and horizontal parameters for GPS velocity innovation gates are not required
2016-01-30 12:21:50 -08:00
Paul Riseborough
466a104534
EKF: additional GPS check logic
...
Improve naming of NED origin initialisation status
Add check for GPS solution type
Use GPS checks when regaining GPs in-flight
2016-01-30 12:21:39 -08:00
bugobliterator
a779d45cd0
ekf2: fix bug causing faulty imu data storage
2016-01-29 23:56:24 -08:00
bugobliterator
92dc41e885
EKF: fix typo in function declaration
2016-01-29 20:05:07 -08:00
bugobliterator
3eea6cdcc5
EKF: use namespace for structure definitions
...
will be moved to a separate file in the future
2016-01-29 20:04:21 -08:00
bugobliterator
001d621eb1
EKF: move imu data processing code to estimator core
2016-01-29 20:03:25 -08:00
bugobliterator
251996d387
ekf: move gps checks to Ekf library from estimator_base
2016-01-29 17:15:18 -08:00
Paul Riseborough
46b0e9654c
Add filter control logic
2016-01-30 09:01:48 +11:00
Paul Riseborough
9236f11c80
EKF: Add position and velocity innovation consistency checks
2016-01-28 16:33:54 +11:00
Paul Riseborough
7713cc8c20
Merge pull request #17 from priseborough/pr-addMagErrHandling
...
EKF: Add magnetometer fusion error handling
2016-01-28 13:43:57 +11:00
Lorenz Meier
f4b2c0eecf
Merge pull request #11 from mcharleb/PRIu64-fix
...
Fixed printf of uint64_t
2016-01-28 01:01:10 +01:00
Paul Riseborough
802129f384
EKF: Add magnetometer fusion error handling
2016-01-28 09:53:55 +11:00
Paul Riseborough
39eef3a2d7
EKF: Remove use of camel case variable names
...
Also fixes bug in GPS speed accuracy check that was using horizontal position accuracy variable by mistake.
2016-01-28 08:37:45 +11:00
Paul Riseborough
cc50d26601
EKF: Update comments
2016-01-28 08:13:38 +11:00
Paul Riseborough
4526cb9c4f
EKF: remove redundant variable
2016-01-28 07:50:45 +11:00
Paul Riseborough
6326433c47
EKF: Eliminate call to hrt_absolute_time()
...
This will make the library more portable
2016-01-27 19:04:31 +11:00
Paul Riseborough
94a6644684
Add comprehensive user selectable GPS checks
2016-01-25 13:07:57 +11:00
Roman
8d0022ab1e
enable estimator state and innovations data logging
2016-01-22 11:31:14 +01:00
Roman
86df68e404
added interface for parameters
2016-01-22 10:45:03 +01:00
nickolasrossi
dfbbd36ff7
fix buffer overflow in constrain of wind velocity
2016-01-19 18:25:22 -08:00
Mark Charlebois
79bf35c4b3
Fixed printf of uint64_t
...
Must use PRIu64 to prevent compiler errors.
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2016-01-18 22:19:10 -08:00
Roman
0b5c90574c
fix delta angle bias usage:
...
the delta angle bias was applied to imu data which was not coming in the same
time intervall as the filter was operating. Therefore, the delta angle bias
applied to new imu data had to be scaled correctly in order to match
the imu time interval.
2016-01-14 17:06:02 +01:00
Roman
2af5856361
initialise output height with baro
2016-01-08 06:59:10 +01:00
Roman
a41f75ffb1
use full mag fusion
2016-01-08 06:59:10 +01:00
Roman
f8354bb5e9
- do not fake vertical gps measurement as we have baro
...
- formatting
Conflicts:
EKF/ekf.cpp
2016-01-08 06:59:10 +01:00
Roman
2a88fc6cfd
initialise vertical position correctly
2016-01-08 06:42:22 +01:00
Roman
5aa5f7f8c3
use correct timestamp for measurements
2016-01-08 06:42:03 +01:00
Mark Charlebois
b8837b4dc6
Added hexagon support
...
std::to_string is not supported in the Hexagon complier
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2016-01-07 14:54:55 -08:00
Paul Riseborough
edfb7aefcc
EKF: Fix initial alignment errors
...
Use the gravity vector to estimate the initial roll and pitch angle
Use the projection of the magnetic field measurement onto the earth axis horizontal plane to calculate the initial heading
2016-01-03 00:03:03 +11:00
Lorenz Meier
52cb9d02c7
EKF: Initialize all local structs and variables
2016-01-01 12:31:36 +01:00