libstp
Robotics library for Botball
Loading...
Searching...
No Matches
libstp::autotune::control::ControlElementPID Class Referencefinal

#include <control_elements.hpp>

Inheritance diagram for libstp::autotune::control::ControlElementPID:
[legend]
Collaboration diagram for libstp::autotune::control::ControlElementPID:
[legend]

Public Member Functions

 ControlElementPID (double kp, double ki, double kd, double out_max=1e30, double i_max=1e30)
std::string getType () const override
 Short type tag, e.g. "P", "PT1", "ControlLoop".
double getLowestTimeConstant () const override
 Lowest time constant of the element, or -1 if it has none.
void initialize (double) override
 Reset internal state for a simulation run at sample time dt.
double calculate (double e, double dt) override
 Advance one sample: feed input u, return output.
int optimizeGetNumParameters () const override
 Number of tunable parameters this element consumes.
void optimizeSetParameters (const std::vector< double > &params, int startIdx) override
 Load parameters from params starting at startIdx.
Public Member Functions inherited from libstp::autotune::control::ControlElement
virtual ~ControlElement ()=default

Detailed Description

Full dt-EXPLICIT PID controller.

Mirrors the dt-explicit STM32 firmware pid.c: iErr += e * dt; dErr = (e - prevErr) / dt; u = kP*e + kI*iErr + kD*dErr; so kI/kD are physical per-second gains and DE-optimized gains transfer directly to the firmware. This element is NOT part of Brischalle's TS toolkit — it intentionally diverges from the toolkit's separate ControlElementI/D (which use the toolkit's own discrete forms) to match the firmware exactly.

Definition at line 145 of file control_elements.hpp.

Constructor & Destructor Documentation

◆ ControlElementPID()

libstp::autotune::control::ControlElementPID::ControlElementPID ( double kp,
double ki,
double kd,
double out_max = 1e30,
double i_max = 1e30 )
inline

Definition at line 153 of file control_elements.hpp.

Member Function Documentation

◆ calculate()

double libstp::autotune::control::ControlElementPID::calculate ( double u,
double dt )
inlineoverridevirtual

Advance one sample: feed input u, return output.

Implements libstp::autotune::control::ControlElement.

Definition at line 166 of file control_elements.hpp.

◆ getLowestTimeConstant()

double libstp::autotune::control::ControlElementPID::getLowestTimeConstant ( ) const
inlinenodiscardoverridevirtual

Lowest time constant of the element, or -1 if it has none.

Implements libstp::autotune::control::ControlElement.

Definition at line 160 of file control_elements.hpp.

◆ getType()

std::string libstp::autotune::control::ControlElementPID::getType ( ) const
inlinenodiscardoverridevirtual

Short type tag, e.g. "P", "PT1", "ControlLoop".

Implements libstp::autotune::control::ControlElement.

Definition at line 159 of file control_elements.hpp.

◆ initialize()

void libstp::autotune::control::ControlElementPID::initialize ( double dt)
inlineoverridevirtual

Reset internal state for a simulation run at sample time dt.

Implements libstp::autotune::control::ControlElement.

Definition at line 161 of file control_elements.hpp.

◆ optimizeGetNumParameters()

int libstp::autotune::control::ControlElementPID::optimizeGetNumParameters ( ) const
inlinenodiscardoverridevirtual

Number of tunable parameters this element consumes.

Implements libstp::autotune::control::ControlElement.

Definition at line 200 of file control_elements.hpp.

◆ optimizeSetParameters()

void libstp::autotune::control::ControlElementPID::optimizeSetParameters ( const std::vector< double > & params,
int startIdx )
inlineoverridevirtual

Load parameters from params starting at startIdx.

Implements libstp::autotune::control::ControlElement.

Definition at line 201 of file control_elements.hpp.


The documentation for this class was generated from the following file:
  • /home/runner/work/raccoon-lib/raccoon-lib/modules/libstp-autotune/include/autotune/control/control_elements.hpp