// CHANGE LATER
// gear ratio for converting motor rotations to linear distance
- public final static double CLIMB_GEAR_RATIO = 1.0 / 45.0;
+ public final static double CLIMB_GEAR_RATIO = 45.0;
public final static double WHEEL_RADIUS = Units.inchesToMeters(0.334);
public final static double BOTTOM_POSITION = Units.inchesToMeters(-8);
public final static double CLIMB_POSITION = Units.inchesToMeters(-6);
import edu.wpi.first.wpilibj2.command.SubsystemBase;
import frc.robot.constants.IdConstants;
-public class LinearClimb extends SubsystemBase {
+public class LinearClimb extends SubsystemBase implements LinearClimbIO{
private final TalonFX motor;
private boolean calibrating = false;
private double downPosition = ClimbConstants.BOTTOM_POSITION;
private double upPosition = ClimbConstants.UP_POSITION;
private double climbPosition = ClimbConstants.CLIMB_POSITION;
+ private LinearClimbIOInputs inputs = new LinearClimbIOInputs();
+
private final PIDController pid = new PIDController(
ClimbConstants.PID_P,
ClimbConstants.PID_I,
* rotations * gearRatio * 2 * PI * radius
*/
public double getAsMeters() {
- return getPosition() * ClimbConstants.CLIMB_GEAR_RATIO * 2 * Math.PI * ClimbConstants.WHEEL_RADIUS;
+ return inputs.positionMeters;
}
/**
* goes to the up position
calibrating = false;
setCurrentLimits(ClimbConstants.CLIMB_CURRENT);
}
+
+ @Override
+ public void updateInputs() {
+ inputs.positionMeters = Units.rotationsToRadians(motor.getPosition().getValueAsDouble()) * ClimbConstants.WHEEL_RADIUS / ClimbConstants.CLIMB_GEAR_RATIO;
+ inputs.motorCurrent = motor.getStatorCurrent().getValueAsDouble();
+ }
}
--- /dev/null
+package frc.robot.subsystems.Climb;
+
+import org.littletonrobotics.junction.AutoLog;
+
+public interface LinearClimbIO {
+ @AutoLog
+ public static class LinearClimbIOInputs{
+ public double positionMeters = 0.0;
+ public double motorCurrent = 0.0;
+ }
+
+ public void updateInputs();
+}