Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5c3b9ac
added auto selector knob
Xander99-9 Jan 17, 2026
c5aa373
Merge branch 'main' into Auto
Xander99-9 Jan 17, 2026
85d0dc8
Create wpilib_preferences.json
Xander99-9 Feb 5, 2026
e6625bd
Merge branch 'main' into Auto
Xander99-9 Feb 5, 2026
120bae6
Fixed formatting things as requested in PR
Xander99-9 Feb 5, 2026
ef8e2f4
Merge pull request #31 from FRC2706/Auto
Xander99-9 Feb 5, 2026
fbca883
added value to constants
Xander99-9 Feb 7, 2026
dd9007d
Merge pull request #37 from FRC2706/Auto
Xander99-9 Feb 7, 2026
df4bba9
moving stuff from old shooter branch
aquaseals Feb 7, 2026
2800811
Deleted unecessary imports in shooter subsytstem.
Aadhya-Sure Feb 12, 2026
8bef29a
added documentation to the state machine
AnishaJ44 Feb 12, 2026
c8c3fc1
added documentation
AnishaJ44 Feb 12, 2026
0ac794f
Merge branch 'shooter-develop-2' of https://github.com/FRC2706/2026-2…
AnishaJ44 Feb 12, 2026
bb0708a
added motor names
AnishaJ44 Feb 12, 2026
d15313f
Added boolean supplier import
Aadhya-Sure Feb 14, 2026
2c15904
added stop command
aquaseals Feb 14, 2026
9b99135
Merge branch 'shooter-develop-2' of https://github.com/FRC2706/2026-2…
aquaseals Feb 14, 2026
7e34c6e
Added default settins and initiated motor controllers. Still Need to …
Aadhya-Sure Feb 14, 2026
9921e1f
Merge branch 'shooter-develop-2' of https://github.com/FRC2706/2026-2…
Aadhya-Sure Feb 14, 2026
8100182
adding shooter commands, restructured shooter subystem
aquaseals Feb 14, 2026
1ae5ca3
Merge branch 'shooter-develop-2' of https://github.com/FRC2706/2026-2…
aquaseals Feb 14, 2026
e310535
added to startShooter command, added checks for if the RPM is in desi…
AnishaJ44 Feb 14, 2026
47661ad
Added motor controllers, started defining motor constants, used holde…
Aadhya-Sure Feb 14, 2026
7cb5f1e
Merge branch 'shooter-develop-2' of https://github.com/FRC2706/2026-2…
Aadhya-Sure Feb 14, 2026
208dc81
restructured without state machine
AnishaJ44 Feb 14, 2026
e4445a1
Merge branch 'shooter-develop-2' of https://github.com/FRC2706/2026-2…
AnishaJ44 Feb 14, 2026
0fa8054
shooter subsystem methods working
AnishaJ44 Feb 14, 2026
a2d8b66
implemented transition b/w spinningUp and ready method in shootersubs…
AnishaJ44 Feb 14, 2026
04f0d22
removed state machine comments
AnishaJ44 Feb 14, 2026
869204d
Added button mapping
Aadhya-Sure Feb 19, 2026
631646a
Add PID variables and set motor 2 to follow motor1
Aadhya-Sure Feb 21, 2026
e67c0cb
removed state machine
Aadhya-Sure Feb 21, 2026
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
Binary file added .DS_Store
Binary file not shown.
Binary file added .gradle/8.11/checksums/checksums.lock
Binary file not shown.
Binary file added .gradle/8.11/checksums/md5-checksums.bin
Binary file not shown.
Binary file added .gradle/8.11/checksums/sha1-checksums.bin
Binary file not shown.
Binary file added .gradle/8.11/executionHistory/executionHistory.lock
Binary file not shown.
Binary file added .gradle/8.11/fileChanges/last-build.bin
Binary file not shown.
Binary file added .gradle/8.11/fileHashes/fileHashes.lock
Binary file not shown.
Empty file added .gradle/8.11/gc.properties
Empty file.
Binary file added .gradle/buildOutputCleanup/buildOutputCleanup.lock
Binary file not shown.
2 changes: 2 additions & 0 deletions .gradle/buildOutputCleanup/cache.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#Sat Feb 07 15:30:15 EST 2026
gradle.version=8.11
Binary file added .gradle/file-system.probe
Binary file not shown.
Empty file added .gradle/vcs-1/gc.properties
Empty file.
6 changes: 6 additions & 0 deletions .wpilib/wpilib_preferences.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this shouldn't be committed either. We need to keep the projectYear and currentLanguage set, as it is now in the codebase.

"currentLanguage": "none",
"enableCppIntellisense": false,
"projectYear": "none",
"teamNumber": 2706
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this file should be deleted.

Empty file.
92 changes: 92 additions & 0 deletions 2026-2706-Robot-Code/simgui-ds.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
{
"keyboardJoysticks": [
{
"axisConfig": [
{
"decKey": 65,
"incKey": 68
},
{
"decKey": 87,
"incKey": 83
},
{
"decKey": 69,
"decayRate": 0.0,
"incKey": 82,
"keyRate": 0.009999999776482582
}
],
"axisCount": 3,
"buttonCount": 4,
"buttonKeys": [
90,
88,
67,
86
],
"povConfig": [
{
"key0": 328,
"key135": 323,
"key180": 322,
"key225": 321,
"key270": 324,
"key315": 327,
"key45": 329,
"key90": 326
}
],
"povCount": 1
},
{
"axisConfig": [
{
"decKey": 74,
"incKey": 76
},
{
"decKey": 73,
"incKey": 75
}
],
"axisCount": 2,
"buttonCount": 4,
"buttonKeys": [
77,
44,
46,
47
],
"povCount": 0
},
{
"axisConfig": [
{
"decKey": 263,
"incKey": 262
},
{
"decKey": 265,
"incKey": 264
}
],
"axisCount": 2,
"buttonCount": 6,
"buttonKeys": [
260,
268,
266,
261,
269,
267
],
"povCount": 0
},
{
"axisCount": 0,
"buttonCount": 0,
"povCount": 0
}
]
}
41 changes: 40 additions & 1 deletion 2026-2706-Robot-Code/src/main/java/frc/robot/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,45 @@
*/
public final class Constants {
public static class OperatorConstants {
public static final int kDriverControllerPort = 0;
public static final int kDriverControllerPort = 0;
public static final int kOperatorControllerPort = 1;
}
public static class RobotConstants {
public static final int kSelectorSwitchPort = 0;
}

public static final class CANID {

public static final int SHOOTER1 = 31;
public static final int SHOOTER2 = 15;
public static final int FEEDER = 40;
//public static final int INDEXER = 27;

}

public static final class shooterConstants {

public static final byte MOTOR1_ID = CANID.SHOOTER1;
public static final byte MOTOR2_ID = CANID.SHOOTER2;
public static final byte FEEDER_MOTOR_ID = CANID.FEEDER;
//public static final byte INDEXER_MOTOR_ID = CANID.INDEXER;

// PID VALUES

public static final double kP1 = 0,
kI1 = 0,
kD1 = 0,
kFF1 = 0,
kP2 = 0,
kI2 = 0,
kD2 = 0,
kFF2 = 0,
kP3 = 0,
kI3 = 0,
kD3 = 0,
kFF3 = 0;
}



}
10 changes: 9 additions & 1 deletion 2026-2706-Robot-Code/src/main/java/frc/robot/Robot.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.CommandScheduler;


/**
* The methods in this class are called automatically corresponding to each mode, as described in
* the TimedRobot documentation. If you change the name of this class or the package after creating
Expand All @@ -16,6 +17,8 @@
public class Robot extends TimedRobot {
private Command m_autonomousCommand;



private final RobotContainer m_robotContainer;

/**
Expand All @@ -25,9 +28,13 @@ public class Robot extends TimedRobot {
public Robot() {
// Instantiate our RobotContainer. This will perform all our button bindings, and put our
// autonomous chooser on the dashboard.
System.out.println("shooter system initialized");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should remove print statements, if we want to log things we should use a separate logging system.

m_robotContainer = new RobotContainer();


}


/**
* This function is called every 20 ms, no matter the mode. Use this for items like diagnostics
* that you want ran during disabled, autonomous, teleoperated and test.
Expand Down Expand Up @@ -79,7 +86,8 @@ public void teleopInit() {

/** This function is called periodically during operator control. */
@Override
public void teleopPeriodic() {}
public void teleopPeriodic() {
}

@Override
public void testInit() {
Expand Down
92 changes: 77 additions & 15 deletions 2026-2706-Robot-Code/src/main/java/frc/robot/RobotContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,28 @@
package frc.robot;

import frc.robot.Constants.OperatorConstants;

import frc.robot.commands.Autos;
import frc.robot.commands.ExampleCommand;
import edu.wpi.first.wpilibj2.command.PrintCommand;


import frc.robot.subsystems.ExampleSubsystem;
import frc.robot.subsystems.AutoSelectorKnobSubsystem;
import frc.robot.subsystems.ShooterSubsystem;

import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.Commands;
import edu.wpi.first.wpilibj2.command.button.CommandXboxController;
import edu.wpi.first.wpilibj2.command.button.Trigger;
import frc.robot.commands.startShooter;
import frc.robot.commands.stopShooter;







/**
* This class is where the bulk of the robot should be declared. Since Command-based is a
Expand All @@ -20,11 +36,16 @@
*/
public class RobotContainer {
// The robot's subsystems and commands are defined here...
private final ExampleSubsystem m_exampleSubsystem = new ExampleSubsystem();
//private final ExampleSubsystem m_exampleSubsystem = new ExampleSubsystem();
private final AutoSelectorKnobSubsystem m_AutoSelectorKnobSubsystem = new AutoSelectorKnobSubsystem();


private final CommandXboxController m_operatorController = new CommandXboxController(OperatorConstants.kOperatorControllerPort);
private final ShooterSubsystem m_ShooterSubsystem = new ShooterSubsystem();

// Replace with CommandPS4Controller or CommandJoystick if needed
private final CommandXboxController m_driverController =
new CommandXboxController(OperatorConstants.kDriverControllerPort);
// private final CommandXboxController m_driverController =
// new CommandXboxController(OperatorConstants.kDriverControllerPort);

/** The container for the robot. Contains subsystems, OI devices, and commands. */
public RobotContainer() {
Expand All @@ -43,21 +64,62 @@ public RobotContainer() {
*/
private void configureBindings() {
// Schedule `ExampleCommand` when `exampleCondition` changes to `true`
new Trigger(m_exampleSubsystem::exampleCondition)
.onTrue(new ExampleCommand(m_exampleSubsystem));
//new Trigger(m_exampleSubsystem::exampleCondition)
//.onTrue(new ExampleCommand(m_exampleSubsystem));

// Schedule `exampleMethodCommand` when the Xbox controller's B button is pressed,
// cancelling on release.
m_driverController.b().whileTrue(m_exampleSubsystem.exampleMethodCommand());
//m_driverController.b().whileTrue(m_exampleSubsystem.exampleMethodCommand());

m_operatorController.a().whileTrue(new startShooter(m_ShooterSubsystem)).onFalse(new stopShooter(m_ShooterSubsystem));


}

/**
* Use this to pass the autonomous command to the main {@link Robot} class.
*
* @return the command to run in autonomous
*/


/** This function returns the autonomous command based on the knob position. */
public Command getAutonomousCommand() {
// An example command will be run in autonomous
return Autos.exampleAuto(m_exampleSubsystem);
}
}
int mode = m_AutoSelectorKnobSubsystem.getAutoMode();
System.out.println("Auto Mode = " + mode); // debug print

switch (mode) {
case 0:
return null; // do nothing
case 1:
return new PrintCommand("1");
//DriveDistance(39, 0.3, m_robotDrive);
case 2:
return new PrintCommand("2");
//DriveTimed(2.0, 0.3, m_robotDrive);
case 3:
return new PrintCommand("3");
//null;
case 4:
return new PrintCommand("4");
//null;
case 5:
return new PrintCommand("5");
//null;
case 6:
return new PrintCommand("6");
//null;
case 7:
return new PrintCommand("7");
//null;
case 8:
return new PrintCommand("8");
//null;
case 9:
return new PrintCommand("9");
//null;
case 10:
return new PrintCommand("10");
//null;
case 11:
return new PrintCommand("11");
//null;
default:
return null;
}}}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: All java classes should be "PascalCase" (aka. first letter of every word should be capitalized) and methods should be camelCase (aka. first letter of every word, except for the first one, should be capitalized)

Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.

package frc.robot.commands;

import frc.robot.subsystems.ShooterSubsystem;
import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.RunCommand;

import java.util.concurrent.TimeUnit;


/** An example command that uses an example subsystem. */
Copy link
Contributor

@GabbyGenereux GabbyGenereux Feb 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets update the comments with something more applicable to the current command/class

public class startShooter extends Command {
@SuppressWarnings("PMD.UnusedPrivateField")
private final ShooterSubsystem m_ShooterSubystsem;

/**
* Creates a new ExampleCommand.
*
* @param subsystem The subsystem used by this command.
*/
public startShooter(ShooterSubsystem subsystem) {
m_ShooterSubystsem = subsystem;
// Use addRequirements() here to declare subsystem dependencies.
addRequirements(m_ShooterSubystsem);
}

// Called when the command is initially scheduled.
@Override
public void initialize() {

}


// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
System.out.println("in startShooter command");
if (m_ShooterSubystsem.isRPMinRange()) {
m_ShooterSubystsem.ready();
} else {
m_ShooterSubystsem.spinningUp();
}
}



// Called once the command ends or is interrupted.
@Override
public void end(boolean interrupted) {}

// Returns true when the command should end.
@Override
public boolean isFinished() {
return false;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this should return true when the command should end, and we just return false, does that mean the command never ends?

}
}

Loading