1#ifndef TR_EMBEDDED_PIDTUNER_H
2#define TR_EMBEDDED_PIDTUNER_H
3#include "../motor/DJIMotor.h"
19 printf(
"kP: %lf kI: %lf kD: %lf\n",
kP,
kI,
kD);
27 printf(
"kP: %lf kI: %lf kD: %lf\n",
kP,
kI,
kD);
49 void tune(
unsigned long time_s,
size_t iterations,
size_t generations, std::vector<PIDDataSet> &best,
double mutationRate = 0.01,
fitnessFunction getFitness = [](
double integral){
return 1 / integral;});
59 size_t populationSize;
64 std::random_device device;
67 void randomizePosition();
68 void getProbabilities(
double probabilities[]);
70 PIDDataSet select(
const double probabilities[]);
72 void nextGeneration();
std::function< double(double)> fitnessFunction
Definition PIDTuner.h:8
void tune(unsigned long time_s, size_t iterations, size_t generations, std::vector< PIDDataSet > &best, double mutationRate=0.01, fitnessFunction getFitness=[](double integral){return 1/integral;})
Definition PIDTuner.cpp:18
double getRandomNumber(double min, double max)
Definition PIDTuner.cpp:85
#define min(a, b)
Definition datatypes.h:19
#define max(a, b)
Definition datatypes.h:20
void dumpPIDs() const
Definition PIDTuner.h:18
double kD
Definition PIDTuner.h:13
double kP
Definition PIDTuner.h:11
double kI
Definition PIDTuner.h:12
void dumpData() const
Definition PIDTuner.h:26
double meanIntegralAbsError
Definition PIDTuner.h:15
double meanIntegralSqError
Definition PIDTuner.h:16
void dumpIntegrals() const
Definition PIDTuner.h:22
double kPMax
Definition PIDTuner.h:34
double kIMin
Definition PIDTuner.h:35
double kDMax
Definition PIDTuner.h:38
double kPMin
Definition PIDTuner.h:33
double kDMin
Definition PIDTuner.h:37
double kIMax
Definition PIDTuner.h:36