Daniel Agar
681590c510
ekf2: multi-ekf force initial selection (and sensor_selection publication)
...
- depending on the particular sensor configuration and startup timing we were getting an initial sensor_selection publication without valid accel & gyro device ids (only applies to Multi-EKF)
- fix faulty accel and gyro device ids
- initialize unused test ratio fields to NAN for logging clarity
2020-12-07 21:37:24 -05:00
Daniel Agar
01620420fa
ekf2: update to latest ecl with RingBuffer minor improvements
...
- includes https://github.com/PX4/PX4-ECL/pull/938
2020-12-03 21:17:22 -05:00
Paul Riseborough
3e4c38f6e8
ekf2: Fix bug causing excessive lane selection switching
2020-11-25 10:00:07 -05:00
Daniel Agar
5d7ea62190
estimator_innovations: remove unimplemented fake vel & pos fields
...
- easy to readd if and when they're needed
2020-11-11 20:17:52 -05:00
Daniel Agar
880dc6accd
ekf2: compile at MAX_CUSTOM_OPT_LEVEL
2020-11-11 20:17:52 -05:00
Daniel Agar
1e03285405
ekf2: avoid storing in_ground_effect state
2020-11-11 20:17:52 -05:00
Daniel Agar
26de630dc5
ekf2: remove landed flag and use control_status directly
2020-11-11 20:17:52 -05:00
Daniel Agar
89ab6a5dbf
ekf2: preflight checks only reset on STANDBY change
...
- avoid storing unnecessary state and call setVehicleCanObserveHeadingInFlight() directly
2020-11-11 20:17:52 -05:00
Daniel Agar
b9fff2c221
ekf2: sensor_selection only updated in non-multi mode
...
- publish attitude as soon as possible
2020-11-11 20:17:52 -05:00
Daniel Agar
7264577eec
ekf2: split perf counters (full update or not) and reorganize Run() slightly
2020-11-11 20:17:52 -05:00
Daniel Agar
a68fe4dbd7
ekf2: move parameter update to beginning of cycle
2020-11-11 20:17:52 -05:00
Daniel Agar
5ae7c80a18
ekf2: move rangeSample update to UpdateRangeSample()
2020-11-11 20:17:52 -05:00
Daniel Agar
991015c5c6
ekf2: move magSample update to UpdateMagSample()
2020-11-11 20:17:52 -05:00
Daniel Agar
68f49619b7
ekf2: move gps_message update to UpdateGpsSample()
2020-11-11 20:17:52 -05:00
Daniel Agar
0db706011a
ekf2: move FlowSample update to UpdateFlowSample()
2020-11-11 20:17:52 -05:00
Daniel Agar
8ee197acad
ekf2: move vehicle_odometry_aligned publication to PublishOdometryAligned()
2020-11-11 20:17:52 -05:00
Daniel Agar
b29f3c7ce5
ekf2: move ExtVisionSample update to UpdateExtVisionSample()
2020-11-11 20:17:52 -05:00
Daniel Agar
0f56793116
ekf2: move BaroSample update to UpdateBaroSample()
2020-11-11 20:17:52 -05:00
Daniel Agar
6b30f01daf
ekf2: move AuxVelSample update to UpdateAuxVelSample()
2020-11-11 20:17:52 -05:00
Daniel Agar
651e292d42
ekf2: move AirspeedSample update to UpdateAirspeedSample()
2020-11-11 20:17:52 -05:00
Daniel Agar
f4f3ba47a2
ekf2: move mag calibration to UpdateMagCalibration()
2020-11-11 20:17:52 -05:00
Daniel Agar
96178a6fb0
ekf2: publish yaw estimator status last
2020-11-11 20:17:52 -05:00
Daniel Agar
05de61ff15
ekf2: move estimator innovations publication to method
2020-11-11 20:17:52 -05:00
Daniel Agar
387186c11d
ekf2: move estimator innovation test ratios publication to method
2020-11-11 20:17:52 -05:00
Daniel Agar
3b9965ff8d
ekf2: move estimator innovation variances publication to method
2020-11-11 20:17:52 -05:00
Daniel Agar
94415a45fa
ekf2: move estimator status publication to method
2020-11-11 20:17:52 -05:00
Daniel Agar
03388f4656
ekf2: move estimator states publication to method
2020-11-11 20:17:52 -05:00
Daniel Agar
98334d1325
ekf2: move local position publication to method
2020-11-11 20:17:52 -05:00
Daniel Agar
c09a5e0d9f
ekf2: move global position publication to method
2020-11-11 20:17:52 -05:00
Daniel Agar
8616345346
ekf2: move estimator_sensor_bias publication to method
...
- only publish if there's a change in bias
- publish current estimated mag bias, including saved mag bias
2020-11-11 20:17:52 -05:00
Daniel Agar
e397cbf8bb
ekf2: move ekf_gps_drift publication to method
2020-11-11 20:17:52 -05:00
Daniel Agar
0d657c74bf
ekf2: rename publish helpers mixed case (google style guide)
2020-11-11 20:17:52 -05:00
Daniel Agar
4578b8cdcc
Update submodule ecl to latest Mon Nov 2 09:57:32 EST 2020
...
- ecl in PX4/Firmware (f87b19f31b9918f73d336d10e68d39c659037582): https://github/commit/48a8992caf7a95e09a5e17235133894c072b96bd
- ecl current upstream: https://github/commit/a21092804a784d012939f96cc633e7da5f5e8cde
- Changes: https://github/compare/48a8992caf7a95e09a5e17235133894c072b96bd...a21092804a784d012939f96cc633e7da5f5e8cde
a210928 2020-11-01 Daniel Agar - EKF: remove virtual getters from estimator_interface
2020-11-02 12:44:14 -05:00
Daniel Agar
a1ef4d1469
ekf2: only advertise immediately in multi-EKF mode
2020-11-01 15:48:35 -05:00
Daniel Agar
ecb462f325
ekf2: EKF2.cpp using matrix Eulerf, Quatf, Vector3f
2020-10-29 10:22:57 -04:00
Daniel Agar
d1af095c0b
ekf2: don't store vehicle_status_s
2020-10-29 10:22:57 -04:00
Daniel Agar
d27573b797
ekf2: don't store vehicle_land_detected_s
2020-10-29 10:22:57 -04:00
Daniel Agar
7757aeda94
ekf2: don't store sensor_selection_s copy
2020-10-29 10:22:57 -04:00
Daniel Agar
db5235b074
ekf2: avoid storing message copies
2020-10-29 10:22:57 -04:00
Daniel Agar
3f9f2c6fdf
ekf2: multi ekf supports up to 4 IMUs
2020-10-28 20:50:58 -04:00
Daniel Agar
2c874f1cd9
ekf2 selector fix SITL lockstep
...
- ekf2 selector don't register lockstep until first attitude publication
- sensors module register lockstep component
- enable multi-EKF2 in SITL
2020-10-28 09:42:41 -04:00
Daniel Agar
df2f26ebdf
rename vehicle_visual_odometry_aligned -> estimator_visual_odometry_aligned
...
- saves a small amount of work for the ekf2 selector in multi-EKF mode (visual_odometry_aligned now ignored)
- helps to distinguish the origin/purpose from vehicle_odometry and vehicle_visual_odometry
2020-10-27 12:33:39 -04:00
Daniel Agar and Paul Riseborough
0f411d6820
Multi-EKF support (ekf2)
...
- ekf2 can now run in multi-instance mode (currently up to 9 instances)
- in multi mode all estimates are published to alternate topics (eg estimator_attitude instead of vehicle_attitude)
- new ekf2 selector runs in multi-instance mode to monitor and compare all instances, selecting a primary (eg N x estimator_attitude => vehicle_attitude)
- sensors module accel & gyro inconsistency checks are now relative to the mean of all instances, rather than the current primary (when active ekf2 selector is responsible for choosing primary accel & gyro)
- existing consumers of estimator_status must check estimator_selector_status to select current primary instance status
- ekf2 single instance mode is still fully supported and the default
Co-authored-by: Paul Riseborough <gncsolns@gmail.com >
2020-10-27 10:56:11 -04:00
bresch
109ed18a3a
Flow: adjust default optical flow delay based on pmw3901
...
This is the correct value for the most common optical flow sensor
2020-10-26 14:10:25 -04:00
bresch
09cc3120e2
OpticalFlow: add optical flow velocity logging
...
This is important to align the flow with the IMU data and verify that
the compensation is properly done
2020-10-26 14:10:25 -04:00
Nicolas Martin
948bed6b5c
fix ekf2 saved mag bias comments (mGauss -> Gauss)
2020-10-26 00:43:20 -04:00
Daniel Agar
d985887468
ekf2: use new Param<> reset method
2020-10-15 08:32:05 +02:00
CarlOlsson
98c8cbb27f
ekf2: fix odom body rate sign bug
2020-09-30 11:34:37 -04:00
Daniel Agar
f1feaf45d3
EKF2: move vehicle_odometry publish to method
2020-09-28 18:34:49 -04:00
a24488328f
Move GPS blending from ekf2 to sensors module
...
- new sensors work item that subscribes to N x sensor_gps and publishes vehicle_gps_position
- blending is now configurable with SENS_GPS_MASK and SENS_GPS_TAU
Co-authored-by: Jacob Crabill <jacob@volans-i.com >
Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com >
2020-09-25 23:28:31 -04:00