135 lines
5.6 KiB
Java
135 lines
5.6 KiB
Java
package frc.robot.constants;
|
|
|
|
import com.ctre.phoenix6.configs.AudioConfigs;
|
|
import com.ctre.phoenix6.configs.ClosedLoopRampsConfigs;
|
|
import com.ctre.phoenix6.configs.CurrentLimitsConfigs;
|
|
import com.ctre.phoenix6.configs.FeedbackConfigs;
|
|
import com.ctre.phoenix6.configs.MotorOutputConfigs;
|
|
import com.ctre.phoenix6.configs.Slot0Configs;
|
|
import com.ctre.phoenix6.signals.InvertedValue;
|
|
import com.ctre.phoenix6.signals.NeutralModeValue;
|
|
import com.revrobotics.spark.ClosedLoopSlot;
|
|
import com.revrobotics.spark.FeedbackSensor;
|
|
import com.revrobotics.spark.config.SparkMaxConfig;
|
|
import com.revrobotics.spark.config.SparkBaseConfig.IdleMode;
|
|
|
|
import edu.wpi.first.math.util.Units;
|
|
|
|
public class ModuleConstants {
|
|
public enum ModuleName {
|
|
kFrontLeft("FrontLeft"),
|
|
kFrontRight("FrontRight"),
|
|
kRearLeft("RearLeft"),
|
|
kRearRight("RearRight");
|
|
|
|
private String loggableName;
|
|
|
|
private ModuleName(String loggableName) {
|
|
this.loggableName = loggableName;
|
|
}
|
|
|
|
public String getLoggableName() {
|
|
return "Drivetrain/Modules/" + loggableName;
|
|
}
|
|
|
|
}
|
|
|
|
// DRIVING MOTOR CONFIG (Kraken)
|
|
public static final double kDrivingMotorReduction = (50 * 16 * 45)/(14.0 * 28.0 * 15.0);
|
|
|
|
public static final double kDrivingMotorFeedSpeedRPS = KrakenMotorConstants.kFreeSpeedRPM / 60;
|
|
public static final double kWheelDiameterMeters = Units.inchesToMeters(4);
|
|
public static final double kWheelCircumferenceMeters = kWheelDiameterMeters * Math.PI;
|
|
public static final double kDriveWheelFreeSpeedRPS = (kDrivingMotorFeedSpeedRPS * kWheelCircumferenceMeters) /
|
|
kDrivingMotorReduction;
|
|
public static final double kDrivingFactor = kWheelDiameterMeters * Math.PI / kDrivingMotorReduction;
|
|
public static final double kDrivingVelocityFeedForward = 1 / kDriveWheelFreeSpeedRPS;
|
|
|
|
// TODO Hold over from 2025, adjust?
|
|
public static final double kDriveP = .06;
|
|
public static final double kDriveI = 0;
|
|
public static final double kDriveD = 0;
|
|
public static final double kDriveS = 0;
|
|
public static final double kDriveV = kDrivingVelocityFeedForward;
|
|
public static final double kDriveA = 0;
|
|
public static final double kClosedLoopRampRate = .01;
|
|
|
|
// TODO Hold over from 2025, adjust?
|
|
public static final int kDriveMotorStatorCurrentLimit = 90;
|
|
public static final int kDriveMotorSupplyCurrentLimit = 55;
|
|
|
|
// TODO Hold over from 2025, adjust?
|
|
public static final InvertedValue kDriveInversionState = InvertedValue.Clockwise_Positive;
|
|
public static final NeutralModeValue kDriveIdleMode = NeutralModeValue.Brake;
|
|
|
|
// TURNING MOTOR CONFIG (NEO)
|
|
public static final double kTurningMotorReduction = 150.0/7.0;
|
|
public static final double kTurningFactor = 2 * Math.PI / kTurningMotorReduction;
|
|
// TODO Adjust? Let over from 2025
|
|
public static final double kTurnP = 12;
|
|
public static final double kTurnI = 0;
|
|
public static final double kTurnD = 0;
|
|
|
|
public static final double kTurnTolerance = Math.toRadians(0.25);
|
|
|
|
public static final boolean kIsEncoderInverted = false;
|
|
|
|
// TODO How sensitive is too sensitive?
|
|
public static final double kAutoResetPositionDeadband = Units.degreesToRadians(.25);
|
|
|
|
public static final int kTurnMotorCurrentLimit = 20;
|
|
|
|
public static final IdleMode kTurnIdleMode = IdleMode.kBrake;
|
|
|
|
// YOU SHOULDN'T NEED TO CHANGE ANYTHING BELOW THIS LINE UNLESS YOU'RE ADDING A CONFIGURATION ITEM
|
|
|
|
public static final SparkMaxConfig turningConfig = new SparkMaxConfig();
|
|
|
|
public static final FeedbackConfigs kDriveFeedConfig = new FeedbackConfigs();
|
|
public static final CurrentLimitsConfigs kDriveCurrentLimitConfig = new CurrentLimitsConfigs();
|
|
public static final MotorOutputConfigs kDriveMotorConfig = new MotorOutputConfigs();
|
|
public static final AudioConfigs kAudioConfig = new AudioConfigs();
|
|
public static final Slot0Configs kDriveSlot0Config = new Slot0Configs();
|
|
public static final ClosedLoopRampsConfigs kDriveClosedLoopRampConfig = new ClosedLoopRampsConfigs();
|
|
|
|
static {
|
|
kDriveFeedConfig.SensorToMechanismRatio = kDrivingMotorReduction;
|
|
|
|
kDriveCurrentLimitConfig.StatorCurrentLimitEnable = true;
|
|
kDriveCurrentLimitConfig.SupplyCurrentLimitEnable = true;
|
|
kDriveCurrentLimitConfig.StatorCurrentLimit = kDriveMotorStatorCurrentLimit;
|
|
kDriveCurrentLimitConfig.SupplyCurrentLimit = kDriveMotorSupplyCurrentLimit;
|
|
|
|
kDriveMotorConfig.Inverted = kDriveInversionState;
|
|
kDriveMotorConfig.NeutralMode = kDriveIdleMode;
|
|
|
|
kAudioConfig.AllowMusicDurDisable = true;
|
|
|
|
kDriveSlot0Config.kP = kDriveP;
|
|
kDriveSlot0Config.kI = kDriveI;
|
|
kDriveSlot0Config.kD = kDriveD;
|
|
kDriveSlot0Config.kS = kDriveS;
|
|
kDriveSlot0Config.kV = kDriveV;
|
|
kDriveSlot0Config.kA = kDriveA;
|
|
|
|
kDriveClosedLoopRampConfig.withVoltageClosedLoopRampPeriod(kClosedLoopRampRate);
|
|
|
|
turningConfig
|
|
.idleMode(kTurnIdleMode)
|
|
.smartCurrentLimit(kTurnMotorCurrentLimit)
|
|
.inverted(true);
|
|
turningConfig.encoder
|
|
//.inverted(true)
|
|
.positionConversionFactor(kTurningFactor)
|
|
.velocityConversionFactor(kTurningFactor / 60.0);
|
|
turningConfig.closedLoop
|
|
.feedbackSensor(FeedbackSensor.kPrimaryEncoder)
|
|
.pid(kTurnP, kTurnI, kTurnD)
|
|
.outputRange(-1, 1)
|
|
.allowedClosedLoopError(kTurnTolerance, ClosedLoopSlot.kSlot0)
|
|
.positionWrappingEnabled(true)
|
|
.positionWrappingInputRange(0, 2 * Math.PI);
|
|
|
|
}
|
|
}
|