added limelight

This commit is contained in:
2026-06-04 20:57:19 -05:00
parent 3ab905af0c
commit e25b372eca
6 changed files with 57 additions and 6 deletions

View File

@@ -337,6 +337,8 @@ public class Auto12BallPedroPathing extends LinearOpMode {
initializePoses(); initializePoses();
follower.setPose(startPose); follower.setPose(startPose);
buildPaths(); buildPaths();
// turret.switchPipeline(Turret.PipelineMode.OBELISK);
robot.limelight.start();
sleep(2000); sleep(2000);
// turret.setTurret(turrDefault); // turret.setTurret(turrDefault);

View File

@@ -326,6 +326,8 @@ public class Auto12Ball_Back_Sorted extends LinearOpMode {
initializePoses(); initializePoses();
follower.setPose(startPose); follower.setPose(startPose);
buildPaths(); buildPaths();
// turret.switchPipeline(Turret.PipelineMode.OBELISK);
robot.limelight.start();
sleep(2000); sleep(2000);
} }

View File

@@ -16,6 +16,8 @@ import org.firstinspires.ftc.teamcode.constants.Color;
import org.firstinspires.ftc.teamcode.pedroPathing.Constants; import org.firstinspires.ftc.teamcode.pedroPathing.Constants;
import org.firstinspires.ftc.teamcode.utilsv2.*; import org.firstinspires.ftc.teamcode.utilsv2.*;
import static org.firstinspires.ftc.teamcode.utilsv2.Turret.limelightUsed;
@TeleOp @TeleOp
@Config @Config
public class TeleopV4 extends LinearOpMode { public class TeleopV4 extends LinearOpMode {
@@ -60,6 +62,10 @@ public class TeleopV4 extends LinearOpMode {
spindexerTransferIntake = new SpindexerTransferIntake(robot, TELE, commander); spindexerTransferIntake = new SpindexerTransferIntake(robot, TELE, commander);
spindexerTransferIntake.setSpindexerMode(SpindexerTransferIntake.SpindexerMode.RAPID); spindexerTransferIntake.setSpindexerMode(SpindexerTransferIntake.SpindexerMode.RAPID);
turret.switchPipeline(Turret.PipelineMode.TRACKING);
robot.limelight.start();
limelightUsed = false;
waitForStart(); waitForStart();
@@ -112,6 +118,12 @@ public class TeleopV4 extends LinearOpMode {
); );
} }
if (gamepad2.leftBumperWasPressed()){
limelightUsed = false;
} else if (gamepad2.rightBumperWasPressed()){
limelightUsed = true;
}
if (gamepad1.dpad_down){ if (gamepad1.dpad_down){
parkTilter.park(); parkTilter.park();
} else if (gamepad1.dpad_up) { } else if (gamepad1.dpad_up) {

View File

@@ -3,6 +3,7 @@ package org.firstinspires.ftc.teamcode.tests;
import static org.firstinspires.ftc.teamcode.constants.Front_Poses.teleStartPoseH; import static org.firstinspires.ftc.teamcode.constants.Front_Poses.teleStartPoseH;
import static org.firstinspires.ftc.teamcode.constants.Front_Poses.teleStartPoseX; import static org.firstinspires.ftc.teamcode.constants.Front_Poses.teleStartPoseX;
import static org.firstinspires.ftc.teamcode.constants.Front_Poses.teleStartPoseY; import static org.firstinspires.ftc.teamcode.constants.Front_Poses.teleStartPoseY;
import static org.firstinspires.ftc.teamcode.utilsv2.Turret.limelightUsed;
import com.acmerobotics.dashboard.FtcDashboard; import com.acmerobotics.dashboard.FtcDashboard;
import com.acmerobotics.dashboard.config.Config; import com.acmerobotics.dashboard.config.Config;
@@ -63,6 +64,11 @@ public class NewShooterTest extends LinearOpMode {
spindexerTransferIntake = new SpindexerTransferIntake(robot, TELE, commander); spindexerTransferIntake = new SpindexerTransferIntake(robot, TELE, commander);
spindexerTransferIntake.setSpindexerMode(SpindexerTransferIntake.SpindexerMode.RAPID); spindexerTransferIntake.setSpindexerMode(SpindexerTransferIntake.SpindexerMode.RAPID);
turret.switchPipeline(Turret.PipelineMode.TRACKING);
robot.limelight.start();
limelightUsed = true;
waitForStart(); waitForStart();
if (isStopRequested()) return; if (isStopRequested()) return;
@@ -83,6 +89,12 @@ public class NewShooterTest extends LinearOpMode {
shooter.update(robot.voltage.getVoltage()); shooter.update(robot.voltage.getVoltage());
spindexerTransferIntake.update(); spindexerTransferIntake.update();
if (gamepad2.leftBumperWasPressed()){
limelightUsed = false;
} else if (gamepad2.rightBumperWasPressed()){
limelightUsed = true;
}
SpindexerTransferIntake.RapidMode state = spindexerTransferIntake.getRapidState(); SpindexerTransferIntake.RapidMode state = spindexerTransferIntake.getRapidState();
if (gamepad1.leftBumperWasPressed() && if (gamepad1.leftBumperWasPressed() &&

View File

@@ -43,13 +43,13 @@ public class Shooter {
if (this.red) { if (this.red) {
goalX = 144; goalX = 144;
turretGoalX = 136; turretGoalX = 140;
} else { } else {
goalX = 0; goalX = 0;
turretGoalX = 8; turretGoalX = 8;
} }
goalY = 144; goalY = 144;
turretGoalY = 136; turretGoalY = 132;
} }
private double flywheelVelocity = 0.0; private double flywheelVelocity = 0.0;

View File

@@ -11,7 +11,6 @@ import com.qualcomm.robotcore.util.Range;
import org.firstinspires.ftc.teamcode.constants.Color; import org.firstinspires.ftc.teamcode.constants.Color;
import org.firstinspires.ftc.teamcode.teleop.TeleopV3;
import java.util.List; import java.util.List;
@@ -25,7 +24,6 @@ public class Turret {
private final double turretMax = 0.95; private final double turretMax = 0.95;
public static boolean limelightUsed = true; public static boolean limelightUsed = true;
public static double B_PID_P = 0.08, B_PID_I = 0.0, B_PID_D = 0.007; public static double B_PID_P = 0.08, B_PID_I = 0.0, B_PID_D = 0.007;
Limelight3A webcam;
LLResult result; LLResult result;
PIDController bearingPID; PIDController bearingPID;
boolean bearingAligned = false; boolean bearingAligned = false;
@@ -49,6 +47,7 @@ public class Turret {
public Turret(Robot rob) { public Turret(Robot rob) {
this.robot = rob; this.robot = rob;
bearingPID = new PIDController(B_PID_P, B_PID_I, B_PID_D);
} }
private double wrapAngle(double angle) { private double wrapAngle(double angle) {
@@ -58,7 +57,8 @@ public class Turret {
} }
private void limelightRead() { // only for tracking purposes, not general reads private void limelightRead() { // only for tracking purposes, not general reads
result = webcam.getLatestResult(); switchPipeline(PipelineMode.TRACKING);
result = robot.limelight.getLatestResult();
tx = 1000; tx = 1000;
if (result != null) { if (result != null) {
if (result.isValid()) { if (result.isValid()) {
@@ -67,6 +67,29 @@ public class Turret {
} }
} }
public enum PipelineMode{
OBELISK,
TRACKING
}
private int prevPipeline = 0;
public void switchPipeline(PipelineMode pipelineMode){
int pipeline = 0;
if (pipelineMode == PipelineMode.OBELISK){
pipeline = 1;
} else if (pipelineMode == PipelineMode.TRACKING){
if (Color.redAlliance){
pipeline = 4;
} else {
pipeline = 2;
}
}
if (pipeline == 0){prevPipeline = 0;}
if (pipeline != prevPipeline){
robot.limelight.pipelineSwitch(pipeline);
}
}
public void trackObelisk(double dx, double dy, double h) { public void trackObelisk(double dx, double dy, double h) {
double heading = wrapAngle(h); double heading = wrapAngle(h);
@@ -95,7 +118,7 @@ public class Turret {
} }
private int detectObelisk() { private int detectObelisk() {
robot.limelight.pipelineSwitch(1); switchPipeline(PipelineMode.OBELISK);
result = robot.limelight.getLatestResult(); result = robot.limelight.getLatestResult();
if (result != null && result.isValid()) { if (result != null && result.isValid()) {
List<LLResultTypes.FiducialResult> fiducials = result.getFiducialResults(); List<LLResultTypes.FiducialResult> fiducials = result.getFiducialResults();