feat(sensors): barometer thrust compensation with online estimator

Add propwash-induced barometer error compensation. Propellers create
static pressure changes at the baro sensor proportional to motor output.
Correction: baro_alt += SENS_BARO_PCOEF * mean_motor_output.

Thrust compensation in VehicleAirData uses a motor ring buffer (8
samples) with time-matched lookup against baro timestamp_sample.

BMP388 timestamp_sample corrected from read time to integration
midpoint (- measurement_time/2), eliminating 38ms baro-thrust lag.

Online estimator module (baro_thrust_estimator) uses a complementary
filter to isolate thrust-correlated baro error at 0.05Hz crossover, and
recursive least squares to identify gain K online. Saves to
SENS_BARO_PCOEF on disarm. Controlled by SENS_BAR_AUTOCAL bit 1.

SENS_BAR_AUTOCAL migrated from boolean to bitmask (bit 0: GNSS cal,
bit 1: thrust comp).

Includes offline calibration/validation tool
(Tools/baro_compensation/baro_thrust_calibration.py).
This commit is contained in:
Jacob Dahl
2026-03-31 23:43:48 -08:00
parent 2a59d2e1d2
commit ab59b0bcb8
18 changed files with 2673 additions and 5 deletions
+7
View File
@@ -29,6 +29,13 @@ fi
# Start Multicopter Position Controller.
#
mc_hover_thrust_estimator start
# Bit 1 of SENS_BAR_AUTOCAL enables online thrust compensation (value > 1)
if param greater -s SENS_BAR_AUTOCAL 1
then
baro_thrust_estimator start
fi
flight_mode_manager start
mc_pos_control start