Skip to content

Commit

Permalink
merging main in
Browse files Browse the repository at this point in the history
  • Loading branch information
etangent committed Jan 20, 2025
2 parents 613f88b + bb78ac4 commit 263c4c2
Show file tree
Hide file tree
Showing 14 changed files with 272 additions and 89 deletions.
24 changes: 15 additions & 9 deletions simgui.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
{
"HALProvider": {
"Addressable LEDs": {
"0": {
"columns": 64
},
"window": {
"visible": true
}
},
"Other Devices": {
"window": {
"visible": false
Expand All @@ -11,6 +19,8 @@
"/FMSInfo": "FMSInfo",
"/Faults/Active Faults": "Alerts",
"/Faults/Total Faults": "Alerts",
"/Faults/Active Faults": "Alerts",
"/Faults/Total Faults": "Alerts",
"/Robot/autos": "String Chooser",
"/Robot/drive/field2d": "Field2d",
"/Robot/drive/frontLeft/driveFeedback": "PIDController",
Expand All @@ -23,10 +33,6 @@
"/Robot/drive/rearRight/turnFeedback": "PIDController",
"/Robot/drive/rotationController": "PIDController",
"/Robot/drive/translationController": "ProfiledPIDController",
"/Robot/elevator/measurement/mech": "Mechanism2d",
"/Robot/elevator/pid": "ProfiledPIDController",
"/Robot/elevator/setpoint/mech": "Mechanism2d",
"/SmartDashboard/Alerts": "Alerts",
"/SmartDashboard/Scheduler": "Scheduler",
"/SmartDashboard/VisionSystemSim-main/Sim Field": "Field2d",
"/SmartDashboard/drive dynamic backward": "Command",
Expand Down Expand Up @@ -166,18 +172,18 @@
"open": true
},
"open": true
}
},
"elevator": {
},
"open": true
},
"open": true,
"vision": {
"open": true
}
},
"Shuffleboard": {
"open": true
},
"SmartDashboard": {
"open": true
}
}
},
Expand All @@ -194,7 +200,7 @@
0.0,
0.8500000238418579
],
"height": 278,
"height": 140,
"series": [
{
"color": [
Expand Down
34 changes: 34 additions & 0 deletions src/main/java/org/sciborgs1155/lib/SimpleMotor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.sciborgs1155.lib;

import com.ctre.phoenix6.configs.TalonFXConfiguration;
import com.ctre.phoenix6.hardware.TalonFX;
import java.util.function.DoubleConsumer;

public class SimpleMotor {
private final DoubleConsumer set;
private final Runnable close;

public SimpleMotor(DoubleConsumer set, Runnable close) {
this.set = set;
this.close = close;
}

public static SimpleMotor talon(TalonFX talon, TalonFXConfiguration config) {
FaultLogger.register(talon);
TalonUtils.addMotor(talon);
talon.getConfigurator().apply(config);
return new SimpleMotor(talon::set, talon::close);
}

public static SimpleMotor none() {
return new SimpleMotor(v -> {}, () -> {});
}

public void set(double power) {
set.accept(power);
}

public void close() {
close.run();
}
}
7 changes: 5 additions & 2 deletions src/main/java/org/sciborgs1155/robot/Ports.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,14 @@ public static final class Elevator {
}

public static final class Scoral {
public static final int TOP_ROLLER = 21;
public static final int BOTTOM_ROLLER = 22;
public static final int ROLLER = 21;
public static final int BEAMBREAK = 23;
}

public static final class LEDs {
public static final int LED_PORT = 1;
}

public static final class Hopper {
public static final int LEFT_MOTOR = -1;
public static final int RIGHT_MOTOR = -1;
Expand Down
11 changes: 10 additions & 1 deletion src/main/java/org/sciborgs1155/robot/Robot.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
import org.sciborgs1155.robot.commands.Autos;
import org.sciborgs1155.robot.drive.Drive;
import org.sciborgs1155.robot.elevator.Elevator;
import org.sciborgs1155.robot.led.LEDStrip;
import org.sciborgs1155.robot.scoral.Scoral;
import org.sciborgs1155.robot.vision.Vision;

/**
Expand All @@ -51,7 +53,9 @@ public class Robot extends CommandRobot implements Logged {
// SUBSYSTEMS
private final Drive drive = Drive.create();
private final Vision vision = Vision.create();
private final LEDStrip led = new LEDStrip();
private final Elevator elevator = Elevator.create();
private final Scoral scoral = Scoral.create();

// COMMANDS
@Log.NT private final SendableChooser<Command> autos = Autos.configureAutos(drive);
Expand Down Expand Up @@ -134,10 +138,12 @@ private void configureBindings() {
.rateLimit(MAX_ANGULAR_ACCEL.in(RadiansPerSecond.per(Second)));

drive.setDefaultCommand(drive.drive(x, y, omega));
led.setDefaultCommand(led.scrolling());

elevator.setDefaultCommand(elevator.retract());

autonomous().whileTrue(Commands.defer(autos::getSelected, Set.of(drive)).asProxy());
autonomous().whileTrue(led.autos());

test().whileTrue(systemsCheck());

Expand Down Expand Up @@ -173,7 +179,10 @@ public Command rumble(RumbleType rumbleType, double strength) {
}

public Command systemsCheck() {
return Test.toCommand(drive.systemsCheck(), elevator.goToTest(Level.L1.getHeight()))
return Test.toCommand(
drive.systemsCheck(),
elevator.goToTest(Level.L1.getHeight()),
Test.fromCommand(scoral.outtake().withTimeout(2)))
.withName("Test Mechanisms");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import com.ctre.phoenix6.hardware.TalonFX;
import com.ctre.phoenix6.signals.FeedbackSensorSourceValue;
import com.ctre.phoenix6.signals.NeutralModeValue;

import org.sciborgs1155.lib.TalonUtils;

public class RealElevator implements ElevatorIO {
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/org/sciborgs1155/robot/led/LEDConstants.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.sciborgs1155.robot.led;

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

import edu.wpi.first.units.measure.Distance;

public class LEDConstants {
// The length of the LED Strip.
public static final int LED_LENGTH = 64;
// The distance between two LEDs on the LED Strip.
public static final Distance LED_SPACING = Meters.of(0.01);
}
96 changes: 96 additions & 0 deletions src/main/java/org/sciborgs1155/robot/led/LEDStrip.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package org.sciborgs1155.robot.led;

import static edu.wpi.first.units.Units.MetersPerSecond;
import static edu.wpi.first.units.Units.Seconds;
import static org.sciborgs1155.robot.Ports.LEDs.*;
import static org.sciborgs1155.robot.led.LEDConstants.*;

import edu.wpi.first.wpilibj.AddressableLED;
import edu.wpi.first.wpilibj.AddressableLEDBuffer;
import edu.wpi.first.wpilibj.DriverStation.Alliance;
import edu.wpi.first.wpilibj.LEDPattern;
import edu.wpi.first.wpilibj.RobotController;
import edu.wpi.first.wpilibj.util.Color;
import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.SubsystemBase;
import java.util.Map;
import java.util.function.DoubleSupplier;
import monologue.Logged;
import org.sciborgs1155.robot.Constants;

public class LEDStrip extends SubsystemBase implements Logged, AutoCloseable {

private final AddressableLED led = new AddressableLED(LED_PORT);
private final AddressableLEDBuffer buffer;

public LEDStrip() {
led.setLength(LED_LENGTH);
buffer = new AddressableLEDBuffer(LED_LENGTH);
led.setData(buffer);
led.start();
}

/** Rainbow LEDs, scrolling at 0.5 m/s. Very cool. */
public Command rainbow() {
return set(
LEDPattern.rainbow(225, 225).scrollAtAbsoluteSpeed(MetersPerSecond.of(0.5), LED_SPACING));
}

/**
* A gradient of green to yellow LEDs, with an applied mask of how much the elevator is raised.
*
* @param percent A double supplier that supplies the elevator's percent raised.
*/
public Command elevatorLED(DoubleSupplier percent) {
return set(
LEDPattern.gradient(LEDPattern.GradientType.kDiscontinuous, Color.kGreen, Color.kYellow)
.mask(LEDPattern.progressMaskLayer(percent)));
}

/** A gradient of green to yellow LEDs, moving at 60 bpm, which synchronizes with many song. */
public Command music() {
return set(
LEDPattern.gradient(LEDPattern.GradientType.kDiscontinuous, Color.kGreen, Color.kYellow)
.mask(
LEDPattern.progressMaskLayer(
() ->
Math.sin(RobotController.getMeasureTime().in(Seconds) * Math.PI * 2) / 3
+ 0.5)));
}

/** A solid yellow green that is scrolled through. */
public Command scrolling() {
return set(
LEDPattern.solid(Color.kGreenYellow)
.mask(
LEDPattern.steps(Map.of(0, Color.kWhite, 0.5, Color.kBlack))
.scrollAtAbsoluteSpeed(MetersPerSecond.of(0.5), LED_SPACING)));
}

/** A breathing gradient that matches the alliance colors. */
public Command autos() {
if (Constants.alliance() == Alliance.Red) {
return set(
LEDPattern.gradient(
LEDPattern.GradientType.kDiscontinuous, Color.kFirstRed, Color.kOrangeRed)
.breathe(Seconds.of(2)));
} else {
return set(
LEDPattern.gradient(LEDPattern.GradientType.kDiscontinuous, Color.kFirstBlue, Color.kAqua)
.breathe(Seconds.of(2)));
}
}

public Command set(LEDPattern pattern) {
return run(
() -> {
pattern.applyTo(buffer);
led.setData(buffer);
});
}

@Override
public void close() throws Exception {
led.close();
}
}
12 changes: 0 additions & 12 deletions src/main/java/org/sciborgs1155/robot/scoral/NoScoral.java

This file was deleted.

30 changes: 0 additions & 30 deletions src/main/java/org/sciborgs1155/robot/scoral/RealScoral.java

This file was deleted.

Loading

0 comments on commit 263c4c2

Please sign in to comment.