Skip to content

Commit 57b8013

Browse files
committed
feat: add an elevatorIO method for setting setpoint pose /w setpoint accel
Signed-off-by: Dasun Abeykoon <[email protected]>
1 parent 6b75c40 commit 57b8013

File tree

3 files changed

+23
-10
lines changed

3 files changed

+23
-10
lines changed

src/main/java/org/frc6423/robot/subsystems/superstructure/elevator/ElevatorIO.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,14 @@ public interface ElevatorIO extends AutoCloseable {
7373
* Set parent/child motors position setpoint /w acceleration setpoint
7474
*
7575
* @param poseMeters desired position setpoint in meters
76-
* @param accelerationMpsSqrd desired acceleration setpoint in meters per second per second
76+
* @param accelMpsSqrd desired acceleration setpoint in meters per second per second
7777
*/
78-
public void setPose(double poseMeters, double accelerationMpsSqrd);
78+
public void setPose(double poseMeters, double accelMpsSqrd);
79+
80+
/**
81+
* Set parent/child motors position setpoint
82+
*
83+
* @param poseMeters desired position setpoint in meters
84+
*/
85+
public void setPose(double poseMeters);
7986
}

src/main/java/org/frc6423/robot/subsystems/superstructure/elevator/ElevatorIONone.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@ public void resetEncoders(double poseMeters) {}
5555
public void setVolts(double volts) {}
5656

5757
@Override
58-
public void setPose(double poseMeters, double accelerationMpsSqrd) {}
58+
public void setPose(double poseMeters, double accelMpsSqrd) {}
59+
60+
@Override
61+
public void setPose(double poseMeters) {}
5962

6063
@Override
6164
public void close() throws Exception {}

src/main/java/org/frc6423/robot/subsystems/superstructure/elevator/ElevatorIOSim.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import static edu.wpi.first.units.Units.Kilograms;
1010
import static edu.wpi.first.units.Units.Meters;
11-
import static edu.wpi.first.units.Units.MetersPerSecond;
11+
import static edu.wpi.first.units.Units.MetersPerSecondPerSecond;
1212
import static org.frc6423.robot.subsystems.superstructure.elevator.Elevator.*;
1313

1414
import edu.wpi.first.math.MathUtil;
@@ -37,7 +37,7 @@ public class ElevatorIOSim implements ElevatorIO {
3737

3838
private final ElevatorFeedforward feedforward = new ElevatorFeedforward(0.0, 0.1265, 0.4, 0.0);
3939
private final ProfiledPIDController feedback =
40-
new ProfiledPIDController(15.0, 0.0, 0.0, new TrapezoidProfile.Constraints(0.0, 0.0));
40+
new ProfiledPIDController(15.0, 0.0, 0.0, new TrapezoidProfile.Constraints(2.25, 10.0));
4141

4242
public ElevatorIOSim() {
4343
SmartDashboard.putData(feedback);
@@ -92,17 +92,14 @@ public void setVolts(double volts) {
9292
appliedVolts = MathUtil.clamp(volts, -12.0, 12.0);
9393
}
9494

95-
@Override
96-
public void setPose(double poseMeters, double accelerationMpsSqrd) {
95+
public void setPose(double poseMeters, double accelMpsSqrd) {
9796
// Clamp pose in range
9897
poseMeters = MathUtil.clamp(poseMeters, 0.0, MAX_EXTENSION_HEIGHT.in(Meters));
9998
// Get current setpoint velocity
10099
var currentVel = feedback.getSetpoint().velocity;
101100

102101
// Give feedback controller new accel
103-
feedback.setConstraints(
104-
new TrapezoidProfile.Constraints(
105-
MAX_VELOCITY.in(MetersPerSecond) / 2, accelerationMpsSqrd));
102+
feedback.setConstraints(new TrapezoidProfile.Constraints(2.25, accelMpsSqrd));
106103
// Calculate next feedback setpoint
107104
var fbOut = feedback.calculate(getParentPoseMeters(), poseMeters);
108105
// Get next velocity
@@ -111,9 +108,15 @@ public void setPose(double poseMeters, double accelerationMpsSqrd) {
111108
// Calculate feedforward velocity output
112109
var ffOut = feedforward.calculateWithVelocities(currentVel, nextVel);
113110

111+
// Combine output
114112
setVolts(ffOut + fbOut);
115113
}
116114

115+
@Override
116+
public void setPose(double poseMeters) {
117+
setPose(poseMeters, MAX_ACCELERATION.in(MetersPerSecondPerSecond));
118+
}
119+
117120
@Override
118121
public void close() throws Exception {}
119122
}

0 commit comments

Comments
 (0)