1#ifndef PROPORTIONAL_CONTROLLER_H
2#define PROPORTIONAL_CONTROLLER_H
24 ProportionalController(
const std::string& symbol,
const vector<double>& value,
int number_signals, std::vector<double> refs = { 0 })
25 :
Controller(symbol, value, number_signals, refs) {
26 if (value.size() != 1) {
27 throw std::invalid_argument(
"Proportional controller values must contain Kp.");
39 virtual Eigen::VectorXd
define_equations(
const Eigen::VectorXd& x,
const Eigen::VectorXd& u,
const Eigen::VectorXd& c)
override;
48 virtual Eigen::VectorXd
define_equations(
const double x,
const double u,
const double c)
override;
52 std::cout <<
" Controller Type: P\n"
53 <<
" Proportional Gain (K): " << K <<
"\n"
54 <<
" Reference Values: ";
56 std::cout << ref <<
" ";
58 std::cout << std::endl;
78 if (params.size() != 1) {
79 throw std::invalid_argument(
"Parameter vector must contain only K.");
Base class for reference-tracking controllers.
Abstract controller with per-channel reference values.
Definition Controller.h:17
std::vector< double > reference
Definition Controller.h:105
Single-gain proportional controller: output = K * (reference - u) + c.
Definition Proportional_controller.h:15
double getK() const
Return the proportional gain K.
Definition Proportional_controller.h:62
virtual void setParameters(const vector< double > ¶ms) override
Set K from a single-element parameter vector.
Definition Proportional_controller.h:77
ProportionalController(const std::string &symbol, const vector< double > &value, int number_signals, std::vector< double > refs={ 0 })
Construct a P controller.
Definition Proportional_controller.h:24
virtual void printValues() override
Print controller type, gain K, and reference values.
Definition Proportional_controller.h:51
virtual vector< double > getParameters() const override
Return { K }.
Definition Proportional_controller.h:72
virtual Eigen::VectorXd define_equations(const Eigen::VectorXd &x, const Eigen::VectorXd &u, const Eigen::VectorXd &c) override
Vector P-controller dynamics.
Definition Proportional_controller.cpp:18
void setK(double newK)
Set the proportional gain K.
Definition Proportional_controller.h:67