GaussianProcessGuider
#include <gaussian_process_guider.h>
Classes | |
struct | guide_parameters |
Public Member Functions | |
GaussianProcessGuider (guide_parameters parameters) | |
void | add_one_point () |
double | deduceResult (double time_step, double prediction_point=-1.0) |
void | DirectMoveApplied (double amt, double rate) |
data_point & | get_last_point () const |
size_t | get_number_of_measurements () const |
data_point & | get_second_last_point () const |
bool | GetBoolComputePeriod () const |
double | GetControlGain () const |
std::vector< double > | GetGPHyperparameters () const |
double | GetMinMove () const |
int | GetNumPointsForApproximation () const |
double | GetPeriodLengthsInference () const |
double | GetPeriodLengthsPeriodEstimation () const |
double | getPredictionContribution () |
double | GetPredictionGain () const |
void | GuidingDithered (double amt, double rate) |
void | GuidingDitherSettleDone (bool success) |
void | inject_data_point (double timestamp, double input, double SNR, double control) |
Eigen::MatrixXd | regularize_dataset (const Eigen::VectorXd ×tamps, const Eigen::VectorXd &gear_error, const Eigen::VectorXd &variances) |
void | reset () |
double | result (double input, double SNR, double time_step, double prediction_point=-1.0) |
void | save_gp_data () const |
bool | SetBoolComputePeriod (bool active) |
bool | SetControlGain (double control_gain) |
bool | SetGPHyperparameters (const std::vector< double > &hyperparameters) |
void | SetLearningRate (double learning_rate) |
bool | SetMinMove (double min_move) |
bool | SetNumPointsForApproximation (int num_points) |
bool | SetPeriodLengthsInference (double num_periods) |
bool | SetPeriodLengthsPeriodEstimation (double num_periods) |
bool | SetPredictionGain (double) |
void | UpdateGP (double prediction_point=std::numeric_limits< double >::quiet_NaN()) |
void | UpdatePeriodLength (double period_length) |
Detailed Description
This class provides a guiding algorithm for the right ascension axis that learns and predicts the periodic gear error with a Gaussian process.
This prediction helps reducing periodic error components in the residual tracking error. Further it is able to perform tracking without measurement to increase robustness of the overall guiding system.
Definition at line 47 of file gaussian_process_guider.h.
Member Function Documentation
◆ deduceResult()
double GaussianProcessGuider::deduceResult | ( | double | time_step, |
double | prediction_point = -1.0 |
||
) |
This method provides predictive control if no measurement could be made.
A zero measurement is stored with high uncertainty, and then the GP prediction is used for control.
Definition at line 385 of file gaussian_process_guider.cpp.
◆ DirectMoveApplied()
void GaussianProcessGuider::DirectMoveApplied | ( | double | amt, |
double | rate | ||
) |
This method tells the guider that a direct move was issued.
This has the opposite effect of a dither on the dither offset.
Definition at line 464 of file gaussian_process_guider.cpp.
◆ getPredictionContribution()
|
inline |
Returns the weight of the prediction on the output control value.
Definition at line 253 of file gaussian_process_guider.h.
◆ GuidingDithered()
void GaussianProcessGuider::GuidingDithered | ( | double | amt, |
double | rate | ||
) |
This method tells the guider that a dither command was issued.
The guider will stop collecting measurements and uses predictions instead, to keep the FFT and the GP working.
Definition at line 441 of file gaussian_process_guider.cpp.
◆ GuidingDitherSettleDone()
void GaussianProcessGuider::GuidingDitherSettleDone | ( | bool | success | ) |
This method tells the guider that dithering is finished.
The guider will resume normal operation.
Definition at line 453 of file gaussian_process_guider.cpp.
◆ inject_data_point()
void GaussianProcessGuider::inject_data_point | ( | double | timestamp, |
double | input, | ||
double | SNR, | ||
double | control | ||
) |
This method is needed for automated testing.
It can inject data points.
Definition at line 590 of file gaussian_process_guider.cpp.
◆ regularize_dataset()
Eigen::MatrixXd GaussianProcessGuider::regularize_dataset | ( | const Eigen::VectorXd & | timestamps, |
const Eigen::VectorXd & | gear_error, | ||
const Eigen::VectorXd & | variances | ||
) |
Takes timestamps, measurements and SNRs and returns them regularized in a matrix.
Definition at line 707 of file gaussian_process_guider.cpp.
◆ reset()
void GaussianProcessGuider::reset | ( | ) |
Clears the data from the circular buffer and clears the GP data.
Definition at line 421 of file gaussian_process_guider.cpp.
◆ result()
double GaussianProcessGuider::result | ( | double | input, |
double | SNR, | ||
double | time_step, | ||
double | prediction_point = -1.0 |
||
) |
Calculates the control value based on the current input.
- The input is stored, 2. the GP is updated with the new data point, 3. the prediction is calculated to compensate the gear error and 4. the controller is calculated, consisting of feedback and prediction parts.
Definition at line 267 of file gaussian_process_guider.cpp.
◆ save_gp_data()
void GaussianProcessGuider::save_gp_data | ( | ) | const |
Saves the GP data to a csv file for external analysis.
Expensive!
Definition at line 774 of file gaussian_process_guider.cpp.
◆ SetLearningRate()
void GaussianProcessGuider::SetLearningRate | ( | double | learning_rate | ) |
Sets the learning rate.
Useful for disabling it for testing.
Definition at line 849 of file gaussian_process_guider.cpp.
◆ UpdateGP()
void GaussianProcessGuider::UpdateGP | ( | double | prediction_point = std::numeric_limits<double>::quiet_NaN() | ) |
Runs the inference machinery on the GP.
Gets the measurement data from the circular buffer and stores it in Eigen::Vectors. Detrends the data with linear regression. Calculates the main frequency with an FFT. Updates the GP accordingly with new data and parameter.
Definition at line 138 of file gaussian_process_guider.cpp.
◆ UpdatePeriodLength()
void GaussianProcessGuider::UpdatePeriodLength | ( | double | period_length | ) |
Does filtering and sets the period length of the GPGuider.
Definition at line 688 of file gaussian_process_guider.cpp.
The documentation for this class was generated from the following files:
Documentation copyright © 1996-2023 The KDE developers.
Generated on Fri Jun 9 2023 04:02:27 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.