From 924f9c5f25c7a1448d9ab8efcdbed66b8afcef75 Mon Sep 17 00:00:00 2001 From: Andru Liu <90433630+WallabyLester@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:52:16 -0700 Subject: [PATCH] Changing code structure to cpp project. --- CPP_Implementation/RBF_aPID.cpp | 39 -------------------------- CPP_Implementation/apid_controller.cpp | 13 +++++++++ CPP_Implementation/apid_controller.h | 16 +++++++++++ CPP_Implementation/main.cpp | 17 +++++++++++ 4 files changed, 46 insertions(+), 39 deletions(-) delete mode 100644 CPP_Implementation/RBF_aPID.cpp create mode 100644 CPP_Implementation/apid_controller.cpp create mode 100644 CPP_Implementation/apid_controller.h create mode 100644 CPP_Implementation/main.cpp diff --git a/CPP_Implementation/RBF_aPID.cpp b/CPP_Implementation/RBF_aPID.cpp deleted file mode 100644 index ae1c409..0000000 --- a/CPP_Implementation/RBF_aPID.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include -#include - - - -class aPIDController { -public: - aPIDController(double kp, double ki, double kd, double dt) - : Kp(kp), Ki(ki), Kd(kd), dt(dt), integral(0.0), prev_err(0.0) {} - - double update(double target, double measured_value) { - double error = target - measured_value; - integral += error * dt; - double derivative = (error - prev_err) / dt; - prev_err = error; - - return (Kp * error) + (Ki * integral) + (Kd * derivative); - } - -private: - double Kp, Ki, Kd, dt; - double integral; - double prev_err; -}; - -int main() { - // PID parameters - double Kp = 1.0, Ki = 0.1, Kd = 0.01, dt = 0.1; - - aPIDController apid(Kp, Ki, Kd, dt); - - double target = 1.0, measured_value = 0.0; - - double control_signal = apid.update(target, measured_value); - - std::cout << "Output: " << control_signal << std::endl; - - return 0; -} diff --git a/CPP_Implementation/apid_controller.cpp b/CPP_Implementation/apid_controller.cpp new file mode 100644 index 0000000..a61ecb8 --- /dev/null +++ b/CPP_Implementation/apid_controller.cpp @@ -0,0 +1,13 @@ +#include "apid_controller.h" + +aPIDController::aPIDController(double kp, double ki, double kd, double dt) + : Kp(kp), Ki(ki), Kd(kd), dt(dt), integral(0.0), prev_err(0.0) {} + +double aPIDController::update(double target, double measured_value) { + double error = target - measured_value; + integral += error * dt; + double derivative = (error - prev_err) / dt; + prev_err = error; + + return (Kp * error) + (Ki * integral) + (Kd * derivative); +} diff --git a/CPP_Implementation/apid_controller.h b/CPP_Implementation/apid_controller.h new file mode 100644 index 0000000..7864f55 --- /dev/null +++ b/CPP_Implementation/apid_controller.h @@ -0,0 +1,16 @@ +#ifndef APID_CONTROLLER_H +#define APID_CONTROLLER_H + +class aPIDController { +public: + aPIDController(double kp, double ki, double kd, double dt); + + double update(double target, double measured_value); + +private: + double Kp, Ki, Kd, dt; + double integral; + double prev_err; +}; + +#endif // APID_CONTROLLER_H diff --git a/CPP_Implementation/main.cpp b/CPP_Implementation/main.cpp new file mode 100644 index 0000000..1bc8017 --- /dev/null +++ b/CPP_Implementation/main.cpp @@ -0,0 +1,17 @@ +#include +#include "apid_controller.h" + +const double Kp = 1.0, Ki = 0.1, Kd = 0.01, dt = 0.1; + +int main() { + aPIDController apid(Kp, Ki, Kd, dt); + + double target = 1.0; + double measured_value = 0.0; + + double control_signal = apid.update(target, measured_value); + + std::cout << "Output: " << control_signal << std::endl; + + return 0; +} \ No newline at end of file