FRC Paradigm Shift #1259
Documentation for the 2021 Robot
PIDLoaderNEO.cpp
Go to the documentation of this file.
1 #include "common/PIDLoaderNEO.h"
2 
3 
4 PIDLoaderNEO::PIDLoaderNEO(string name, bool adjustable, double p, double i, double d, double iz, double ia)
5  : m_name(name)
6  , m_adjustable(adjustable)
7  , m_p(p)
8  , m_i(i)
9  , m_d(d)
10  , m_iz(iz)
11  , m_ia(ia) {}
12 
13 PIDLoaderNEO::PIDLoaderNEO(string name, bool adjustable, double p, double i, double d, double iz, double ia, double ff, double max, double min)
14  : m_name(name)
15  , m_adjustable(adjustable)
16  , m_p(p)
17  , m_i(i)
18  , m_d(d)
19  , m_iz(iz)
20  , m_ia(ia)
21  , m_ff(ff)
22  , m_max(max)
23  , m_min(min) {}
24 
25 void PIDLoaderNEO::Load(CANPIDController& turnPIDController)
26 {
27  turnPIDController.SetP(m_p);
28  turnPIDController.SetI(m_i);
29  turnPIDController.SetD(m_d);
30  turnPIDController.SetIZone(m_iz);
31  turnPIDController.SetIMaxAccum(m_ia);
32  turnPIDController.SetFF(m_ff);
33  turnPIDController.SetOutputRange(m_min, m_max);
34 
35  if (m_adjustable)
36  {
37  SmartDashboard::PutNumber("T_" + m_name + "_TP", m_p);
38  SmartDashboard::PutNumber("T_" + m_name + "_TI", m_i);
39  SmartDashboard::PutNumber("T_" + m_name + "_TD", m_d);
40  SmartDashboard::PutNumber("T_" + m_name + "_TIZone", m_iz);
41  SmartDashboard::PutNumber("T_" + m_name + "_TIAccum", m_ia);
42  SmartDashboard::PutNumber("T_" + m_name + "_TFF", m_ff);
43  SmartDashboard::PutNumber("T_" + m_name + "_TMax", m_max);
44  SmartDashboard::PutNumber("T_" + m_name + "_TMin", m_min);
45  }
46 }
47 
48 void PIDLoaderNEO::LoadFromNetworkTable(CANPIDController& turnPIDController)
49 {
50  if (!m_adjustable)
51  return;
52 
53  double p = SmartDashboard::GetNumber("T_" + m_name + "_TP", m_p);
54  double i = SmartDashboard::GetNumber("T_" + m_name + "_TI", m_i);
55  double d = SmartDashboard::GetNumber("T_" + m_name + "_TD", m_d);
56  double iz = SmartDashboard::GetNumber("T_" + m_name + "_TIZone", m_iz);
57  double ia = SmartDashboard::GetNumber("T_" + m_name + "_TIAccum", m_ia);
58  double ff = SmartDashboard::GetNumber("T_" + m_name + "_TFF", m_ff);
59  double max = SmartDashboard::GetNumber("T_" + m_name + "_TMax", m_max);
60  double min = SmartDashboard::GetNumber("T_" + m_name + "_TMin", m_min);
61 
62  // if PID coefficients on SmartDashboard have changed, write new values to controller
63  if ((p != m_p)) { turnPIDController.SetP(p); m_p = p; }
64  if ((i != m_i)) { turnPIDController.SetI(i); m_i = i; }
65  if ((d != m_d)) { turnPIDController.SetD(d); m_d = d; }
66  if ((iz != m_iz)) { turnPIDController.SetIZone(iz); m_iz = iz; }
67  if ((ia != m_ia)) { turnPIDController.SetIAccum(ia); m_ia = ia; }
68  if ((ff != m_ff)) { turnPIDController.SetFF(ff); m_ff = ff; }
69 
70  if ((max != m_max) || (min != m_min))
71  {
72  turnPIDController.SetOutputRange(min, max);
73  m_min = min;
74  m_max = max;
75  }
76 }
bool m_adjustable
Definition: PIDLoaderNEO.h:35
void LoadFromNetworkTable(CANPIDController &turnPIDController)
PIDLoaderNEO(string name, bool adjustable, double p, double i, double d, double iz, double ia)
Definition: PIDLoaderNEO.cpp:4
void Load(CANPIDController &turnPIDController)
double m_min
Definition: PIDLoaderNEO.h:44
double m_max
Definition: PIDLoaderNEO.h:43
string m_name
Definition: PIDLoaderNEO.h:34