Skip to content
Closed
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
11 changes: 6 additions & 5 deletions src/main/java/frc/robot/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -306,9 +306,10 @@ public class ShooterRotaryConstants {

public static final Angle TOLERANCE = Degrees.of(2.0);

public static final AngularVelocity CRUISE_VELOCITY = RadiansPerSecond.of(1);
public static final AngularAcceleration ACCELERATION = CRUISE_VELOCITY.div(0.1).per(Second);
public static final Velocity<AngularAccelerationUnit> JERK = ACCELERATION.per(Second);
// public static final AngularVelocity CRUISE_VELOCITY = Units.RadiansPerSecond.of(1);
// public static final AngularAcceleration ACCELERATION =
// CRUISE_VELOCITY.div(0.1).per(Units.Second);
// public static final Velocity<AngularAccelerationUnit> JERK = ACCELERATION.per(Second);

private static final double ROTOR_TO_SENSOR = (2.0 / 1.0);
private static final double SENSOR_TO_MECHANISM = (2.0 / 1.0);
Expand Down Expand Up @@ -370,10 +371,10 @@ public static TalonFXConfiguration getFXConfig() {
config.MotorOutput.Inverted = InvertedValue.CounterClockwise_Positive;

config.SoftwareLimitSwitch.ForwardSoftLimitEnable = false;
config.SoftwareLimitSwitch.ForwardSoftLimitThreshold = MAX_ANGLE.in(Rotations);
// config.SoftwareLimitSwitch.ForwardSoftLimitThreshold = MAX_ANGLE.in(Units.Rotaitons);

config.SoftwareLimitSwitch.ReverseSoftLimitEnable = false;
config.SoftwareLimitSwitch.ReverseSoftLimitThreshold = MIN_ANGLE.in(Rotations);
// config.SoftwareLimitSwitch.ReverseSoftLimitThreshold = MIN_ANGLE.in(Units.Rotations);

config.Feedback.RotorToSensorRatio = ROTOR_TO_SENSOR;
config.Feedback.SensorToMechanismRatio = SENSOR_TO_MECHANISM;
Expand Down
9 changes: 8 additions & 1 deletion src/main/java/frc/robot/Robot.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
import com.ctre.phoenix6.swerve.SwerveModuleConstants;
import com.ctre.phoenix6.swerve.SwerveModuleConstants.DriveMotorArrangement;
import com.ctre.phoenix6.swerve.SwerveModuleConstants.SteerMotorArrangement;
import edu.wpi.first.wpilibj.Alert;
import edu.wpi.first.wpilibj.Alert.AlertType;
import edu.wpi.first.wpilibj.RobotController;
import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.CommandScheduler;
import frc.robot.generated.TunerConstants;
Expand All @@ -35,6 +38,7 @@
public class Robot extends LoggedRobot {
private Command autonomousCommand;
private RobotContainer robotContainer;
private Alert lowBatteryAlert = new Alert("The robot is low on battery!", AlertType.kWarning);

public Robot() {
// Record metadata
Expand Down Expand Up @@ -114,7 +118,10 @@ public void robotPeriodic() {
// This must be called from the robot's periodic block in order for anything in
// the Command-based framework to work.
CommandScheduler.getInstance().run();

if (0.0 <= RobotController.getBatteryVoltage()
&& RobotController.getBatteryVoltage() <= 11.01) {
lowBatteryAlert.set(true);
}
// Return to non-RT thread priority (do not modify the first argument)
// Threads.setCurrentThreadPriority(false, 10);
}
Expand Down
32 changes: 2 additions & 30 deletions src/main/java/frc/robot/RobotContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,20 @@
import edu.wpi.first.wpilibj2.command.Commands;
import edu.wpi.first.wpilibj2.command.button.CommandXboxController;
import edu.wpi.first.wpilibj2.command.sysid.SysIdRoutine;
import frc.lib.W8.io.absoluteencoder.AbsoluteEncoderIOCANCoder;
import frc.lib.W8.io.absoluteencoder.AbsoluteEncoderIOCANCoderSim;
import frc.lib.W8.io.motor.*;
import frc.lib.W8.mechanisms.flywheel.*;
import frc.lib.W8.mechanisms.linear.LinearMechanism;
import frc.lib.W8.mechanisms.linear.LinearMechanismReal;
import frc.lib.W8.mechanisms.linear.LinearMechanismSim;
import frc.lib.W8.mechanisms.rotary.RotaryMechanism;
import frc.lib.W8.mechanisms.rotary.RotaryMechanismReal;
import frc.lib.W8.mechanisms.rotary.RotaryMechanismSim;
import frc.robot.Constants.ClimberConstants;
import frc.robot.Constants.HopperConstants;
import frc.robot.Constants.IntakeConstants;
import frc.robot.Constants.Ports;
import frc.robot.Constants.ShooterFlywheelConstants;
import frc.robot.Constants.ShooterRotaryConstants;
import frc.robot.commands.DriveCommands;
import frc.robot.generated.TunerConstants;
import frc.robot.subsystems.Climber;
import frc.robot.subsystems.Hopper;
import frc.robot.subsystems.Intake;
import frc.robot.subsystems.Shooter;
Expand All @@ -63,7 +59,6 @@ public class RobotContainer {
private final Drive drive;
private final Hopper hopper;
private final Shooter shooter;
private final Climber climber;
private final Intake intake;

// Controller
Expand Down Expand Up @@ -110,14 +105,6 @@ public RobotContainer() {
Ports.ShooterRoller),
Constants.ShooterRotaryConstants.CONSTANTS,
java.util.Optional.empty()));
climber =
new Climber(
new LinearMechanismReal(
new MotorIOTalonFX(
ClimberConstants.MOTOR_NAME,
ClimberConstants.getFXConfig(),
Ports.ClimberLinearMechanism),
ClimberConstants.CHARACTERISTICS));

intake =
new Intake(
Expand All @@ -133,7 +120,7 @@ public RobotContainer() {
Ports.IntakeRoller),
IntakeConstants.CONSTANTS,
Optional.of(
new AbsoluteEncoderIOCANCoderSim(
new AbsoluteEncoderIOCANCoder(
Ports.IntakeRoller,
IntakeConstants.MOTOR_NAME + " Encoder",
IntakeConstants.getCANcoderConfig(false)))));
Expand Down Expand Up @@ -187,17 +174,6 @@ public RobotContainer() {
true,
ShooterRotaryConstants.CONSTANTS,
java.util.Optional.empty()));
climber =
new Climber(
new LinearMechanismSim(
new MotorIOTalonFXSim(
ClimberConstants.MOTOR_NAME,
ClimberConstants.getFXConfig(),
Ports.ClimberLinearMechanism),
ClimberConstants.DCMOTOR,
ClimberConstants.CARRIAGE_MASS,
ClimberConstants.CHARACTERISTICS,
true));

intake =
new Intake(
Expand Down Expand Up @@ -236,10 +212,6 @@ public RobotContainer() {
new ModuleIO() {});

hopper = new Hopper(new FlywheelMechanism() {});
climber =
new Climber(
new LinearMechanism(
ClimberConstants.MOTOR_NAME, ClimberConstants.CHARACTERISTICS) {});

shooter =
new Shooter(
Expand Down
34 changes: 9 additions & 25 deletions src/main/java/frc/robot/subsystems/Climber.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
package frc.robot.subsystems;

import static edu.wpi.first.units.Units.Inches;
import static edu.wpi.first.units.Units.Meters;

import edu.wpi.first.units.Units;
import edu.wpi.first.units.measure.Distance;
import edu.wpi.first.units.measure.LinearVelocity;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
import frc.lib.W8.io.motor.MotorIO.PIDSlot;
import frc.lib.W8.mechanisms.linear.LinearMechanism;
import frc.robot.Constants.ClimberConstants;

Expand All @@ -19,28 +15,16 @@ public Climber(LinearMechanism io) {
io = _io;
}

public void Position(double position) {
// public void Position(double position) {

Distance positionInches = Inches.of(position);
_io.runPosition(
ClimberConstants.CONVERTER.toAngle(positionInches),
ClimberConstants.ANGULAR_VELOCITY,
ClimberConstants.ANGULAR_ACCELERATION,
null,
PIDSlot.SLOT_0);
}

public enum State {
IDLE(Units.MetersPerSecond.of(0.0)),
ASCENDING(Units.MetersPerSecond.of(ClimberConstants.CLIMB_SPEED)),
DESCENDING(Units.MetersPerSecond.of(-ClimberConstants.CLIMB_SPEED));

private final LinearVelocity velocity;

private State(LinearVelocity velocity) {
this.velocity = velocity;
}
}
// Distance positionInches = Inches.of(position);
// _io.runPosition(
// ClimberConstants.CONVERTER.toAngle(positionInches),
// ClimberConstants.ANGULAR_VELOCITY,
// ClimberConstants.ANGULAR_ACCELERATION,
// null,
// PIDSlot.SLOT_0);
// }

@Override
public void periodic() {}
Expand Down