Mathieu Bresciani 549fb0d5de
ekf2_main - Add optical flow innovation pre-flight check (#13036)
* ekf2: Add FirstOrderLpf and InnovationLpf classes for innovation lowpass filtering

* ekf2: use InnovLpf filter class in preflight checks

* ekf2: move selection of yaw test limit for pre-flight check in function

* ekf2: Move pre-flight checks into separate function

* ekf2: use static constexpr insetead of inline for sq (square) function

* ekf2: Split pre-flight checks in separate functions
Also use the same check for all the innovations:
innov_lpf < test and innov < 2xtest

* ekf2: Add optical flow pre-flight check

* ekf2: Combine FirstOrderLpf and InnovationLpf in single class

* ekf2: check vel_pos_innov when ev_pos is active as well

* ekf2: transform InnovationLpf into a header only library and pass the
spike limit during the update call to avoid storing it here

* ekf2: Static and const cleanup
- set spike_lim constants as static constexpr, set innovation
- set checker helper functions as static
- rename the mix of heading and yaw as heading to avoid confusion

* ekf2: use ternary operator in selectHeadingTestLimit instead of if-else

* ekf2: store intermediate redults in const bool flags. Those will be used for logging

* ekf2: set variable const whenever possible

* ekf2: create PreFlightChecker class that handle all the innovation
pre-flight checks.
Add simple unit testing
Use bitmask instead of general flag to have more granularity

* PreFlightChecker: use setter for the innovations to check instead of sending booleans in the update function
This makes it more scalable as more checks will be added

* ekf: Use booleans instead of bitmask for ekf preflt checks
Rename "down" to "vert"
2019-10-22 16:22:42 +02:00
..
2018-08-09 13:40:48 +02:00
2018-08-09 13:40:48 +02:00
2018-08-09 13:40:48 +02:00
2018-08-09 13:40:48 +02:00
2019-01-25 11:58:17 -05:00
2019-07-30 10:47:10 -04:00
2018-08-09 13:40:48 +02:00
2018-08-09 13:40:48 +02:00
2018-08-09 13:40:48 +02:00
2018-08-09 13:40:48 +02:00
2019-04-03 08:20:47 -04:00
2018-08-09 13:40:48 +02:00
2018-08-09 13:40:48 +02:00
2018-08-09 13:40:48 +02:00
2018-08-09 13:40:48 +02:00