Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/main/java/frc/robot/constants/AlgaeConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public class AlgaeConstants {
public static final double kIntakingSpeed = -1;

public static final double kHasAlgaeVelThreshold = 10;
public static final double kSuperCycleHasAlgaeVelThres = 50;
public static final double kHasAlgaeCounts = 2;

// Example Talon FX Config
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/frc/robot/constants/ElevatorConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@

public class ElevatorConstants {

public static final double kCloseEnoughRotations = 0.1;
public static final double kCloseEnoughRotations = 0.4;
public static final double kStowThresholdDone = 0.3676757 + 0.5;
public static final double kMaxFwd = 53;
public static final double kMaxRev = 2;
public static final double kMaxRev = 0.1;
public static final double kElevatorLiftHeight = 1; // for pit command
public static final int kZeroMultiple =
0; // some constant to multiply, add by to turn the analog input into a position
Expand Down Expand Up @@ -76,7 +76,7 @@ public static TalonFXConfiguration getBothFXConfig() {
new CurrentLimitsConfigs()
.withStatorCurrentLimitEnable(false)
.withSupplyCurrentLimitEnable(true)
.withSupplyCurrentLimit(40)
.withSupplyCurrentLimit(70)
.withSupplyCurrentLowerLimit(10)
.withSupplyCurrentLowerTime(2);
fxConfig.CurrentLimits = current;
Expand Down Expand Up @@ -114,7 +114,7 @@ public static TalonFXConfiguration getBothFXConfig() {
fxConfig.Slot0 = slot0;

MotionMagicConfigs motionMagic =
new MotionMagicConfigs().withMotionMagicCruiseVelocity(50).withMotionMagicAcceleration(100);
new MotionMagicConfigs().withMotionMagicCruiseVelocity(75).withMotionMagicAcceleration(300);
fxConfig.MotionMagic = motionMagic;

MotorOutputConfigs motorOut =
Expand Down
26 changes: 20 additions & 6 deletions src/main/java/frc/robot/constants/RobotConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,9 @@ public class RobotConstants {

// Biscuit
public static TalonFXSConfiguration talonFXSConfig;
public static MotionMagicConfigs alageMotionConfig;
public static MotionMagicConfigs noAlageMotionConfig;
public static MotionMagicConfigs algaeMotionConfig;
public static MotionMagicConfigs algaeRemovalMotionConfig;
public static MotionMagicConfigs noAlgaeMotionConfig;

public static double kTicksPerRot;

Expand Down Expand Up @@ -92,8 +93,9 @@ public RobotConstants() {
kElevatorFunnelSetpoint = CompConstants.kElevatorFunnelSetpoint;
kElevatorStowSetpoint = CompConstants.kElevatorStowSetpoint;
talonFXSConfig = CompConstants.getFXSConfig();
alageMotionConfig = CompConstants.getAlgaeMotionConfig();
noAlageMotionConfig = CompConstants.getNoAlgaeMotionConfig();
algaeMotionConfig = CompConstants.getAlgaeMotionConfig();
algaeRemovalMotionConfig = CompConstants.getAlgaeRemovalMotionConfig();
noAlgaeMotionConfig = CompConstants.getNoAlgaeMotionConfig();
kTicksPerRot = 80;
logger.info("Using Comp Constants");

Expand Down Expand Up @@ -138,8 +140,9 @@ public RobotConstants() {
kElevatorFunnelSetpoint = ProtoConstants.kElevatorFunnelSetpoint;
kElevatorStowSetpoint = ProtoConstants.kElevatorStowSetpoint;
talonFXSConfig = ProtoConstants.getFXSConfig();
alageMotionConfig = ProtoConstants.getAlgaeMotionConfig();
noAlageMotionConfig = ProtoConstants.getNoAlgaeMotionConfig();
algaeMotionConfig = ProtoConstants.getAlgaeMotionConfig();
algaeRemovalMotionConfig = algaeMotionConfig;
noAlgaeMotionConfig = ProtoConstants.getNoAlgaeMotionConfig();
kTicksPerRot = 160;
logger.info("Using Proto Constants");

Expand Down Expand Up @@ -385,6 +388,17 @@ public static MotionMagicConfigs getAlgaeMotionConfig() {
return algaeConfig;
}

public static MotionMagicConfigs getAlgaeRemovalMotionConfig() {
MotionMagicConfigs algaeConfig =
new MotionMagicConfigs()
.withMotionMagicAcceleration(300)
.withMotionMagicCruiseVelocity(30)
.withMotionMagicExpo_kA(0)
.withMotionMagicExpo_kV(0)
.withMotionMagicJerk(1500);
return algaeConfig;
}

public static MotionMagicConfigs getNoAlgaeMotionConfig() {
MotionMagicConfigs algaeConfig =
new MotionMagicConfigs()
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/frc/robot/constants/RobotStateConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ public class RobotStateConstants {

public static final double kProcessorStowRadius = 0.5;

// Super Cycle Constants
public static final double kBiscuitSuperCycleSafeThres = 6;

// Elevator good for climb, tolerates stuck coral
public static final double kElevatorClimbMax = 11.4;

Expand Down
6 changes: 6 additions & 0 deletions src/main/java/frc/robot/subsystems/algae/AlgaeSubsystem.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ public boolean hasAlgae() {
return curState == AlgaeStates.HAS_ALGAE;
}

public boolean hasAlgaeSuperCycle() {
return curState == AlgaeStates.HAS_ALGAE
|| (FastMath.abs(inputs.velocity) < AlgaeConstants.kSuperCycleHasAlgaeVelThres
&& inputs.isBeamBroken);
}

public void setSpeed(double speed) {
// io.setSpeed(speed);
// desiredSpeed = speed;
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/frc/robot/subsystems/biscuit/BiscuitIO.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ public class BiscuitIOInputs {

public default void setPosition(Angle position, boolean hasAlgae) {}

public default void setIsRemovingAlgae(boolean isRemoving) {}

public default void updateInputs(BiscuitIOInputs inputs) {}

public default void registerWith(TelemetryService telemetry) {}
Expand Down
17 changes: 13 additions & 4 deletions src/main/java/frc/robot/subsystems/biscuit/BiscuitIOFXS.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public class BiscuitIOFXS implements BiscuitIO, Checkable {
private Angle offset;
private Alert rangeAlert = new Alert("Biscuit overextended! Shuting down!", AlertType.kError);
private boolean lastHadAlgae = false;
private boolean isRemovingAlgae = false;

private TalonFXSConfigurator configurator;
private MotionMagicDutyCycle positionRequest =
Expand Down Expand Up @@ -75,13 +76,22 @@ public BiscuitIOFXS() {
zero();
}

@Override
public void setIsRemovingAlgae(boolean isRemoving) {
this.isRemovingAlgae = isRemoving;
}

@Override
public void setPosition(Angle position, boolean hasAlgae) {
if (hasAlgae != lastHadAlgae) {
if (hasAlgae) {
configurator.apply(RobotConstants.alageMotionConfig);
if (isRemovingAlgae) {
configurator.apply(RobotConstants.algaeMotionConfig);
} else {
configurator.apply(RobotConstants.algaeMotionConfig);
}
} else {
configurator.apply(RobotConstants.noAlageMotionConfig);
configurator.apply(RobotConstants.noAlgaeMotionConfig);
}
lastHadAlgae = hasAlgae;
}
Expand All @@ -90,12 +100,11 @@ public void setPosition(Angle position, boolean hasAlgae) {

@Override
public void updateInputs(BiscuitIOInputs inputs) {
BaseStatusSignal.refreshAll(velocity, position, rawPulseWidth);
inputs.velocity = velocity.getValueAsDouble();
inputs.position = position.getValueAsDouble();
inputs.rawPulseWidth = rawPulseWidth.getValueAsDouble();
inputs.didZero = didZero;

BaseStatusSignal.refreshAll(velocity, position, rawPulseWidth);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ public boolean hasZeroed() {
return hasZeroed;
}

public void setIsRemovingAlgae(boolean isRemoving) {
io.setIsRemovingAlgae(isRemoving);
}

public void setPosition(Angle position, boolean hasAlgae) {
io.setPosition(position, hasAlgae);
setPoint = position;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,8 @@ private boolean needSafeAlgaeTransfer(RobotStates nextState) {

public void toStow() {
visionSubsystem.setYawUpdateCamera(-1);
biscuitSubsystem.setIsRemovingAlgae(false);

if (biscuitSubsystem.isSafeToStow()) {
biscuitSubsystem.setPosition(RobotConstants.kStowSetpoint, hasAlgae());
elevatorSubsystem.setPosition(RobotConstants.kElevatorStowSetpoint);
Expand Down Expand Up @@ -609,6 +611,8 @@ public void toInterrupted() {
driveSubsystem.setIgnoreSticks(false);
}

biscuitSubsystem.setIsRemovingAlgae(false);

biscuitSubsystem.setPosition(biscuitSubsystem.getPosition(), hasAlgae());
elevatorSubsystem.setPosition(elevatorSubsystem.getPosition());

Expand Down Expand Up @@ -716,17 +720,15 @@ public void periodic() {
}
}
case REEF_ALIGN_ALGAE -> {
if (biscuitSubsystem.getPosition().in(Rotations) > RobotConstants.kTagAlignThreshold) {
tagAlignSubsystem.setProceedToAlign(true);
}
if (algaeSubsystem.hasAlgae()) {
if (algaeSubsystem.hasAlgaeSuperCycle()) {
biscuitSubsystem.setIsRemovingAlgae(true);
switch (getAlgaeLevel()) {
case L2 -> {
biscuitSubsystem.setPosition(RobotConstants.kL2AlgaeRemovalSetpoint, hasAlgae());
biscuitSubsystem.setPosition(RobotConstants.kL2AlgaeRemovalSetpoint, true);
elevatorSubsystem.setPosition(ElevatorConstants.kL2AlgaeRemovalSetpoint);
}
case L3 -> {
biscuitSubsystem.setPosition(RobotConstants.kL3AlgaeRemovalSetpoint, hasAlgae());
biscuitSubsystem.setPosition(RobotConstants.kL3AlgaeRemovalSetpoint, true);
elevatorSubsystem.setPosition(ElevatorConstants.kL3AlgaeRemovalSetpoint);
}
default -> logger.error("Invalid algae level: {}", getAlgaeLevel());
Expand All @@ -748,7 +750,10 @@ public void periodic() {
}
}
case REMOVE_ALGAE -> {
if (biscuitSubsystem.isFinished() && elevatorSubsystem.isFinished()) {
if (elevatorSubsystem.isFinished()
&& biscuitSubsystem.getPosition().in(Rotations)
<= RobotStateConstants.kBiscuitSuperCycleSafeThres) {
biscuitSubsystem.setIsRemovingAlgae(false);
if (coralSubsystem.hasCoral()
&& !(isAutoPlacing && getAlgaeOnCycle && scoreSide == ScoreSide.RIGHT)) {
toReefAlign(false, false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public TagAlignSubsystem(DriveSubsystem driveSubsystem, VisionSubsystem visionSu

Logger.recordOutput("TagAlignSubsystem/Hexant", -1);

driveRadius = 1.223823;
driveRadius = 1.293823;
for (int i = 0; i < 6; i++) {
logger.info("Hexant {}, left and right", i);

Expand Down