From aeb2a1afff308d0857073063341c7cc1cd6ca39b Mon Sep 17 00:00:00 2001 From: Marco Hauswirth Date: Wed, 15 Jan 2025 09:51:10 +0100 Subject: [PATCH] autom. trigger baro calib on boot --- .../vehicle_air_data/VehicleAirData.cpp | 21 +++++++++++++++++++ .../vehicle_air_data/VehicleAirData.hpp | 3 +++ 2 files changed, 24 insertions(+) diff --git a/src/modules/sensors/vehicle_air_data/VehicleAirData.cpp b/src/modules/sensors/vehicle_air_data/VehicleAirData.cpp index 041da27c09..c243032446 100644 --- a/src/modules/sensors/vehicle_air_data/VehicleAirData.cpp +++ b/src/modules/sensors/vehicle_air_data/VehicleAirData.cpp @@ -37,6 +37,7 @@ #include #include #include +#include namespace sensors { @@ -293,6 +294,26 @@ void VehicleAirData::Run() } } } + + if (!_calibration_done) { + // allow all drivers to start up + _calibration_delay = _calibration_delay == 0 ? time_now_us : _calibration_delay; + + if (time_now_us - _calibration_delay > 1_s) { + _calibration_done = true; + uORB::Publication _vehicle_command_sub{ORB_ID(vehicle_command)}; + vehicle_command_s vcmd{}; + vcmd.command = vehicle_command_s::VEHICLE_CMD_PREFLIGHT_CALIBRATION; + vcmd.param1 = 0; + vcmd.param2 = 0; + vcmd.param3 = 1; + vcmd.param4 = 0; + vcmd.param5 = 0; + vcmd.param6 = 0; + vcmd.param7 = 0; + _vehicle_command_sub.publish(vcmd); + } + } } if (!parameter_update) { diff --git a/src/modules/sensors/vehicle_air_data/VehicleAirData.hpp b/src/modules/sensors/vehicle_air_data/VehicleAirData.hpp index fd28de34f8..7fdcd88266 100644 --- a/src/modules/sensors/vehicle_air_data/VehicleAirData.hpp +++ b/src/modules/sensors/vehicle_air_data/VehicleAirData.hpp @@ -123,6 +123,9 @@ private: float _air_temperature_celsius{20.f}; // initialize with typical 20degC ambient temperature + bool _calibration_done{false}; + uint64_t _calibration_delay{0}; + DEFINE_PARAMETERS( (ParamFloat) _param_sens_baro_qnh, (ParamFloat) _param_sens_baro_rate