RomanBapst
8cedef2dc4
further cleanup
...
Signed-off-by: RomanBapst <bapstroman@gmail.com >
2025-02-11 09:08:25 +01:00
RomanBapst
2c4d38e303
fixed mistake
...
Signed-off-by: RomanBapst <bapstroman@gmail.com >
2025-02-11 09:08:25 +01:00
RomanBapst
806500fc4a
further improve logic
...
Signed-off-by: RomanBapst <bapstroman@gmail.com >
2025-02-11 09:08:25 +01:00
RomanBapst
73ade6d05c
range finder: remove potential deadlock
...
Signed-off-by: RomanBapst <bapstroman@gmail.com >
2025-02-11 09:08:25 +01:00
RomanBapst
35da86c85a
improve unit tests for range fog detection
...
Signed-off-by: RomanBapst <bapstroman@gmail.com >
2025-02-11 09:08:25 +01:00
Marco Hauswirth
4df65c133e
add cs_baro_fault to switch to fallback baro if available ( #24260 )
2025-01-28 10:37:16 +01:00
bresch
c76e74338b
ekf-replay: fix airspeed replay
...
If available, the EKF uses airspeed_validated, not airspeed
2025-01-26 23:05:39 -05:00
bresch
caaae6ed51
ekf2: allow sideslip fusion to always start with airspeed fusion
...
This allow sideslip fusion to start during VTOL front transition or even
on a multirotor with a vertical stabilizer and an airspeed sensor for example.
2025-01-22 09:33:16 +01:00
Marco Hauswirth
7a9608e54b
increase EKF2_RNG_FOG for FW and VTOL
2025-01-20 14:43:30 -05:00
Marco Hauswirth
4a5aa1e947
Fix max-hagl restriction to position/altitude control ( #23667 )
...
* fix max-hagl restriction to position/altitude control
* max hagl vel restriction in ManAcc position mode
* use interpolate func, change naming
* simplyfied vertical vel limitation
* move velocity-constraint adjustment to StickAccelXY
2025-01-20 15:50:21 +01:00
Daniel Agar
b1ca0495e2
ekf2: yaw estimator additional validity checks
2025-01-20 09:45:41 +01:00
bresch
c99cb6e94b
ekf2: do not auto-generate sideslip measurement jacobian
...
This is to trade a bit of CPU load for more flash space.
2025-01-15 11:05:50 -05:00
bresch
12a9087e92
ekf2: constrain max variance by zero innovation update
...
Clipping the variance of the covariance matrix has a destabilizing
effect as it increases the correlation between the states.
2025-01-14 21:42:33 -05:00
Silvan Fuhrer
e4e975806f
Enable CONFIG_EKF2_AUX_GLOBAL_POSITION by default
...
Signed-off-by: Silvan Fuhrer <silvan@auterion.com >
2025-01-14 02:19:49 -05:00
bresch
ab70ae3252
ekf2: fix GNSS drift false alarm
...
In SIH, the GNSS signal is zero-mean, but apparently not symmetric. The
issue is that saturating such a signal creates an artificial bias. This
made the check fail as the bias was above the threshold.
2025-01-08 21:40:25 -05:00
RomanBapst
1abc27dd1f
remove fixed-wing condition from airspeed fusion condition
...
- enables airspeed fusion to begin during transition already
- airspeed fusion is started based on airspeed being above defined threshold
Signed-off-by: RomanBapst <bapstroman@gmail.com >
2025-01-07 16:19:33 +01:00
bresch
b1773df441
ekf2: fix comments about primary height sources
...
Having the xxx_hgt flag set only means that the sensor is fused for
altitude/height aiding. It's not necessarily the height reference.
2025-01-07 10:23:13 +01:00
Nicolas MARTIN
4fe6d69966
local position acceleration: use mean value between two publications ( #24105 )
...
To avoid aliasing on the ned acceleration, add an accumulation of acceleration to improve the downsampling
2025-01-03 12:43:39 +01:00
bresch
c1589ddb18
ekf2-rng: do not continuously reset terrain in rng height ref
...
When the height reference datum is ground level (range finder height
ref), the terrain state is not updated through fusion and should stay at
a constant altitude.
2025-01-03 12:25:16 +01:00
Jacob Dahl
0b1838f233
test: add test for range finder fusion while on ground
2025-01-03 12:25:16 +01:00
bresch
6b10f1ca12
ekf: update change indicator
...
The calculation of "alpha" in the accel_horiz and height_rate lowpass
filters is slightly different than before.
2024-12-18 14:11:08 +01:00
bresch
480c232bfd
ekf2: use alpha filter class
2024-12-18 14:11:08 +01:00
bresch
fa5a781e20
AlphaFilter: set time constant instead of alpha
...
Then the update function can set the dt at every iteration if needed
2024-12-18 14:11:08 +01:00
bresch
4a73195007
yaw_est: store attitude as quaternion instead of DCM
...
This saves flash and makes code simpler
2024-12-18 09:33:11 +01:00
bresch
6969e5b6b4
ekf2: do not pre-compute airspeed Kalman gain
...
The generated code is not much faster than the simple matrix-vector
multiplication
2024-12-17 22:32:16 -05:00
bresch
f9140fcd50
ekf2: set baro bias when GNSS is alt ref
...
Do this even when GNSS altitude fusion is disabled.
2024-12-13 14:55:46 +01:00
bresch
fad9ae855d
EKF2: reset aid src when resetting state to measurement
...
Filtered innovations and test ratios can be large before the reset and
would trigger pre-flight warnings
2024-12-13 14:26:57 +01:00
bresch
cc92979b06
ekf-agp: fix timeout
2024-12-12 15:49:04 +01:00
bresch
8626019ae0
EKF2: reset global position using variance
2024-12-03 13:04:25 +01:00
bresch
b6658df169
lla: move to lib directory
2024-11-29 14:21:29 +01:00
bresch
7cf42727fb
lla: add functions to convert from and to ECEF
2024-11-29 14:21:29 +01:00
Daniel Agar
e194a52907
ekf2: derivation.py remove sideslip small angle approximation
2024-11-25 08:53:57 +01:00
bresch
14fe6c2167
ekf2: resetHeightTo -> resetAltitudeTo
...
The vertical position state is now an altitude, not just a local height
2024-11-22 15:13:47 +01:00
bresch
93c690f133
ekf2: do not inline getPosition
2024-11-22 15:13:47 +01:00
bresch
a224d38e52
lla: move implementation to cpp file
...
This reduces flash usage
2024-11-22 15:13:47 +01:00
bresch
aeb182a8ed
ekf2: rename resetAltitudeTo to initialiseAltitudeTo
...
This is to better show that the altitude is also used to set the origin.
2024-11-22 15:13:47 +01:00
bresch
30d98885b7
update change indicator
2024-11-22 15:13:47 +01:00
bresch
814a2706f5
ekf2: compensate for coriolis and transport rate accelerations
2024-11-22 15:13:47 +01:00
bresch
842212df6c
ekf2: update earth rate also without GNSS
2024-11-22 15:13:47 +01:00
bresch
6becccb217
update change indicator
2024-11-22 15:13:47 +01:00
bresch
a492457322
ekf2-derivation: build state struct based on type
2024-11-22 15:13:47 +01:00
bresch
13c5bd4412
ekf-flow: do not reset position when resetting to flow
...
Flow only provides velocity information
2024-11-22 15:13:47 +01:00
bresch
b19a6ee3b5
ekf2: store position state as lat/lon/alt
...
The position error state is still defined in a body-fixed NED frame but the
position state itself is latitude-longitude-altitude.
2024-11-22 15:13:47 +01:00
Andrew Brahim
834af98992
uavcan: support GNSS heading from relposheading with offset configurable in estimator
...
* uavcan: add GNSS heading from relposheading
* ekf2: new EKF2_GPS_YAW_OFF parameter to configure any offset in GNSS heading
Signed-off-by: dirksavage88 <dirksavage88@gmail.com >
Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com >
2024-11-08 21:52:55 -05:00
bresch
651675fed0
ekf-yaw-est: do not store full S_inverse
2024-11-07 11:37:56 -05:00
bresch
7b04ea0dca
ekf-yaw-est: wrap_pi when updating yaw
2024-11-07 11:37:56 -05:00
bresch
3ad4b57315
ekf-yaw-est: do not reset when all weights collapse
...
The likelyhood can be really small when the innovation is suddenly
large. This can occur during a GNSS velocity glitch and shouldn't reset
the filter as it would bring it back to a really vulnerable state.
2024-11-07 11:37:56 -05:00
bresch
aa5fdd3bb3
ekf2-rng-kin: allow invalidating at any vertical speed
...
The issue is that when the HAGL is low, the drone will usually
decelerate and then the check would run anymore. If the low HAGL
estimate is due to bad sensor readings (e.g.: reflections), it will be
stuck in that state.
2024-11-05 16:51:49 +01:00
bresch
d579fb540c
ekf2-terrain: do not consider negative hagl as valid
2024-10-30 12:14:43 -04:00
Marco Hauswirth
0c451552c7
EKF2: add validity flags to global pos message ( #23787 )
...
Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com >
2024-10-23 10:19:04 +02:00