28 #include "modules/common/configs/proto/vehicle_config.pb.h" 30 #include "modules/control/proto/mrac_conf.pb.h" 51 void Init(
const MracConf &mrac_conf,
52 const common::LatencyParam &latency_param,
const double dt);
91 const Eigen::MatrixXd matrix_p)
const;
115 void UpdateAdaption(Eigen::MatrixXd *law_adp,
const Eigen::MatrixXd state_adp,
116 const Eigen::MatrixXd gain_adp);
126 const double previous_command);
154 virtual double Control(
const double command,
const Eigen::MatrixXd state,
155 const double input_limit,
156 const double input_rate_limit);
166 int BoundOutput(
const double output_unbounded,
const double previous_output,
167 double *output_bounded);
192 const Eigen::MatrixXd &gain_state_adaption_init);
205 const double gain_nonlinear_adaption_init);
double StateAdaptionRate() const
get convergence ratio for state components in adaptive dynamics
common::Status SetReferenceModel(const MracConf &mrac_conf)
int saturation_status_control_
Definition: mrac_controller.h:345
void SetInitialActionState(const Eigen::MatrixXd &state_action_init)
set initial values for state components in actual actuator dynamics
double tau_clamping_
Definition: mrac_controller.h:292
void Reset()
reset all the variables (including all the states, gains and externally-setting control parameters) f...
double bound_command_rate_
Definition: mrac_controller.h:343
Eigen::MatrixXd gain_nonlinear_adaption_
Definition: mrac_controller.h:327
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
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_state_adaption_
Definition: mrac_controller.h:325
Eigen::MatrixXd state_action_
Definition: mrac_controller.h:323
void SetInitialStateAdaptionGain(const Eigen::MatrixXd &gain_state_adaption_init)
set initial values of state adaption gains for mrac control
void ResetStates()
reset internal states for mrac controller
Eigen::MatrixXd input_desired_
Definition: mrac_controller.h:322
double ts_
Definition: mrac_controller.h:297
double bound_command_
Definition: mrac_controller.h:342
double gamma_ratio_nonlinear_
Definition: mrac_controller.h:311
Eigen::MatrixXd gain_state_adaption_init_
Definition: mrac_controller.h:333
Eigen::MatrixXd gain_input_adaption_init_
Definition: mrac_controller.h:334
void SetInputAdaptionRate(const double ratio_input)
set convergence ratio for input components in adaptive dynamics
Eigen::MatrixXd state_reference_
Definition: mrac_controller.h:324
Eigen::MatrixXd gain_input_clamping_
Definition: mrac_controller.h:330
double bound_ratio_
Definition: mrac_controller.h:341
Eigen::MatrixXd gain_nonlinear_adaption_init_
Definition: mrac_controller.h:335
Eigen::MatrixXd gamma_nonlinear_adaption_
Definition: mrac_controller.h:305
double zeta_reference_
Definition: mrac_controller.h:295
void EstimateInitialGains(const common::LatencyParam &latency_param)
estimate the initial states of the adaptive gains via known actuation dynamics approximation ...
virtual double Control(const double command, const Eigen::MatrixXd state, const double input_limit, const double input_rate_limit)
compute control value based on the original command
void SetNonlinearAdaptionRate(const double ratio_nonlinear)
set convergence ratio for nonlinear components in adaptive dynamics
bool adaption_model_enabled_
Definition: mrac_controller.h:282
Eigen::MatrixXd gain_nonlinear_clamping_
Definition: mrac_controller.h:331
void UpdateReference()
execute the reference state interation with respect to the designed inputs in discrete-time form...
double gamma_ratio_state_
Definition: mrac_controller.h:307
Eigen::MatrixXd matrix_b_adaption_
Definition: mrac_controller.h:319
double tau_reference_
Definition: mrac_controller.h:291
Eigen::MatrixXd matrix_p_adaption_
Definition: mrac_controller.h:318
Eigen::MatrixXd CurrentStateAdaptionGain() const
get current state adaptive gain for mrac control
Eigen::MatrixXd compensation_anti_windup_
Definition: mrac_controller.h:349
int ControlSaturationStatus() const
get saturation status for control system
A mrac controller for actuation system (throttle/brake and steering)
Definition: mrac_controller.h:43
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
int model_order_
Definition: mrac_controller.h:288
Eigen::MatrixXd CurrentInputAdaptionGain() const
get current input adaptive gain for mrac control
common::Status BuildReferenceModel()
build mrac (1st or 2nd) order reference model in the discrete-time form, with the bilinear transform ...
Eigen::MatrixXd CurrentNonlinearAdaptionGain() const
get current nonlinear adaptive gain for mrac control
Eigen::MatrixXd gamma_state_adaption_
Definition: mrac_controller.h:301
Eigen::MatrixXd gamma_input_adaption_
Definition: mrac_controller.h:303
Eigen::MatrixXd gain_anti_windup_
Definition: mrac_controller.h:348
void Init(const MracConf &mrac_conf, const common::LatencyParam &latency_param, const double dt)
initialize mrac controller
void SetInitialReferenceState(const Eigen::MatrixXd &state_reference_init)
set initial values for state components in reference model dynamics
void AntiWindupCompensation(const double control_command, const double previous_command)
calculate the anti-windup compensation with respect to the integral windup issue
double InputAdaptionRate() const
get convergence ratio for input components in adaptive dynamics
void ResetGains()
reset adaptive gains for mrac controller
Eigen::MatrixXd CurrentReferenceState() const
get current state for reference system
double gamma_ratio_input_
Definition: mrac_controller.h:309
int saturation_status_reference_
Definition: mrac_controller.h:344
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 ...
bool reference_model_enabled_
Definition: mrac_controller.h:281
A general class to denote the return status of an API call. It can either be an OK status for success...
Definition: status.h:43
Eigen::MatrixXd gain_input_adaption_
Definition: mrac_controller.h:326
void SetStateAdaptionRate(const double ratio_state)
set convergence ratio for state components in adaptive dynamics
Eigen::MatrixXd matrix_b_reference_
Definition: mrac_controller.h:315
void SetInitialCommand(const double command_init)
set initial command (desired input)
void SetInitialNonlinearAdaptionGain(const double gain_nonlinear_adaption_init)
set initial value of nonlinear adaption gain for mrac control
common::Status SetAdaptionModel(const MracConf &mrac_conf)
Eigen::MatrixXd gain_state_clamping_
Definition: mrac_controller.h:329
double NonlinearAdaptionRate() const
get convergence ratio for nonlinear components in adaptive dynamics
Eigen::MatrixXd matrix_a_reference_
Definition: mrac_controller.h:314
bool adaption_clamping_enabled
Definition: mrac_controller.h:285
double control_previous_
Definition: mrac_controller.h:338
void SetInitialInputAdaptionGain(const double gain_input_adaption_init)
set initial value of input adaption gain for mrac control
common::Status BuildAdaptionModel()
build mrac (1st or 2nd) order adaptive dynamic model in the discrete-time form
double wn_reference_
Definition: mrac_controller.h:294
int ReferenceSaturationStatus() const
get saturation status for reference system