|
STAR
Cal STAR — firmware, DAQ server, and engine design
|
Public Member Functions | |
| __init__ (self, int sensor_id) | |
| None | set_theta_from_polynomial (self, List[float] poly_coeffs, float adc_norm_min, float adc_norm_scale) |
| np.ndarray | environmental_robust_basis_functions (self, float adc_code, EnvironmentalState env) |
| Tuple[np.ndarray, np.ndarray] | total_least_squares_calibration (self, List[CalibrationPoint] points) |
| Tuple[np.ndarray, np.ndarray] | bayesian_update (self, List[CalibrationPoint] new_points) |
| Tuple[np.ndarray, np.ndarray] | recursive_least_squares_update (self, CalibrationPoint point) |
| Tuple[float, bool] | generalized_likelihood_ratio_test (self, List[CalibrationPoint] new_points) |
| None | set_noise_coeffs (self, "NoiseCoefficients" coeffs, float tau0=0.01) |
| Tuple[float, float] | predict_pressure_with_uncertainty (self, float adc_code, EnvironmentalState env) |
| Dict[str, any] | add_calibration_point (self, CalibrationPoint point) |
| Tuple[float, Dict[str, float]] | get_autonomy_score (self) |
| str | get_confidence_level (self) |
| Dict[str, any] | get_calibration_summary (self) |
Public Attributes | |
| sensor_id = sensor_id | |
| list | calibration_points = [] |
| int | n_params = 9 |
| population_prior_mean | |
| float | population_prior_cov = np.eye(9) * 0.1 |
| float | individual_prior_cov = np.eye(9) * 0.05 |
| theta_mean = self.population_prior_mean.copy() | |
| float | theta_cov = self.individual_prior_cov.copy() |
| float | rls_P = np.eye(9) * 100.0 |
| float | forgetting_factor = 0.95 |
| float | glr_threshold = 2.0 |
| int | glr_window_size = 10 |
| int | env_variance_base = 1e-3 |
| int | alpha_v = 1e-4 |
| float | alpha_extrap = 100.0 |
| dict | env_variance_matrices |
| deque | recent_residuals = deque(maxlen=10) |
| deque | recent_uncertainties = deque(maxlen=10) |
| tuple | calibration_points_max |
| float | sigma_ref = 10.0 |
| dict | physical_params |
| bias_model = GaussMarkovBiasModel() | |
| float | inflation_factor = 1.0 |
Protected Member Functions | |
| float | _extrapolation_variance (self, float adc_code) |
| float | _measurement_variance (self, float adc_code, float tau=0.1) |
Protected Attributes | |
| _last_pred_t = time.time() | |
| _last_bias_update_t = time.time() | |
| Optional[] | _noise_coeffs = None |
| float | _allan_tau0 = 0.01 |
Mathematically robust calibration framework implementing the paper's algorithms
Definition at line 98 of file robust_calibration.py.
| robust_calibration.RobustCalibrationFramework.__init__ | ( | self, | |
| int | sensor_id ) |
Definition at line 103 of file robust_calibration.py.
|
protected |
Paper Section 7: σ²_extrap when adc outside calibrated range.
Definition at line 381 of file robust_calibration.py.
References alpha_extrap, autonomous_lc_calibration.SensorCalibrationState.calibration_points, autonomous_pt_calibration.SensorCalibrationState.calibration_points, autonomous_rtd_calibration.SensorCalibrationState.calibration_points, autonomous_tc_calibration.SensorCalibrationState.calibration_points, calibration_sequence.CalibrationResult.calibration_points, calibration_sequence.PressureTransducerCalibrator.calibration_points, calibration_sequence.RTDCalibrator.calibration_points, calibration_sequence.SensorCalibrator.calibration_points, combined_gui.CalibrationWindow.calibration_points, imu_calibration.AccelerometerCalibrator.calibration_points, imu_calibration.GyroscopeCalibrator.calibration_points, imu_calibration.IMUCalibrator.calibration_points, imu_calibration.MagnetometerCalibrator.calibration_points, imu_calibration_gui.IMUCalibrationGUI.calibration_points, pt_calibration_gui.HighPerformanceCalibrationGUI.calibration_points, calibration_points, max, and min.
Referenced by predict_pressure_with_uncertainty().
|
protected |
σ²_meas: Allan-derived if available, else env_variance_base + α_v·v².
Definition at line 405 of file robust_calibration.py.
References _noise_coeffs, alpha_v, and env_variance_base.
Referenced by predict_pressure_with_uncertainty().
| Dict[str, any] robust_calibration.RobustCalibrationFramework.add_calibration_point | ( | self, | |
| CalibrationPoint | point ) |
Add a new calibration point and update the model
Definition at line 486 of file robust_calibration.py.
References _last_bias_update_t, fsw::calibration::RobustCalibrationFramework.bayesian_update(), bayesian_update(), bias_model, autonomous_lc_calibration.SensorCalibrationState.calibration_points, autonomous_pt_calibration.SensorCalibrationState.calibration_points, autonomous_rtd_calibration.SensorCalibrationState.calibration_points, autonomous_tc_calibration.SensorCalibrationState.calibration_points, calibration_sequence.CalibrationResult.calibration_points, calibration_sequence.PressureTransducerCalibrator.calibration_points, calibration_sequence.RTDCalibrator.calibration_points, calibration_sequence.SensorCalibrator.calibration_points, combined_gui.CalibrationWindow.calibration_points, imu_calibration.AccelerometerCalibrator.calibration_points, imu_calibration.GyroscopeCalibrator.calibration_points, imu_calibration.IMUCalibrator.calibration_points, imu_calibration.MagnetometerCalibrator.calibration_points, imu_calibration_gui.IMUCalibrationGUI.calibration_points, pt_calibration_gui.HighPerformanceCalibrationGUI.calibration_points, calibration_points, calibration_points_max, environmental_robust_basis_functions(), autonomous_calibration_engine.AdaptivePriorEvolution.forgetting_factor, forgetting_factor, fsw::calibration::RobustCalibrationFramework.generalized_likelihood_ratio_test(), generalized_likelihood_ratio_test(), get_confidence_level(), max, min, recent_residuals, fsw::calibration::RobustCalibrationFramework.recursive_least_squares_update(), recursive_least_squares_update(), rls_P, theta_cov, and theta_mean.
| Tuple[np.ndarray, np.ndarray] robust_calibration.RobustCalibrationFramework.bayesian_update | ( | self, | |
| List[CalibrationPoint] | new_points ) |
Bayesian update with hierarchical priors Equations (126-149)
Definition at line 276 of file robust_calibration.py.
References theta_cov, theta_mean, fsw::calibration::RobustCalibrationFramework.total_least_squares_calibration(), and total_least_squares_calibration().
Referenced by add_calibration_point().
| np.ndarray robust_calibration.RobustCalibrationFramework.environmental_robust_basis_functions | ( | self, | |
| float | adc_code, | ||
| EnvironmentalState | env ) |
Environmental-robust basis functions from equation (66-72) Works directly on ADC codes (not voltage).
Definition at line 194 of file robust_calibration.py.
References max, and physical_params.
Referenced by add_calibration_point(), generalized_likelihood_ratio_test(), get_calibration_summary(), predict_pressure_with_uncertainty(), recursive_least_squares_update(), and total_least_squares_calibration().
| Tuple[float, bool] robust_calibration.RobustCalibrationFramework.generalized_likelihood_ratio_test | ( | self, | |
| List[CalibrationPoint] | new_points ) |
GLR test for drift detection Equations (235-248)
Definition at line 333 of file robust_calibration.py.
References env_variance_base, environmental_robust_basis_functions(), calibration_orchestrator.CalibrationOrchestrator.glr_threshold, glr_threshold, glr_window_size, theta_mean, fsw::calibration::RobustCalibrationFramework.total_least_squares_calibration(), and total_least_squares_calibration().
Referenced by add_calibration_point().
| Tuple[float, Dict[str, float]] robust_calibration.RobustCalibrationFramework.get_autonomy_score | ( | self | ) |
Paper Section 8: α = 0.4·α_cal + 0.3·α_unc + 0.2·α_agree + 0.1·α_quality
Returns (α, {α_cal, α_unc, α_agree, α_quality})
Definition at line 558 of file robust_calibration.py.
References autonomous_lc_calibration.SensorCalibrationState.calibration_points, autonomous_pt_calibration.SensorCalibrationState.calibration_points, autonomous_rtd_calibration.SensorCalibrationState.calibration_points, autonomous_tc_calibration.SensorCalibrationState.calibration_points, calibration_sequence.CalibrationResult.calibration_points, calibration_sequence.PressureTransducerCalibrator.calibration_points, calibration_sequence.RTDCalibrator.calibration_points, calibration_sequence.SensorCalibrator.calibration_points, combined_gui.CalibrationWindow.calibration_points, imu_calibration.AccelerometerCalibrator.calibration_points, imu_calibration.GyroscopeCalibrator.calibration_points, imu_calibration.IMUCalibrator.calibration_points, imu_calibration.MagnetometerCalibrator.calibration_points, imu_calibration_gui.IMUCalibrationGUI.calibration_points, pt_calibration_gui.HighPerformanceCalibrationGUI.calibration_points, calibration_points, get_calibration_summary(), max, min, recent_residuals, recent_uncertainties, and sigma_ref.
| Dict[str, any] robust_calibration.RobustCalibrationFramework.get_calibration_summary | ( | self | ) |
Get comprehensive calibration summary
Definition at line 617 of file robust_calibration.py.
References autonomous_lc_calibration.SensorCalibrationState.calibration_points, autonomous_pt_calibration.SensorCalibrationState.calibration_points, autonomous_rtd_calibration.SensorCalibrationState.calibration_points, autonomous_tc_calibration.SensorCalibrationState.calibration_points, calibration_sequence.CalibrationResult.calibration_points, calibration_sequence.PressureTransducerCalibrator.calibration_points, calibration_sequence.RTDCalibrator.calibration_points, calibration_sequence.SensorCalibrator.calibration_points, combined_gui.CalibrationWindow.calibration_points, imu_calibration.AccelerometerCalibrator.calibration_points, imu_calibration.GyroscopeCalibrator.calibration_points, imu_calibration.IMUCalibrator.calibration_points, imu_calibration.MagnetometerCalibrator.calibration_points, imu_calibration_gui.IMUCalibrationGUI.calibration_points, pt_calibration_gui.HighPerformanceCalibrationGUI.calibration_points, calibration_points, environmental_robust_basis_functions(), autonomous_calibration_engine.AdaptivePriorEvolution.forgetting_factor, forgetting_factor, get_confidence_level(), calibration_orchestrator.CalibrationOrchestrator.glr_threshold, glr_threshold, autonomous_calibration_engine.OnlineBayesianLearner.sensor_id, ball_valve_gui.ValvePanel.sensor_id, calibration_sequence.SensorCalibrator.sensor_id, daq_comms::protocol::ParsedSelfTestPacket::Result.sensor_id, fsw::config::PressureSensorSpec.sensor_id, fsw::config::SensorAssignment.sensor_id, imu_calibration.IMUCalibrator.sensor_id, sensor_id, Valve.sensor_id, theta_cov, and theta_mean.
Referenced by get_autonomy_score().
| str robust_calibration.RobustCalibrationFramework.get_confidence_level | ( | self | ) |
Determine confidence level based on calibration quality
Definition at line 602 of file robust_calibration.py.
References autonomous_lc_calibration.SensorCalibrationState.calibration_points, autonomous_pt_calibration.SensorCalibrationState.calibration_points, autonomous_rtd_calibration.SensorCalibrationState.calibration_points, autonomous_tc_calibration.SensorCalibrationState.calibration_points, calibration_sequence.CalibrationResult.calibration_points, calibration_sequence.PressureTransducerCalibrator.calibration_points, calibration_sequence.RTDCalibrator.calibration_points, calibration_sequence.SensorCalibrator.calibration_points, combined_gui.CalibrationWindow.calibration_points, imu_calibration.AccelerometerCalibrator.calibration_points, imu_calibration.GyroscopeCalibrator.calibration_points, imu_calibration.IMUCalibrator.calibration_points, imu_calibration.MagnetometerCalibrator.calibration_points, imu_calibration_gui.IMUCalibrationGUI.calibration_points, pt_calibration_gui.HighPerformanceCalibrationGUI.calibration_points, and calibration_points.
Referenced by add_calibration_point(), and get_calibration_summary().
| Tuple[float, float] robust_calibration.RobustCalibrationFramework.predict_pressure_with_uncertainty | ( | self, | |
| float | adc_code, | ||
| EnvironmentalState | env ) |
Predict pressure with full uncertainty quantification (paper Section 7). σ²_pred = σ²_meas + φ'Σφ + σ²_extrap + h'Σ_b h + env + interaction Mean: ŷ = φ'θ + h'b (Gauss-Markov bias).
Definition at line 420 of file robust_calibration.py.
References _extrapolation_variance(), _last_pred_t, _measurement_variance(), bias_model, env_variance_matrices, environmental_robust_basis_functions(), inflation_factor, max, min, recent_uncertainties, theta_cov, theta_mean, and time.time().
| Tuple[np.ndarray, np.ndarray] robust_calibration.RobustCalibrationFramework.recursive_least_squares_update | ( | self, | |
| CalibrationPoint | point ) |
Recursive Least Squares with forgetting factor Equations (162-166)
Definition at line 306 of file robust_calibration.py.
References environmental_robust_basis_functions(), autonomous_calibration_engine.AdaptivePriorEvolution.forgetting_factor, forgetting_factor, rls_P, theta_cov, and theta_mean.
Referenced by add_calibration_point().
| None robust_calibration.RobustCalibrationFramework.set_noise_coeffs | ( | self, | |
| "NoiseCoefficients" | coeffs, | ||
| float | tau0 = 0.01 ) |
Use Allan variance NoiseCoefficients for σ²_meas (paper Section 3→7).
Definition at line 400 of file robust_calibration.py.
References _allan_tau0, and _noise_coeffs.
| None robust_calibration.RobustCalibrationFramework.set_theta_from_polynomial | ( | self, | |
| List[float] | poly_coeffs, | ||
| float | adc_norm_min, | ||
| float | adc_norm_scale ) |
Initialize theta from polynomial calibration P = c0 + c1*x + c2*x^2 + c3*x^3 where x = (adc - adc_norm_min) / adc_norm_scale. Gives robust calibration the correct slope so ZERO ALL + CAPTURE match polynomial accuracy.
Definition at line 169 of file robust_calibration.py.
References population_prior_mean, and theta_mean.
| Tuple[np.ndarray, np.ndarray] robust_calibration.RobustCalibrationFramework.total_least_squares_calibration | ( | self, | |
| List[CalibrationPoint] | points ) |
Total Least Squares calibration accounting for errors in both voltage and pressure Equation (112-118)
Definition at line 239 of file robust_calibration.py.
References env_variance_base, environmental_robust_basis_functions(), theta_cov, and theta_mean.
Referenced by bayesian_update(), and generalized_likelihood_ratio_test().
|
protected |
Definition at line 167 of file robust_calibration.py.
Referenced by set_noise_coeffs().
|
protected |
Definition at line 160 of file robust_calibration.py.
Referenced by add_calibration_point().
|
protected |
Definition at line 159 of file robust_calibration.py.
Referenced by predict_pressure_with_uncertainty().
|
protected |
Definition at line 166 of file robust_calibration.py.
Referenced by _measurement_variance(), and set_noise_coeffs().
| float robust_calibration.RobustCalibrationFramework.alpha_extrap = 100.0 |
Definition at line 132 of file robust_calibration.py.
Referenced by _extrapolation_variance().
| int robust_calibration.RobustCalibrationFramework.alpha_v = 1e-4 |
Definition at line 131 of file robust_calibration.py.
Referenced by _measurement_variance().
| robust_calibration.RobustCalibrationFramework.bias_model = GaussMarkovBiasModel() |
Definition at line 158 of file robust_calibration.py.
Referenced by add_calibration_point(), and predict_pressure_with_uncertainty().
| robust_calibration.RobustCalibrationFramework.calibration_points = [] |
Definition at line 107 of file robust_calibration.py.
Referenced by _extrapolation_variance(), add_calibration_point(), get_autonomy_score(), get_calibration_summary(), and get_confidence_level().
| tuple robust_calibration.RobustCalibrationFramework.calibration_points_max |
Definition at line 141 of file robust_calibration.py.
Referenced by add_calibration_point().
| int robust_calibration.RobustCalibrationFramework.env_variance_base = 1e-3 |
Definition at line 130 of file robust_calibration.py.
Referenced by _measurement_variance(), generalized_likelihood_ratio_test(), and total_least_squares_calibration().
| dict robust_calibration.RobustCalibrationFramework.env_variance_matrices |
Definition at line 133 of file robust_calibration.py.
Referenced by predict_pressure_with_uncertainty().
| robust_calibration.RobustCalibrationFramework.forgetting_factor = 0.95 |
Definition at line 123 of file robust_calibration.py.
Referenced by add_calibration_point(), get_calibration_summary(), and recursive_least_squares_update().
| robust_calibration.RobustCalibrationFramework.glr_threshold = 2.0 |
Definition at line 126 of file robust_calibration.py.
Referenced by generalized_likelihood_ratio_test(), and get_calibration_summary().
| int robust_calibration.RobustCalibrationFramework.glr_window_size = 10 |
Definition at line 127 of file robust_calibration.py.
Referenced by generalized_likelihood_ratio_test().
| float robust_calibration.RobustCalibrationFramework.individual_prior_cov = np.eye(9) * 0.05 |
Definition at line 115 of file robust_calibration.py.
| float robust_calibration.RobustCalibrationFramework.inflation_factor = 1.0 |
Definition at line 163 of file robust_calibration.py.
Referenced by predict_pressure_with_uncertainty().
| int robust_calibration.RobustCalibrationFramework.n_params = 9 |
Definition at line 110 of file robust_calibration.py.
| dict robust_calibration.RobustCalibrationFramework.physical_params |
Definition at line 147 of file robust_calibration.py.
Referenced by environmental_robust_basis_functions().
| float robust_calibration.RobustCalibrationFramework.population_prior_cov = np.eye(9) * 0.1 |
Definition at line 114 of file robust_calibration.py.
| robust_calibration.RobustCalibrationFramework.population_prior_mean |
Definition at line 111 of file robust_calibration.py.
Referenced by set_theta_from_polynomial().
| deque robust_calibration.RobustCalibrationFramework.recent_residuals = deque(maxlen=10) |
Definition at line 139 of file robust_calibration.py.
Referenced by add_calibration_point(), and get_autonomy_score().
| deque robust_calibration.RobustCalibrationFramework.recent_uncertainties = deque(maxlen=10) |
Definition at line 140 of file robust_calibration.py.
Referenced by get_autonomy_score(), and predict_pressure_with_uncertainty().
| float robust_calibration.RobustCalibrationFramework.rls_P = np.eye(9) * 100.0 |
Definition at line 122 of file robust_calibration.py.
Referenced by add_calibration_point(), and recursive_least_squares_update().
| robust_calibration.RobustCalibrationFramework.sensor_id = sensor_id |
Definition at line 104 of file robust_calibration.py.
Referenced by get_calibration_summary(), and robust_pt_calibration_gui.BayesianPTCalibration.to_dict().
| float robust_calibration.RobustCalibrationFramework.sigma_ref = 10.0 |
Definition at line 144 of file robust_calibration.py.
Referenced by get_autonomy_score().
| robust_calibration.RobustCalibrationFramework.theta_cov = self.individual_prior_cov.copy() |
Definition at line 119 of file robust_calibration.py.
Referenced by add_calibration_point(), bayesian_update(), get_calibration_summary(), predict_pressure_with_uncertainty(), recursive_least_squares_update(), and total_least_squares_calibration().
| robust_calibration.RobustCalibrationFramework.theta_mean = self.population_prior_mean.copy() |
Definition at line 118 of file robust_calibration.py.
Referenced by add_calibration_point(), bayesian_update(), generalized_likelihood_ratio_test(), get_calibration_summary(), predict_pressure_with_uncertainty(), recursive_least_squares_update(), set_theta_from_polynomial(), and total_least_squares_calibration().