28#include "modules/common_msgs/config_msgs/vehicle_config.pb.h"
29#include "modules/control/control_component/proto/mrac_conf.pb.h"
92 const Eigen::MatrixXd matrix_p)
const;
116 void UpdateAdaption(Eigen::MatrixXd *law_adp,
const Eigen::MatrixXd state_adp,
117 const Eigen::MatrixXd gain_adp);
127 const double previous_command);
155 virtual double Control(
const double command,
const Eigen::MatrixXd state,
156 const double input_limit,
157 const double input_rate_limit);
167 int BoundOutput(
const double output_unbounded,
const double previous_output,
168 double *output_bounded);
193 const Eigen::MatrixXd &gain_state_adaption_init);
206 const double gain_nonlinear_adaption_init);
control module main class, it processes localization, chassis, and pad data to compute throttle,...
A general class to denote the return status of an API call.
A mrac controller for actuation system (throttle/brake and steering)
void SetInitialNonlinearAdaptionGain(const double gain_nonlinear_adaption_init)
set initial value of nonlinear adaption gain for mrac control
void ResetStates()
reset internal states for mrac controller
bool adaption_clamping_enabled
void SetInitialCommand(const double command_init)
set initial command (desired input)
common::Status BuildReferenceModel()
build mrac (1st or 2nd) order reference model in the discrete-time form, with the bilinear transform ...
Eigen::MatrixXd compensation_anti_windup_
double gamma_ratio_nonlinear_
bool reference_model_enabled_
common::Status BuildAdaptionModel()
build mrac (1st or 2nd) order adaptive dynamic model in the discrete-time form
void SetInitialActionState(const Eigen::MatrixXd &state_action_init)
set initial values for state components in actual actuator dynamics
common::Status SetAdaptionModel(const MracConf &mrac_conf)
state adaptive gain, desired adaptive gain and nonlinear-component adaptive gain
Eigen::MatrixXd matrix_a_reference_
int saturation_status_control_
void SetInputAdaptionRate(const double ratio_input)
set convergence ratio for input components in adaptive dynamics
Eigen::MatrixXd gamma_nonlinear_adaption_
void EstimateInitialGains(const common::LatencyParam &latency_param)
estimate the initial states of the adaptive gains via known actuation dynamics approximation
double InputAdaptionRate() const
get convergence ratio for input components in adaptive dynamics
Eigen::MatrixXd gain_input_adaption_
double NonlinearAdaptionRate() const
get convergence ratio for nonlinear components in adaptive dynamics
void SetNonlinearAdaptionRate(const double ratio_nonlinear)
set convergence ratio for nonlinear components in adaptive dynamics
Eigen::MatrixXd gamma_input_adaption_
double bound_command_rate_
Eigen::MatrixXd gain_state_clamping_
Eigen::MatrixXd CurrentInputAdaptionGain() const
get current input adaptive gain for mrac control
Eigen::MatrixXd state_action_
void SetInitialInputAdaptionGain(const double gain_input_adaption_init)
set initial value of input adaption gain for mrac control
int saturation_status_reference_
Eigen::MatrixXd gain_state_adaption_init_
bool adaption_model_enabled_
void Init(const MracConf &mrac_conf, const common::LatencyParam &latency_param, const double dt)
initialize mrac controller
int ReferenceSaturationStatus() const
get saturation status for reference system
Eigen::MatrixXd matrix_b_adaption_
void ResetGains()
reset adaptive gains for mrac controller
double gamma_ratio_state_
void UpdateAdaption(Eigen::MatrixXd *law_adp, const Eigen::MatrixXd state_adp, const Eigen::MatrixXd gain_adp)
execute the adaption interation with respect to the designed law in discrete-time form,...
Eigen::MatrixXd gain_input_clamping_
double gamma_ratio_input_
void Reset()
reset all the variables (including all the states, gains and externally-setting control parameters) f...
Eigen::MatrixXd CurrentNonlinearAdaptionGain() const
get current nonlinear adaptive gain for mrac control
Eigen::MatrixXd gain_input_adaption_init_
Eigen::MatrixXd gain_nonlinear_adaption_
common::Status SetReferenceModel(const MracConf &mrac_conf)
time constant, natural frequency and damping ratio
Eigen::MatrixXd gain_anti_windup_
void AntiWindupCompensation(const double control_command, const double previous_command)
calculate the anti-windup compensation with respect to the integral windup issue
Eigen::MatrixXd matrix_b_reference_
Eigen::MatrixXd gain_nonlinear_adaption_init_
Eigen::MatrixXd gain_state_adaption_
int ControlSaturationStatus() const
get saturation status for control system
Eigen::MatrixXd matrix_p_adaption_
Eigen::MatrixXd input_desired_
void SetInitialReferenceState(const Eigen::MatrixXd &state_reference_init)
set initial values for state components in reference model dynamics
double StateAdaptionRate() const
get convergence ratio for state components in adaptive dynamics
void SetStateAdaptionRate(const double ratio_state)
set convergence ratio for state components in adaptive dynamics
int BoundOutput(const double output_unbounded, const double previous_output, double *output_bounded)
bound the system output with the given bound and change-rate bound
bool CheckLyapunovPD(const Eigen::MatrixXd matrix_a, const Eigen::MatrixXd matrix_p) const
check if the solution of the algebraic Lyapunov Equation is symmetric positive definite
void SetInitialStateAdaptionGain(const Eigen::MatrixXd &gain_state_adaption_init)
set initial values of state adaption gains for mrac control
Eigen::MatrixXd CurrentReferenceState() const
get current state for reference system
Eigen::MatrixXd state_reference_
Eigen::MatrixXd gamma_state_adaption_
Eigen::MatrixXd CurrentStateAdaptionGain() const
get current state adaptive gain for mrac control
Eigen::MatrixXd gain_nonlinear_clamping_
void UpdateReference()
execute the reference state interation with respect to the designed inputs in discrete-time form,...