STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
fsw::calibration::RobustCalibrationFramework Class Reference

Port of scripts/calibration/robust_calibration.py RobustCalibrationFramework: 9-parameter environmental basis, TLS, Bayesian update, RLS, GLR drift, Gauss–Markov bias, optional Allan σ_meas (AllanVariance.hpp). More...

#include <RobustCalibrationFramework.hpp>

Collaboration diagram for fsw::calibration::RobustCalibrationFramework:
[legend]

Classes

struct  PhysicalParams

Public Member Functions

 RobustCalibrationFramework (int sensor_id)
void seed_from_factory_cubic (const PTCalibrationCoeffs &c)
 Seed θ by ridge LS so Φ·θ ≈ factory cubic P(adc) on an ADC grid (same env as streaming).
double max_abs_error_vs_factory (const PTCalibrationCoeffs &factory_cubic) const
 Max |Φ·θ − P_factory(adc)| over a dense ADC grid — sanity-check saved adjustments.json.
void set_theta_from_polynomial (const std::vector< double > &poly_coeffs, double adc_norm_min, double adc_norm_scale)
void set_noise_coeffs (const NoiseCoefficients &c, double tau0=0.01)
std::pair< double, double > predict_pressure_with_uncertainty (double adc_code, const EnvironmentalState &env)
 Mean + σ; updates bias propagation clock.
double predict_pressure_psi (double adc_code)
 Mean PSI for streaming (default env, used by calibration_service).
void add_calibration_point (const CalibrationPoint &point)
 Zero / capture / reference — full Python add_calibration_point logic.
int sensor_id () const
size_t calibration_points_count () const
Eigen::VectorXd theta_mean () const
Eigen::MatrixXd theta_cov () const
void set_theta_mean_for_restore (const Eigen::VectorXd &t)
void set_theta_cov_for_restore (const Eigen::MatrixXd &cov)
Eigen::MatrixXd rls_P_matrix () const
void set_rls_P_for_restore (const Eigen::MatrixXd &p)

Static Public Attributes

static constexpr int N = 9

Private Member Functions

Eigen::VectorXd environmental_basis (double adc_code, const EnvironmentalState &env) const
std::pair< Eigen::VectorXd, Eigen::MatrixXd > total_least_squares_calibration (const std::vector< CalibrationPoint > &points) const
std::pair< Eigen::VectorXd, Eigen::MatrixXd > bayesian_update (const std::vector< CalibrationPoint > &new_points)
std::pair< Eigen::VectorXd, Eigen::MatrixXd > recursive_least_squares_update (const CalibrationPoint &point)
std::pair< double, bool > generalized_likelihood_ratio_test (const std::vector< CalibrationPoint > &points) const
double extrapolation_variance (double adc_code) const
double compute_measurement_variance (double adc_code, double tau) const
void bias_propagate (double dt)
void bias_update (double residual, double sigma_meas, double dt)
double bias_contribution () const
double bias_variance () const

Private Attributes

int sensor_id_
std::vector< CalibrationPoint > calibration_points_
Eigen::VectorXd theta_mean_
Eigen::MatrixXd theta_cov_
Eigen::MatrixXd rls_P_
double forgetting_factor_
double glr_threshold_
int glr_window_size_
double env_variance_base_
double alpha_v_
double alpha_extrap_
Eigen::MatrixXd env_var_env_
Eigen::MatrixXd env_var_interaction_
struct fsw::calibration::RobustCalibrationFramework::PhysicalParams physical_
Eigen::Vector3d bias_b_
Eigen::Matrix3d bias_P_
Eigen::Vector3d bias_tau_
double bias_process_noise_
std::chrono::steady_clock::time_point last_pred_time_
double last_bias_update_t_
double inflation_factor_
std::optional< NoiseCoefficients > noise_coeffs_
double allan_tau0_
std::deque< double > recent_residuals_
std::deque< double > recent_uncertainties_
double sigma_ref_

Static Private Attributes

static constexpr size_t kCalibrationPointsMax = 50

Detailed Description

Port of scripts/calibration/robust_calibration.py RobustCalibrationFramework: 9-parameter environmental basis, TLS, Bayesian update, RLS, GLR drift, Gauss–Markov bias, optional Allan σ_meas (AllanVariance.hpp).

Definition at line 40 of file RobustCalibrationFramework.hpp.

Constructor & Destructor Documentation

◆ RobustCalibrationFramework()

Member Function Documentation

◆ add_calibration_point()

◆ bayesian_update()

std::pair< Eigen::VectorXd, Eigen::MatrixXd > fsw::calibration::RobustCalibrationFramework::bayesian_update ( const std::vector< CalibrationPoint > & new_points)
private

◆ bias_contribution()

double fsw::calibration::RobustCalibrationFramework::bias_contribution ( ) const
private

Definition at line 154 of file RobustCalibrationFramework.cpp.

References bias_b_.

Referenced by add_calibration_point(), and predict_pressure_with_uncertainty().

◆ bias_propagate()

void fsw::calibration::RobustCalibrationFramework::bias_propagate ( double dt)
private

◆ bias_update()

void fsw::calibration::RobustCalibrationFramework::bias_update ( double residual,
double sigma_meas,
double dt )
private

Definition at line 144 of file RobustCalibrationFramework.cpp.

References bias_b_, bias_P_, and bias_propagate().

Referenced by add_calibration_point().

◆ bias_variance()

double fsw::calibration::RobustCalibrationFramework::bias_variance ( ) const
private

Definition at line 158 of file RobustCalibrationFramework.cpp.

References bias_P_.

Referenced by predict_pressure_with_uncertainty().

◆ calibration_points_count()

size_t fsw::calibration::RobustCalibrationFramework::calibration_points_count ( ) const
inline

Definition at line 71 of file RobustCalibrationFramework.hpp.

References calibration_points_.

◆ compute_measurement_variance()

double fsw::calibration::RobustCalibrationFramework::compute_measurement_variance ( double adc_code,
double tau ) const
private

◆ environmental_basis()

◆ extrapolation_variance()

double fsw::calibration::RobustCalibrationFramework::extrapolation_variance ( double adc_code) const
private

Definition at line 288 of file RobustCalibrationFramework.cpp.

References alpha_extrap_, calibration_points_, and p.

Referenced by predict_pressure_with_uncertainty().

◆ generalized_likelihood_ratio_test()

std::pair< double, bool > fsw::calibration::RobustCalibrationFramework::generalized_likelihood_ratio_test ( const std::vector< CalibrationPoint > & points) const
private

◆ max_abs_error_vs_factory()

double fsw::calibration::RobustCalibrationFramework::max_abs_error_vs_factory ( const PTCalibrationCoeffs & factory_cubic) const

Max |Φ·θ − P_factory(adc)| over a dense ADC grid — sanity-check saved adjustments.json.

Definition at line 95 of file RobustCalibrationFramework.cpp.

References fsw::calibration::PTCalibrationCoeffs::calculate_pressure(), environmental_basis(), and theta_mean_.

◆ predict_pressure_psi()

double fsw::calibration::RobustCalibrationFramework::predict_pressure_psi ( double adc_code)

Mean PSI for streaming (default env, used by calibration_service).

Definition at line 364 of file RobustCalibrationFramework.cpp.

References predict_pressure_with_uncertainty().

◆ predict_pressure_with_uncertainty()

◆ recursive_least_squares_update()

std::pair< Eigen::VectorXd, Eigen::MatrixXd > fsw::calibration::RobustCalibrationFramework::recursive_least_squares_update ( const CalibrationPoint & point)
private

◆ rls_P_matrix()

Eigen::MatrixXd fsw::calibration::RobustCalibrationFramework::rls_P_matrix ( ) const
inline

Definition at line 83 of file RobustCalibrationFramework.hpp.

References rls_P_.

◆ seed_from_factory_cubic()

void fsw::calibration::RobustCalibrationFramework::seed_from_factory_cubic ( const PTCalibrationCoeffs & c)

Seed θ by ridge LS so Φ·θ ≈ factory cubic P(adc) on an ADC grid (same env as streaming).

The old 2-parameter linear seed could not match a cubic → robust read low vs factory.

Definition at line 61 of file RobustCalibrationFramework.cpp.

References fsw::calibration::PTCalibrationCoeffs::calculate_pressure(), environmental_basis(), N, rhs, rls_P_, theta_cov_, and theta_mean_.

◆ sensor_id()

int fsw::calibration::RobustCalibrationFramework::sensor_id ( ) const
inline

Definition at line 68 of file RobustCalibrationFramework.hpp.

References sensor_id_.

Referenced by RobustCalibrationFramework().

◆ set_noise_coeffs()

void fsw::calibration::RobustCalibrationFramework::set_noise_coeffs ( const NoiseCoefficients & c,
double tau0 = 0.01 )

Definition at line 127 of file RobustCalibrationFramework.cpp.

References allan_tau0_, and noise_coeffs_.

◆ set_rls_P_for_restore()

void fsw::calibration::RobustCalibrationFramework::set_rls_P_for_restore ( const Eigen::MatrixXd & p)

Definition at line 433 of file RobustCalibrationFramework.cpp.

References N, p, and rls_P_.

◆ set_theta_cov_for_restore()

void fsw::calibration::RobustCalibrationFramework::set_theta_cov_for_restore ( const Eigen::MatrixXd & cov)

Definition at line 428 of file RobustCalibrationFramework.cpp.

References N, and theta_cov_.

◆ set_theta_from_polynomial()

void fsw::calibration::RobustCalibrationFramework::set_theta_from_polynomial ( const std::vector< double > & poly_coeffs,
double adc_norm_min,
double adc_norm_scale )

Definition at line 113 of file RobustCalibrationFramework.cpp.

References theta_mean_.

◆ set_theta_mean_for_restore()

void fsw::calibration::RobustCalibrationFramework::set_theta_mean_for_restore ( const Eigen::VectorXd & t)

Definition at line 423 of file RobustCalibrationFramework.cpp.

References N, and theta_mean_.

◆ theta_cov()

Eigen::MatrixXd fsw::calibration::RobustCalibrationFramework::theta_cov ( ) const
inline

Definition at line 78 of file RobustCalibrationFramework.hpp.

References theta_cov_.

Referenced by total_least_squares_calibration().

◆ theta_mean()

Eigen::VectorXd fsw::calibration::RobustCalibrationFramework::theta_mean ( ) const
inline

Definition at line 75 of file RobustCalibrationFramework.hpp.

References theta_mean_.

Referenced by total_least_squares_calibration().

◆ total_least_squares_calibration()

std::pair< Eigen::VectorXd, Eigen::MatrixXd > fsw::calibration::RobustCalibrationFramework::total_least_squares_calibration ( const std::vector< CalibrationPoint > & points) const
private

Member Data Documentation

◆ allan_tau0_

double fsw::calibration::RobustCalibrationFramework::allan_tau0_
private

Definition at line 127 of file RobustCalibrationFramework.hpp.

Referenced by RobustCalibrationFramework(), and set_noise_coeffs().

◆ alpha_extrap_

double fsw::calibration::RobustCalibrationFramework::alpha_extrap_
private

◆ alpha_v_

double fsw::calibration::RobustCalibrationFramework::alpha_v_
private

◆ bias_b_

Eigen::Vector3d fsw::calibration::RobustCalibrationFramework::bias_b_
private

◆ bias_P_

Eigen::Matrix3d fsw::calibration::RobustCalibrationFramework::bias_P_
private

◆ bias_process_noise_

double fsw::calibration::RobustCalibrationFramework::bias_process_noise_
private

Definition at line 120 of file RobustCalibrationFramework.hpp.

Referenced by bias_propagate(), and RobustCalibrationFramework().

◆ bias_tau_

Eigen::Vector3d fsw::calibration::RobustCalibrationFramework::bias_tau_
private

Definition at line 119 of file RobustCalibrationFramework.hpp.

Referenced by bias_propagate(), and RobustCalibrationFramework().

◆ calibration_points_

std::vector<CalibrationPoint> fsw::calibration::RobustCalibrationFramework::calibration_points_
private

◆ env_var_env_

Eigen::MatrixXd fsw::calibration::RobustCalibrationFramework::env_var_env_
private

◆ env_var_interaction_

Eigen::MatrixXd fsw::calibration::RobustCalibrationFramework::env_var_interaction_
private

◆ env_variance_base_

double fsw::calibration::RobustCalibrationFramework::env_variance_base_
private

◆ forgetting_factor_

double fsw::calibration::RobustCalibrationFramework::forgetting_factor_
private

◆ glr_threshold_

double fsw::calibration::RobustCalibrationFramework::glr_threshold_
private

◆ glr_window_size_

int fsw::calibration::RobustCalibrationFramework::glr_window_size_
private

◆ inflation_factor_

double fsw::calibration::RobustCalibrationFramework::inflation_factor_
private

◆ kCalibrationPointsMax

size_t fsw::calibration::RobustCalibrationFramework::kCalibrationPointsMax = 50
staticconstexprprivate

Definition at line 92 of file RobustCalibrationFramework.hpp.

Referenced by add_calibration_point().

◆ last_bias_update_t_

double fsw::calibration::RobustCalibrationFramework::last_bias_update_t_
private

◆ last_pred_time_

std::chrono::steady_clock::time_point fsw::calibration::RobustCalibrationFramework::last_pred_time_
private

◆ N

◆ noise_coeffs_

std::optional<NoiseCoefficients> fsw::calibration::RobustCalibrationFramework::noise_coeffs_
private

◆ physical_

struct fsw::calibration::RobustCalibrationFramework::PhysicalParams fsw::calibration::RobustCalibrationFramework::physical_
private

Referenced by environmental_basis().

◆ recent_residuals_

std::deque<double> fsw::calibration::RobustCalibrationFramework::recent_residuals_
private

Definition at line 129 of file RobustCalibrationFramework.hpp.

Referenced by add_calibration_point().

◆ recent_uncertainties_

std::deque<double> fsw::calibration::RobustCalibrationFramework::recent_uncertainties_
private

Definition at line 130 of file RobustCalibrationFramework.hpp.

Referenced by predict_pressure_with_uncertainty().

◆ rls_P_

Eigen::MatrixXd fsw::calibration::RobustCalibrationFramework::rls_P_
private

◆ sensor_id_

int fsw::calibration::RobustCalibrationFramework::sensor_id_
private

Definition at line 89 of file RobustCalibrationFramework.hpp.

Referenced by RobustCalibrationFramework(), and sensor_id().

◆ sigma_ref_

double fsw::calibration::RobustCalibrationFramework::sigma_ref_
private

Definition at line 131 of file RobustCalibrationFramework.hpp.

Referenced by RobustCalibrationFramework().

◆ theta_cov_

◆ theta_mean_


The documentation for this class was generated from the following files: