Skip to content

Commit cd5c3bd

Browse files
authored
Fix built in PID calculation (#11)
1 parent 7c0738e commit cd5c3bd

File tree

3 files changed

+8
-35
lines changed

3 files changed

+8
-35
lines changed

expansionhub/MotorNtState.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,12 @@ double MotorNtState::ComputeMotorPower(double batteryVoltage) {
3434
return (setpoint / batteryVoltage) * reversed;
3535

3636
case POSITION_PID_MODE:
37-
return (positionPid.ComputePosition(setpoint, lastEncoderPosition,
38-
lastEncoderVelocity) /
37+
return (positionPid.Compute(setpoint, lastEncoderPosition) /
3938
batteryVoltage) *
4039
reversed;
4140

4241
case VELOCITY_PID_MODE:
43-
return (velocityPid.ComputeVelocity(setpoint, lastEncoderPosition,
44-
lastEncoderVelocity) /
42+
return (velocityPid.Compute(setpoint, lastEncoderVelocity) /
4543
batteryVoltage) *
4644
reversed;
4745

@@ -51,8 +49,8 @@ double MotorNtState::ComputeMotorPower(double batteryVoltage) {
5149
}
5250

5351
void MotorNtState::Initialize(const nt::NetworkTableInstance& instance,
54-
int motorNum, const std::string& busIdStr,
55-
nt::PubSubOptions options) {
52+
int motorNum, const std::string& busIdStr,
53+
nt::PubSubOptions options) {
5654
auto motorNumStr = std::to_string(motorNum);
5755
encoderPublisher = instance
5856
.GetDoubleTopic("/rhsp/" + busIdStr + "/motor" +

expansionhub/PidConstants.cpp

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44

55
using namespace eh;
66

7-
double PidConstants::ComputeVelocity(double setpoint, double currentPosition,
8-
double currentVelocity) {
7+
double PidConstants::Compute(double setpoint, double measurement) {
98
pidController.SetPID(pSubscriber.Get(0), iSubscriber.Get(0),
109
dSubscriber.Get(0));
1110
if (continuousSubscriber.Get(false)) {
@@ -19,28 +18,8 @@ double PidConstants::ComputeVelocity(double setpoint, double currentPosition,
1918
feedForward.SetKv(units::volt_t{vSubscriber.Get(0)} / 1_mps);
2019
feedForward.SetKa(units::volt_t{aSubscriber.Get(0)} / 1_mps_sq);
2120

22-
return (feedForward.Calculate(units::meters_per_second_t{currentVelocity}) +
23-
units::volt_t{pidController.Calculate(currentVelocity, setpoint)})
24-
.value();
25-
}
26-
27-
double PidConstants::ComputePosition(double setpoint, double currentPosition,
28-
double currentVelocity) {
29-
pidController.SetPID(pSubscriber.Get(0), iSubscriber.Get(0),
30-
dSubscriber.Get(0));
31-
if (continuousSubscriber.Get(false)) {
32-
pidController.EnableContinuousInput(continuousMinimumSubscriber.Get(0),
33-
continuousMaximumSubscriber.Get(0));
34-
} else {
35-
pidController.DisableContinuousInput();
36-
}
37-
38-
feedForward.SetKs(units::volt_t{sSubscriber.Get(0)});
39-
feedForward.SetKv(units::volt_t{vSubscriber.Get(0)} / 1_mps);
40-
feedForward.SetKa(units::volt_t{aSubscriber.Get(0)} / 1_mps_sq);
41-
42-
return (feedForward.Calculate(units::meters_per_second_t{currentVelocity}) +
43-
units::volt_t{pidController.Calculate(currentPosition, setpoint)})
21+
return (feedForward.Calculate(units::meters_per_second_t{setpoint}) +
22+
units::volt_t{pidController.Calculate(measurement, setpoint)})
4423
.value();
4524
}
4625

expansionhub/PidConstants.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,7 @@ struct PidConstants {
4141
const std::string& motorNum, const std::string& busIdStr,
4242
const std::string& pidType, nt::PubSubOptions options);
4343

44-
double ComputeVelocity(double setpoint, double currentPosition,
45-
double currentVelocity);
46-
47-
double ComputePosition(double setpoint, double currentPosition,
48-
double currentVelocity);
44+
double Compute(double setpoint, double measurement);
4945
};
5046

5147
} // namespace eh

0 commit comments

Comments
 (0)