Skip to content

Commit 63d80bd

Browse files
committed
Add gravity compensation publishers and methods for lift, arm, and arm ratio
1 parent 3202ad2 commit 63d80bd

2 files changed

Lines changed: 19 additions & 19 deletions

File tree

expansionhub/PositionController.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,20 @@ double PositionController::Compute(double setpoint, double measurement) {
2020

2121
feedForward.SetKs(units::volt_t{sSubscriber.Get(0)});
2222

23-
const double gLift = gLiftSubscriber.Get(0);
24-
const double gArm = gArmSubscriber.Get(0);
25-
const double gArmRatio = gArmRatioSubscriber.Get(0);
23+
const double g = gSubscriber.Get(0);
24+
const double cos = cosSubscriber.Get(0);
25+
const double cosRatio = cosRatioSubscriber.Get(0);
2626
constexpr double kGravityCompensationZeroTolerance = 1e-9;
2727

28-
// Precedence rule: kgLift wins when it is configured to a nonzero value.
29-
// Only when kgLift is effectively zero do we fall back to arm-style
30-
// gravity compensation based on kgArm and kgArmRatio.
31-
double gravityCompensation = gLift;
28+
// Precedence rule: g wins when it is configured to a nonzero value.
29+
// Only when g is effectively zero do we fall back to arm-style
30+
// gravity compensation based on cos and cosRatio.
31+
double gravityCompensation = g;
3232
if (std::abs(gravityCompensation) <= kGravityCompensationZeroTolerance &&
33-
std::abs(gArm) > kGravityCompensationZeroTolerance) {
33+
std::abs(cos) > kGravityCompensationZeroTolerance) {
3434
const double armAngleRadians =
35-
measurement * gArmRatio * 2.0 * std::numbers::pi;
36-
gravityCompensation = gArm * std::cos(armAngleRadians);
35+
measurement * cosRatio * 2.0 * std::numbers::pi;
36+
gravityCompensation = cos * std::cos(armAngleRadians);
3737
}
3838

3939
return (feedForward.Calculate(
@@ -84,21 +84,21 @@ void PositionController::Initialize(
8484
"/constants/position/continuousMaximum")
8585
.Subscribe(false, options);
8686

87-
gLiftSubscriber =
87+
gSubscriber =
8888
instance
8989
.GetDoubleTopic("/rhsp/" + busIdStr + "/motor" + motorNum +
90-
"/constants/position/kgLift")
90+
"/constants/position/kg")
9191
.Subscribe(0, options);
9292

93-
gArmSubscriber =
93+
cosSubscriber =
9494
instance
9595
.GetDoubleTopic("/rhsp/" + busIdStr + "/motor" + motorNum +
96-
"/constants/position/kgArm")
96+
"/constants/position/kcos")
9797
.Subscribe(0, options);
9898

99-
gArmRatioSubscriber =
99+
cosRatioSubscriber =
100100
instance
101101
.GetDoubleTopic("/rhsp/" + busIdStr + "/motor" + motorNum +
102-
"/constants/position/kgArmRatio")
102+
"/constants/position/kcosRatio")
103103
.Subscribe(0, options);
104104
}

expansionhub/PositionController.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ struct PositionController {
2525
wpi::nt::DoubleSubscriber continuousMinimumSubscriber;
2626
wpi::nt::DoubleSubscriber continuousMaximumSubscriber;
2727

28-
wpi::nt::DoubleSubscriber gLiftSubscriber;
29-
wpi::nt::DoubleSubscriber gArmSubscriber;
30-
wpi::nt::DoubleSubscriber gArmRatioSubscriber;
28+
wpi::nt::DoubleSubscriber gSubscriber;
29+
wpi::nt::DoubleSubscriber cosSubscriber;
30+
wpi::nt::DoubleSubscriber cosRatioSubscriber;
3131

3232
wpi::math::PIDController pidController{0, 0, 0, eh::Period};
3333
wpi::math::SimpleMotorFeedforward<wpi::units::meter> feedForward{eh::Ks, 0_V / 1_mps, 0_V / 1_mps_sq, eh::Period};

0 commit comments

Comments
 (0)