waltjohnson
7c158aa59b
Addressed C99 compiler issues of initializing variables in header and unused included statements.
2016-05-19 09:58:18 -06:00
Paul Riseborough
e3b9800cac
Merge pull request #138 from pickledgator/evTesting
...
EV testing
2016-05-19 12:56:41 +10:00
Paul Riseborough
b9a3712ccb
EKF: record yaw alignment event during initialisation to allow heading fusion to start early
...
This ensures bad yaw gyro biases are compensated for early, rather than waiting for the tilt alignment to fully converge before fusing heading.
2016-05-18 19:25:19 +10:00
Paul Riseborough
22fba0fc6e
EKF: don't initialise filter without EV data if we are relying on it
2016-05-18 19:25:19 +10:00
Nic
1b16f3575a
added ev_pos flag check to valid_lpos, disable fake gps when ev_pos is valid
2016-05-17 21:07:04 -07:00
Paul Riseborough
c955bfbf93
EKF: fix previous merge error
2016-05-15 20:36:51 +10:00
Paul Riseborough
349c731375
EKF: remove PX4 dependant text output
2016-05-14 21:17:29 +10:00
devbharat
cf1df5861a
Undid hack in ecl. Handled yaw missalignment on the vision side.
2016-05-14 21:17:29 +10:00
devbharat
d16f413b55
Hack to fix external vision pos offset compensation
2016-05-14 21:17:29 +10:00
devbharat
d3bad9fdb0
Correct height fusion flag when using sensor other than baro
2016-05-14 21:17:29 +10:00
devbharat
b681c9a5d0
Added external vision noise parameters etc and position offset
2016-05-14 21:17:29 +10:00
devbharat
ff8f03b5dd
Added compensation for VI sensor offset. Check sign.
2016-05-14 21:17:29 +10:00
Paul Riseborough
e917d6c7f2
EKF: Add fusion of external yaw data
2016-05-14 21:17:29 +10:00
Paul Riseborough
25f1d1d766
EKF: Add fusion of external vision 3D pos data
2016-05-14 21:17:29 +10:00
Paul Riseborough
81469d6621
EKF: Add position, height and velocity reset for EV aiding
2016-05-14 21:17:29 +10:00
Paul Riseborough
c7e225124c
EKF: Improve output observer position and velocity tracking
...
Replace the delayed time feedback mechanism used by the translational states with a direct feedback method.
Time constants for velocity and position convergence can be separately adjusted with tunable parameters
The method is more computationally more expensive because it requires modification of the output buffer history but is acceptable because it only requires 6 FLOP per buffer index for a total of 30*6 = 180 FLOP
The method was not applied to the attitude states because the quaternion operations required at each buffer index would have been computationally prohibitive.
2016-05-14 12:45:29 +09:30
Paul Riseborough
627d08ecc9
Revert "EKF: Fix bug in output observer"
...
This reverts commit 03f3df741589627bf15225327289b01916cc1a90.
2016-05-14 12:26:46 +09:30
Paul Riseborough
03f3df7415
EKF: Fix bug in output observer
...
Bug was causing output observer state history to be stored at the the EKF, not IMU output rate and resulted in degraded tracking performance
2016-05-14 08:33:05 +09:30
Paul Riseborough
481c624975
EKF: Remove use of vehicle arm status
...
Use single externally set in-air status for all decisions
2016-05-10 10:23:08 +10:00
Paul Riseborough
0c6a367e1b
EKF: fix Travis build error
2016-05-07 17:45:49 +10:00
Paul Riseborough
22f0f52bf1
EKF: fix travis build error
2016-05-07 17:06:45 +10:00
Paul Riseborough
da9d894441
EKF: Improvements to covariance reset
2016-05-07 12:57:41 +10:00
Paul Riseborough
f1b7e7714e
EKF: Make average update rate of EKF closer to target
...
With the EKF, the average update rate is more important than the instantaneous value as it affects tuning. This patch ensures that the EKF prediction cycle will be performed early if the previous one was late in an attempt to maintain the target update rate.
2016-05-05 21:23:03 +10:00
Paul Riseborough
5523a4f225
EKF: Fix IMU bias compensation scale error in output filter
...
Delta angle and velocities are calculated assuming data is at the filter update rate, not the IMU update rate
2016-05-05 21:23:03 +10:00
Paul Riseborough
727a43764f
EKF: update initial angle alignment check
2016-05-05 21:23:03 +10:00
Paul Riseborough
ffea65e1a4
EKF: fix bug in state prediction
2016-05-05 21:23:03 +10:00
Paul Riseborough
7530e30012
EKF: Improve IMU data collection
...
Use IMU driver published delta angle integration time to determine when enough data has been accumulated.
Perform basic first order sculling corrections on delta velocity data
Comment steps to make make method clearer
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
fe9f88a8b4
EKF: test new derivation
...
Use direct attitude parameterisation
Discard scale factors
Add accel bias
2016-05-05 21:23:03 +10: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
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
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
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
0de15b1b20
EKF: Add variables to monitor vertical position and height offset
2016-04-22 08:28:56 +10:00
Paul Riseborough
b295f9050c
EKF: ensure GPS check status is correctly initialised
2016-04-20 21:53:15 +10: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
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
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