From 72661c3f5129f1e427e730f89e6482e4c6beb971 Mon Sep 17 00:00:00 2001 From: Jonah I Date: Thu, 12 Mar 2026 20:27:09 -0700 Subject: [PATCH 1/5] Collector Safety --- .../collector_intake/CollectorSubsystem.java | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java b/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java index d0733d92..974312b0 100644 --- a/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java +++ b/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java @@ -1,28 +1,36 @@ package competition.subsystems.collector_intake; import competition.electrical_contract.ElectricalContract; +import competition.subsystems.intake_deploy.IntakeDeploySubsystem; import xbot.common.command.BaseSubsystem; import xbot.common.controls.actuators.XCANMotorController; +import xbot.common.properties.AngleProperty; import xbot.common.properties.DoubleProperty; import xbot.common.properties.PropertyFactory; import javax.inject.Inject; import javax.inject.Singleton; +import static edu.wpi.first.units.Units.Degrees; + @Singleton public class CollectorSubsystem extends BaseSubsystem { + public final IntakeDeploySubsystem intakeDeploySubsystem; public final ElectricalContract electricalContract; public final XCANMotorController collectorMotor; final DoubleProperty intakePower; final DoubleProperty ejectPower; + final AngleProperty collectorAngle; + @Inject public CollectorSubsystem(ElectricalContract electricalContract, XCANMotorController.XCANMotorControllerFactory motorFactory, - PropertyFactory pf) { + PropertyFactory pf, IntakeDeploySubsystem intakeDeploySubsystem) { pf.setPrefix(this); + this.intakeDeploySubsystem = intakeDeploySubsystem; this.electricalContract = electricalContract; if (electricalContract.isFuelIntakeMotorReady()) { this.collectorMotor = motorFactory.create( @@ -37,27 +45,36 @@ public CollectorSubsystem(ElectricalContract electricalContract, intakePower = pf.createPersistentProperty("FuelIntakePower", 1); ejectPower = pf.createPersistentProperty("FuelEjectPower", -1); + collectorAngle = pf.createPersistentProperty("CollectorAngle", Degrees.of(90)); } public void intake() { - if (collectorMotor == null) { - return; - } - collectorMotor.setPower(intakePower.get()); + this.setPower(intakePower.get()); } public void eject() { + this.setPower(ejectPower.get()); + } + + public void stop() { if (collectorMotor == null) { return; } - collectorMotor.setPower(ejectPower.get()); + collectorMotor.setPower(0); } - public void stop() { + public void setPower(double power) { if (collectorMotor == null) { return; } - collectorMotor.setPower(0); + + if (!intakeDeploySubsystem.isCalibrated) { + return; + } + + if (intakeDeploySubsystem.getCurrentValue().gt(collectorAngle.get())) { + collectorMotor.setPower(power); + } } @Override From 4502ac21fc9f50549c54d14b148e4a702bf44984 Mon Sep 17 00:00:00 2001 From: Jonah I Date: Thu, 12 Mar 2026 20:39:04 -0700 Subject: [PATCH 2/5] Stop consistancy --- .../subsystems/collector_intake/CollectorSubsystem.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java b/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java index 974312b0..78cbb375 100644 --- a/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java +++ b/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java @@ -57,10 +57,7 @@ public void eject() { } public void stop() { - if (collectorMotor == null) { - return; - } - collectorMotor.setPower(0); + this.setPower(0.0); } public void setPower(double power) { From a91a5106ee04a465a7ae3ba8b9576b2439e0b2b2 Mon Sep 17 00:00:00 2001 From: Jonah I Date: Thu, 12 Mar 2026 20:43:07 -0700 Subject: [PATCH 3/5] Else power 0 --- .../subsystems/collector_intake/CollectorSubsystem.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java b/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java index 78cbb375..5cbfb55b 100644 --- a/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java +++ b/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java @@ -71,6 +71,8 @@ public void setPower(double power) { if (intakeDeploySubsystem.getCurrentValue().gt(collectorAngle.get())) { collectorMotor.setPower(power); + } else { + collectorMotor.setPower(0.0); } } From 413a3f50cc02842b783e4beaa7bf80c8b40ce6f3 Mon Sep 17 00:00:00 2001 From: Jonah I Date: Thu, 12 Mar 2026 20:48:18 -0700 Subject: [PATCH 4/5] Update CollectorSubsystem.java --- .../collector_intake/CollectorSubsystem.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java b/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java index 5cbfb55b..ce530e25 100644 --- a/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java +++ b/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java @@ -65,14 +65,12 @@ public void setPower(double power) { return; } - if (!intakeDeploySubsystem.isCalibrated) { - return; - } - if (intakeDeploySubsystem.getCurrentValue().gt(collectorAngle.get())) { - collectorMotor.setPower(power); - } else { + if (intakeDeploySubsystem.isCalibrated && intakeDeploySubsystem.getCurrentValue().lt(collectorAngle.get())) { collectorMotor.setPower(0.0); + + } else { + collectorMotor.setPower(power); } } From 1f4274e582018c491f42f37b9975e715501c7a37 Mon Sep 17 00:00:00 2001 From: Jonah I Date: Tue, 24 Mar 2026 19:13:24 -0700 Subject: [PATCH 5/5] -90 probably works --- .../subsystems/collector_intake/CollectorSubsystem.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java b/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java index ce530e25..3016e8f5 100644 --- a/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java +++ b/src/main/java/competition/subsystems/collector_intake/CollectorSubsystem.java @@ -45,7 +45,8 @@ public CollectorSubsystem(ElectricalContract electricalContract, intakePower = pf.createPersistentProperty("FuelIntakePower", 1); ejectPower = pf.createPersistentProperty("FuelEjectPower", -1); - collectorAngle = pf.createPersistentProperty("CollectorAngle", Degrees.of(90)); + collectorAngle = pf.createPersistentProperty("CollectorAngle", Degrees.of(-90)); + // collector angle should be tuned to what a safe angle for the collector will be, -90 is just a safe bet. } public void intake() { @@ -66,7 +67,7 @@ public void setPower(double power) { } - if (intakeDeploySubsystem.isCalibrated && intakeDeploySubsystem.getCurrentValue().lt(collectorAngle.get())) { + if (intakeDeploySubsystem.isCalibrated && intakeDeploySubsystem.getCurrentValue().gt(collectorAngle.get())) { collectorMotor.setPower(0.0); } else {