Paul Riseborough
82da832816
EKF: tidy up Kalman gain calculations
...
Inhibiting of states is controlled via zeroing rows and columns in the covariance prediction so conditional logic in gain calculations is unnecessary.
2016-05-05 21:23:03 +10:00
Paul Riseborough
311d046a26
EKF: Enable optional activation of XY delta velocity bias estimation
2016-05-05 21:23:03 +10:00
Paul Riseborough
572c2280bd
EKF: tidy up covariance prediction
2016-05-05 21:23:03 +10:00
Paul Riseborough
54e713969d
EKF: Fix rebase error
2016-05-05 21:23:03 +10:00
Paul Riseborough
67d23948b5
EKF: preliminary re-tune
2016-05-05 21:23:03 +10:00
Paul Riseborough
03c35266ef
EKF: remove unused parameter
2016-05-05 21:23:03 +10:00
Paul Riseborough
fe9f88a8b4
EKF: test new derivation
...
Use direct attitude parameterisation
Discard scale factors
Add accel bias
2016-05-05 21:23:03 +10:00
Daniel Agar
22d18d638c
enable Wshadow
2016-05-04 19:45:40 -04:00
Beat Küng
f2dda3c183
ekf: initialize _terrain_var, fixes access to uninitialized value
...
in PX4 Firmware, Ekf::get_terrain_vert_pos depends on it. This is the
valgrind output:
==15439== Thread 14 ekf2:
==15439== Conditional jump or move depends on uninitialised value(s)
==15439== at 0x5610087: sqrtf (in /usr/lib64/libm-2.22.so)
==15439== by 0x4D1AF0: Ekf::get_terrain_vert_pos(float*) (terrain_estimator.cpp:135)
==15439== by 0x46641F: Ekf2::task_main() (ekf2_main.cpp:655)
==15439== by 0x42BF3D: entry_adapter(void*) (px4_posix_tasks.cpp:103)
==15439== by 0x4E3C609: start_thread (in /usr/lib64/libpthread-2.22.so)
==15439== by 0x5BF7A4C: clone (in /usr/lib64/libc-2.22.so)
2016-05-02 17:35:42 +02:00
Roman
0c77ebf6bd
EKF: Reduce likelihood of bad covariance values after height resets
...
The cross terms (covariances) are now reset before the variance variance is set.
The vertical velocity state variance following a reset without GPS has been reduced.
2016-05-01 21:39:56 +10:00
Paul Riseborough
6c57bea1c3
EKF: fix bug in IMU error application timing patch
2016-04-30 15:11:12 +10:00
Paul Riseborough
15df20831a
EKF: improve output complementary filter tracking
...
Optimise for height tracking and adjust gains automatically with changes in time delay.
2016-04-30 11:03:45 +10:00
Paul Riseborough
4fa1e9c651
EKF: Fix timing errors in state prediction
...
IMU corrections were being applied at the wrong time horizon to the EKF states
IMU downsampling rotates the delta velocities into the orientation produced by the last delta angle, but this wasn't consistent with the way the state prediction was using the delta velocity data.
2016-04-30 11:02:19 +10:00
Julian Oes
f8a48f9cc5
ekf: now it should even compile for NuttX
2016-04-28 16:30:49 +02:00
Julian Oes
12f4d6f703
ekf: another stab at fixing isfinite for all
...
The previous solution did not work for Snapdragon, so I needed to copy
what is used in px4_defines.h.
2016-04-28 16:09:12 +02:00
Paul Riseborough
22ad87599c
Merge pull request #112 from PX4/fix_ubuntu1604_2
...
ekf: compile fix for Ubuntu 16.04
2016-04-27 21:21:04 +10:00
Julian Oes
46e207106b
ekf: use `std::isfinite` instead of `isnan`
2016-04-27 12:58:22 +02:00
Paul Riseborough
4fcbfb5d42
EKF: correct error in comment
2016-04-23 07:55:25 +10:00
Paul Riseborough
3e81b86280
EKF: improve height reset logic
...
Don't use failed sensors unless necessary and handle case where not height sensor is available for reset
2016-04-22 10:50:53 +10:00
Paul Riseborough
874558d194
EKF: improve detection of bad vert accel data
...
Improve ability to detect if bad vertical accel data has caused loss of height accuracy by using historical data.
2016-04-22 09:24:04 +10:00
Paul Riseborough
469a7d1711
EKF: rework height reset
...
calculate and save the amount that the vertical states have changed and the time of the change
apply the change delta to the output observer states and buffer
2016-04-22 08:43:56 +10:00
Paul Riseborough
e3365525c2
EKF: rework height reset logic
2016-04-22 08:39:24 +10:00
Paul Riseborough
421703c267
EKF: rework initialisation of height state and offsets
2016-04-22 08:38:41 +10:00
Paul Riseborough
a7417657c3
EKF: ensure fusion timeout counters are reset when required
2016-04-22 08:33:11 +10:00
Paul Riseborough
10bf05e9a6
EKF: publish the vertical position offset
2016-04-22 08:30:46 +10:00
Paul Riseborough
0de15b1b20
EKF: Add variables to monitor vertical position and height offset
2016-04-22 08:28:56 +10:00
Paul Riseborough
62c6d40f1f
EKF: Add methods to ring buffer to access specific indices
2016-04-22 08:21:36 +10:00
Paul Riseborough
b295f9050c
EKF: ensure GPS check status is correctly initialised
2016-04-20 21:53:15 +10:00
Lorenz Meier
9487eac505
Merge pull request #98 from priseborough/pr-ekf2StatusReporting
...
EKF: improve reporting of filter status
2016-04-20 11:44:02 +02:00
Roman Bapst
6344fa0e8c
limit maximum rates of all measurement at which they are stored into the buffers
2016-04-19 12:47:57 +02:00
Roman Bapst
00c8821006
disable airspeed fusion for now. Needs more testing and implementation of side slip fusion
2016-04-19 11:18:45 +02:00
Paul Riseborough
2fa8a11a29
EKF: replace unnecessary memcopy
2016-04-19 19:10:41 +10:00
Roman Bapst
99fc61c27c
ekf2 airspeed fusion:
...
- finished logic for fusion
- fixed bug where previous control status was set in the wrong location
2016-04-19 09:53:31 +02:00
Paul Riseborough
82920da232
EKF: strengthen checking of local position status
...
provides immediate status reporting when dropping out of optical flow mode
2016-04-19 17:38:22 +10:00
Paul Riseborough
31bf342fc1
EKF: publish GPS check status
2016-04-19 17:38:22 +10:00
Paul Riseborough
6fa13c7806
EKF: publish control mode status
2016-04-19 17:37:27 +10:00
Roman Bapst
60abf07bee
added function to return accelerometer bias
2016-04-18 17:52:16 +02:00
Roman Bapst
f32303de69
added function to return accelerometer bias
2016-04-18 17:00:17 +02:00
Lorenz Meier
3455931617
EKF init: Fix initialization statement
2016-04-17 19:29:23 +02:00
Daniel Agar
861c13f1fe
cmake STACK -> STACK_MAIN
2016-04-16 21:46:50 -04:00
Paul Riseborough
ea38aa130f
EKF: update default time delay parameter values
2016-04-14 08:53:59 +10:00
Paul Riseborough
8c55e36ca9
EKF: use common value for gravity
2016-04-12 11:14:31 +10:00
Paul Riseborough
163c08a3ac
EKF: Improve output observer documentation
2016-04-12 11:14:31 +10:00
Paul Riseborough
2dcc6e2053
EKF: Improve accuracy of state prediction
...
Use an a common estimator value for gravity
Use average orientation across update interval when rotating delta velocities
2016-04-12 11:14:31 +10:00
Paul Riseborough
5bf02517a7
EKF: Rationalise use of rotation matrices and improve efficiency
2016-04-12 11:14:31 +10:00
Paul Riseborough
e10093854a
EKF: correct outputs for IMU offset
2016-04-12 11:14:31 +10:00
Paul Riseborough
b46053415f
EKF: Compensate optical flow data for sensor position offset
2016-04-12 11:14:31 +10:00
Paul Riseborough
48b105b748
EKF: correct range finder data for sensor position offset
2016-04-12 11:14:31 +10:00
Paul Riseborough
e89dbb9f63
EKF: correct GPS data for antenna position offset
2016-04-12 11:14:31 +10:00
Paul Riseborough
3580940e10
EKF: Add sensor position offset parameters
2016-04-12 11:14:31 +10:00