mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-02 02:51:42 +00:00
[glass] Add Profiled PID controller support & IZone Support (#5959)
This commit is contained in:
@@ -23,10 +23,12 @@ NTPIDControllerModel::NTPIDControllerModel(nt::NetworkTableInstance inst,
|
||||
m_d{inst.GetDoubleTopic(fmt::format("{}/d", path)).GetEntry(0)},
|
||||
m_setpoint{
|
||||
inst.GetDoubleTopic(fmt::format("{}/setpoint", path)).GetEntry(0)},
|
||||
m_iZone{inst.GetDoubleTopic(fmt::format("{}/izone", path)).GetEntry(0)},
|
||||
m_pData{fmt::format("NTPIDCtrlP:{}", path)},
|
||||
m_iData{fmt::format("NTPIDCtrlI:{}", path)},
|
||||
m_dData{fmt::format("NTPIDCtrlD:{}", path)},
|
||||
m_setpointData{fmt::format("NTPIDCtrlStpt:{}", path)},
|
||||
m_iZoneData{fmt::format("NTPIDCtrlIZone:{}", path)},
|
||||
m_nameValue{wpi::rsplit(path, '/').second} {}
|
||||
|
||||
void NTPIDControllerModel::SetP(double value) {
|
||||
@@ -44,6 +46,9 @@ void NTPIDControllerModel::SetD(double value) {
|
||||
void NTPIDControllerModel::SetSetpoint(double value) {
|
||||
m_setpoint.Set(value);
|
||||
}
|
||||
void NTPIDControllerModel::SetIZone(double value) {
|
||||
m_iZone.Set(value);
|
||||
}
|
||||
|
||||
void NTPIDControllerModel::Update() {
|
||||
for (auto&& v : m_name.ReadQueue()) {
|
||||
@@ -61,6 +66,9 @@ void NTPIDControllerModel::Update() {
|
||||
for (auto&& v : m_setpoint.ReadQueue()) {
|
||||
m_setpointData.SetValue(v.value, v.time);
|
||||
}
|
||||
for (auto&& v : m_iZone.ReadQueue()) {
|
||||
m_iZoneData.SetValue(v.value, v.time);
|
||||
}
|
||||
for (auto&& v : m_controllable.ReadQueue()) {
|
||||
m_controllableValue = v.value;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user