Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
20b464f
Update LimelightHelpers.java
Seqii Jan 26, 2026
0270239
start to code auto align
Nonochen0104 Jan 27, 2026
3ab3a8c
Coded auto align, also commented for most of them. Need correction wi…
Nonochen0104 Jan 29, 2026
fd480be
Add PID controller for correct radius & feedforward with angular velo…
Nonochen0104 Jan 30, 2026
6da7d15
Fixed the swervemodules
Nonochen0104 Jan 31, 2026
0b3e9c1
rezeroed
Nonochen0104 Jan 31, 2026
7b57335
Added SmartDashboard "New Offset"
Seqii Feb 2, 2026
1871628
rename
Seqii Feb 2, 2026
8b5fc7c
Adjust distance away from hub
Nonochen0104 Feb 2, 2026
89629f6
Merge branch 'AutoAlign' of https://github.com/mparobotics/2026-Rebui…
Nonochen0104 Feb 2, 2026
a05ec42
Re-Zero
Seqii Feb 4, 2026
78b0413
Update translation2d.
Nonochen0104 Feb 6, 2026
fca8604
fixed some comments
Nonochen0104 Feb 11, 2026
43c5d24
update ids to the Rebuilt drivebase values.
Nonochen0104 Feb 14, 2026
6cc9bde
Update Constants.java
Nonochen0104 Feb 14, 2026
a6b3ecb
Autonomous (#16)
Nonochen0104 Feb 14, 2026
24fa677
fixed mistake in merge conflict
Seqii Feb 14, 2026
a2810d9
Revert "fixed mistake in merge conflict"
Seqii Feb 14, 2026
1e40a3e
Revert "Autonomous (#16)"
Seqii Feb 14, 2026
54fb350
Merge branch 'main' into REBUILT-DriveBase
Seqii Feb 14, 2026
245f909
Add overloaded saveModuleOffsets method
Seqii Feb 14, 2026
4945306
Pathplanner (autonomous)
Nonochen0104 Feb 15, 2026
8139582
Cleaned up things a little
Nonochen0104 Feb 15, 2026
c493164
Add DriveTestAuto
Nonochen0104 Feb 15, 2026
8cf1e38
changed one id so it doesn't interfere
Nonochen0104 Feb 16, 2026
5c519d6
Fixed the problem with swerve module 1
Nonochen0104 Feb 19, 2026
a17b338
Merge branch 'NonoAuto' into REBUILT-DriveBase
Seqii Feb 19, 2026
94559db
Merge pull request #21 from mparobotics/REBUILT-DriveBase
Nonochen0104 Feb 19, 2026
5270cca
Leave auto (coded manually) worked out great, still figuring out with…
Nonochen0104 Feb 20, 2026
8b3122d
Merge branch 'main' into NonoAuto
Nonochen0104 Feb 20, 2026
379cecc
Changed the translation2d for the drivebase
rainingmika Feb 20, 2026
d0187b5
fix module 0 for the fall-drivebase
Nonochen0104 Feb 21, 2026
4091905
Fix swerve
Nonochen0104 Feb 21, 2026
ad48494
Merge branch 'practice-drivebase' into NonoAuto
Seqii Feb 21, 2026
90541d4
Revert "Merge branch 'practice-drivebase' into NonoAuto"
Nonochen0104 Feb 21, 2026
5c63c21
updated to 2026.2.1
Nonochen0104 Feb 21, 2026
7427191
Created a center to depot auto.
Nonochen0104 Feb 23, 2026
067382c
Coded an auto that start in front of the trench
Nonochen0104 Feb 23, 2026
a656c6e
set the default alliance to BLUE alliance instead of red
Nonochen0104 Feb 23, 2026
1a5ec01
RobotSimulation for this branch
Nonochen0104 Feb 23, 2026
1c97a46
Adjusted drive speed & auto align position
Nonochen0104 Feb 24, 2026
d205f8b
Add indexer motor (will need speed tuning)
Seqii Feb 26, 2026
cc34611
set up limelight
Nonochen0104 Feb 26, 2026
1dda195
Changed the controller a little
Nonochen0104 Feb 27, 2026
8eb46a9
Contants fix and potential alt auto align
Seqii Feb 27, 2026
bf4f8fe
update gitignore with sim files
Seqii Feb 27, 2026
c09c7c1
robot container code
Nonochen0104 Feb 28, 2026
0c4d359
changed the IDs for the kicker and the indexer and the helms controller
Nonochen0104 Feb 28, 2026
598357a
testing
Nonochen0104 Feb 28, 2026
d058c61
testing
Nonochen0104 Feb 28, 2026
a3997ab
testing
Nonochen0104 Feb 28, 2026
f68db0c
ID change
Nonochen0104 Feb 28, 2026
b1fa452
made intake arm work
rainingmika Feb 28, 2026
789a3d0
Controller, intake, shooter
Nonochen0104 Feb 28, 2026
2503ba8
week 0
rainingmika Feb 28, 2026
79b030a
week0
rainingmika Feb 28, 2026
9d52ee7
Changed wpilib language settings to java
Seqii Mar 1, 2026
df47ce2
Added offsetDepotAuto, fixed gitignore spelling mistake.
Seqii Mar 1, 2026
e31447f
fixed no project year in wpilib_preferences
Seqii Mar 1, 2026
a9b92a4
changed the intake arm to how the hood is moving
Nonochen0104 Mar 3, 2026
b185a96
changed limelight name
Nonochen0104 Mar 3, 2026
993efcf
tuned the intake arm
rainingmika Mar 3, 2026
47fb2ac
limelight
Nonochen0104 Mar 4, 2026
093d2f3
add shooting auto and limelight vision
Nonochen0104 Mar 4, 2026
e78d2e3
commit
Nonochen0104 Mar 4, 2026
ec1f053
auto change
rainingmika Mar 4, 2026
297dbc4
e
rainingmika Mar 4, 2026
4d2d043
Revert "e"
rainingmika Mar 4, 2026
69a9760
auto
Nonochen0104 Mar 4, 2026
b820738
reallemonauto
Nonochen0104 Mar 4, 2026
781bfb8
changed for the indexer to go 1 second after the kicker, added the li…
Nonochen0104 Mar 5, 2026
64511b6
changed from mt2 back to mt1
rainingmika Mar 5, 2026
a3d7c58
duluth
rainingmika Mar 5, 2026
8094e80
add left bumper to go reverse
Nonochen0104 Mar 5, 2026
ee01b0f
fixed auto align and added hood angle and made auto move
Seqii Mar 6, 2026
10a547e
fix shooter
Nonochen0104 Mar 6, 2026
70d6d78
increased intake speed
rainingmika Mar 6, 2026
680378f
added auto
rainingmika Mar 6, 2026
82c8db8
changed speed, auto setup on constants
rainingmika Mar 6, 2026
baa0a90
tuned the rotation speed down
rainingmika Mar 6, 2026
adec40b
edit hood angle
rainingmika Mar 6, 2026
6cb76fb
Moved unused autonomous into unused folder, add a centerlemonauto
rainingmika Mar 6, 2026
b60c7ef
center auto
rainingmika Mar 7, 2026
17e8da0
changed auto distance
rainingmika Mar 7, 2026
750b679
tuned auto distance
rainingmika Mar 7, 2026
e62d526
Merge branch 'main' into pre-duluth
Seqii Mar 10, 2026
a49cfda
removed ctre_sim files
Seqii Mar 10, 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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,6 @@ Thumbs.db

# VS Code Settings
.vscode/

# sim files
.ctre_sim/
4 changes: 2 additions & 2 deletions .wpilib/wpilib_preferences.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"currentLanguage": "none",
"currentLanguage": "java",
"enableCppIntellisense": false,
"projectYear": "none",
"projectYear": "2026",
"teamNumber": 3926
}
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
id "java"
id "edu.wpi.first.GradleRIO" version "2026.1.1"
id "edu.wpi.first.GradleRIO" version "2026.2.1"
}

java {
Expand Down
Binary file removed ctre_sim/CANCoder vers. H - 019 - 0 - ext.dat
Binary file not shown.
Binary file removed ctre_sim/CANCoder vers. H - 020 - 0 - ext.dat
Binary file not shown.
Binary file removed ctre_sim/CANCoder vers. H - 021 - 0 - ext.dat
Binary file not shown.
Binary file removed ctre_sim/CANCoder vers. H - 022 - 0 - ext.dat
Binary file not shown.
Binary file removed ctre_sim/Pigeon 2 - 023 - 0 - ext.dat
Binary file not shown.
2 changes: 1 addition & 1 deletion src/main/deploy/pathplanner/navgrid.json

Large diffs are not rendered by default.

54 changes: 54 additions & 0 deletions src/main/deploy/pathplanner/paths/GoToDepot.path
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"version": "2025.0",
"waypoints": [
{
"anchor": {
"x": 3.555,
"y": 6.34
},
"prevControl": null,
"nextControl": {
"x": 3.618047995229281,
"y": 5.549921996799937
},
"isLocked": false,
"linkedName": null
},
{
"anchor": {
"x": 0.8138370036801503,
"y": 5.961968906269622
},
"prevControl": {
"x": 2.076736993577922,
"y": 6.092338697684089
},
"nextControl": null,
"isLocked": false,
"linkedName": null
}
],
"rotationTargets": [],
"constraintZones": [],
"pointTowardsZones": [],
"eventMarkers": [],
"globalConstraints": {
"maxVelocity": 3.0,
"maxAcceleration": 3.0,
"maxAngularVelocity": 540.0,
"maxAngularAcceleration": 720.0,
"nominalVoltage": 12.0,
"unlimited": false
},
"goalEndState": {
"velocity": 0,
"rotation": 179.0798355625638
},
"reversed": false,
"folder": "Offset Depot",
"idealStartingState": {
"velocity": 0,
"rotation": -0.19916319085310868
},
"useDefaultConstraints": true
}
54 changes: 54 additions & 0 deletions src/main/deploy/pathplanner/paths/ShootAfterDepot.path
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"version": "2025.0",
"waypoints": [
{
"anchor": {
"x": 0.814,
"y": 5.962
},
"prevControl": null,
"nextControl": {
"x": 2.26670189525463,
"y": 5.905031394675925
},
"isLocked": false,
"linkedName": null
},
{
"anchor": {
"x": 2.7384416232638893,
"y": 4.878029730902778
},
"prevControl": {
"x": 2.4099296875000005,
"y": 5.91428247974537
},
"nextControl": null,
"isLocked": false,
"linkedName": null
}
],
"rotationTargets": [],
"constraintZones": [],
"pointTowardsZones": [],
"eventMarkers": [],
"globalConstraints": {
"maxVelocity": 3.0,
"maxAcceleration": 3.0,
"maxAngularVelocity": 540.0,
"maxAngularAcceleration": 720.0,
"nominalVoltage": 12.0,
"unlimited": false
},
"goalEndState": {
"velocity": 0,
"rotation": 57.826290910926296
},
"reversed": false,
"folder": "Offset Depot",
"idealStartingState": {
"velocity": 0,
"rotation": -0.19916319085310868
},
"useDefaultConstraints": true
}
34 changes: 34 additions & 0 deletions src/main/deploy/pathplanner/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"robotWidth": 0.9,
"robotLength": 0.9,
"holonomicMode": true,
"pathFolders": [
"Offset Depot"
],
"autoFolders": [],
"defaultMaxVel": 3.0,
"defaultMaxAccel": 3.0,
"defaultMaxAngVel": 540.0,
"defaultMaxAngAccel": 720.0,
"defaultNominalVoltage": 12.0,
"robotMass": 74.088,
"robotMOI": 6.883,
"robotTrackwidth": 0.546,
"driveWheelRadius": 0.048,
"driveGearing": 5.143,
"maxDriveSpeed": 5.45,
"driveMotorType": "krakenX60",
"driveCurrentLimit": 60.0,
"wheelCOF": 1.2,
"flModuleX": 0.273,
"flModuleY": 0.273,
"frModuleX": 0.273,
"frModuleY": -0.273,
"blModuleX": -0.273,
"blModuleY": 0.273,
"brModuleX": -0.273,
"brModuleY": -0.273,
"bumperOffsetX": 0.0,
"bumperOffsetY": 0.0,
"robotFeatures": []
}
49 changes: 49 additions & 0 deletions src/main/java/frc/robot/Auto/CenterLemonAuto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// 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.Auto;

import edu.wpi.first.math.MathUtil;
import edu.wpi.first.wpilibj2.command.Commands;
import edu.wpi.first.wpilibj2.command.InstantCommand;
import edu.wpi.first.wpilibj2.command.SequentialCommandGroup;
import frc.robot.Constants.ShooterConstants;
import frc.robot.Constants.SwerveConstants;
import frc.robot.Subsystems.IntakeSubsystem;
import frc.robot.Subsystems.ShooterSubsystem;
import frc.robot.Subsystems.SwerveSubsystem;

public class CenterLemonAuto extends SequentialCommandGroup {

public CenterLemonAuto(SwerveSubsystem drive, IntakeSubsystem intake, ShooterSubsystem shooter) {
addCommands(
new InstantCommand(()->drive.drive(0, 0.4,0, false), drive),
Commands.waitSeconds(2),
new InstantCommand(()->drive.drive(0,0,0, false),drive),

Commands.runOnce(() -> shooter.setHoodAngle(ShooterSubsystem.HoodAngle.LOW), shooter),
Commands.runOnce(() -> {
shooter.runIndexer(false);
shooter.runKicker(false);
}, shooter),
Commands.run(() -> shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED), shooter)
.until(() -> shooter.getShooterVelocityRpm() >= ShooterConstants.SHOOTER_READY_RPM)
.withTimeout(2.0),

Commands.sequence(
// Start kicker first, then start indexer 1 second later (kicker keeps running).
Commands.run(() -> {
shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED);
shooter.setKickerSpeed(ShooterConstants.KICKER_SPEED);
shooter.setIndexerSpeed(0.0);
}, shooter).withTimeout(1.0),
Commands.run(() -> {
shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED);
shooter.setKickerSpeed(ShooterConstants.KICKER_SPEED);
shooter.setIndexerSpeed(ShooterConstants.INDEXER_SPEED);
}, shooter)
)
);
}
}
61 changes: 61 additions & 0 deletions src/main/java/frc/robot/Auto/LeftLemonAuto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// 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.Auto;

import edu.wpi.first.math.MathUtil;
import edu.wpi.first.wpilibj2.command.Commands;
import edu.wpi.first.wpilibj2.command.InstantCommand;
import edu.wpi.first.wpilibj2.command.SequentialCommandGroup;
import frc.robot.Constants.ShooterConstants;
import frc.robot.Constants.SwerveConstants;
import frc.robot.Subsystems.IntakeSubsystem;
import frc.robot.Subsystems.ShooterSubsystem;
import frc.robot.Subsystems.SwerveSubsystem;

public class LeftLemonAuto extends SequentialCommandGroup {

public LeftLemonAuto(SwerveSubsystem drive, IntakeSubsystem intake, ShooterSubsystem shooter) {
final double[] startYawRad = new double[1];
addCommands(
new InstantCommand(()->drive.drive(-0.5, 0,0, false), drive),
Commands.waitSeconds(2),
new InstantCommand(()->drive.drive(0,0,0, false),drive),
Commands.runOnce(() -> startYawRad[0] = drive.getYaw().getRadians(), drive),
Commands.run(() -> {
double targetYawRad = startYawRad[0] + Math.toRadians(40.0);
double errorRad = MathUtil.angleModulus(targetYawRad - drive.getYaw().getRadians());
double omegaRadiansPerSecond = MathUtil.clamp(errorRad * 4.0, -SwerveConstants.maxAngularVelocity, SwerveConstants.maxAngularVelocity);
drive.drive(0,0, omegaRadiansPerSecond, false);
}, drive).until(() -> {
double targetYawRad = startYawRad[0] + Math.toRadians(40.0);
double errorRad = MathUtil.angleModulus(targetYawRad - drive.getYaw().getRadians());
return Math.abs(errorRad) < Math.toRadians(3.0);
}),
Commands.runOnce(() -> drive.drive(0, 0, 0, false), drive),
Commands.runOnce(() -> shooter.setHoodAngle(ShooterSubsystem.HoodAngle.HIGH), shooter),
Commands.runOnce(() -> {
shooter.runIndexer(false);
shooter.runKicker(false);
}, shooter),
Commands.run(() -> shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED), shooter)
.until(() -> shooter.getShooterVelocityRpm() >= ShooterConstants.SHOOTER_READY_RPM)
.withTimeout(2.0),

Commands.sequence(
// Start kicker first, then start indexer 1 second later (kicker keeps running).
Commands.run(() -> {
shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED);
shooter.setKickerSpeed(ShooterConstants.KICKER_SPEED);
shooter.setIndexerSpeed(0.0);
}, shooter).withTimeout(1.0),
Commands.run(() -> {
shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED);
shooter.setKickerSpeed(ShooterConstants.KICKER_SPEED);
shooter.setIndexerSpeed(ShooterConstants.INDEXER_SPEED);
}, shooter)
)
);
}
}
61 changes: 61 additions & 0 deletions src/main/java/frc/robot/Auto/RightLemonAuto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// 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.Auto;

import edu.wpi.first.math.MathUtil;
import edu.wpi.first.wpilibj2.command.Commands;
import edu.wpi.first.wpilibj2.command.InstantCommand;
import edu.wpi.first.wpilibj2.command.SequentialCommandGroup;
import frc.robot.Constants.ShooterConstants;
import frc.robot.Constants.SwerveConstants;
import frc.robot.Subsystems.IntakeSubsystem;
import frc.robot.Subsystems.ShooterSubsystem;
import frc.robot.Subsystems.SwerveSubsystem;

public class RightLemonAuto extends SequentialCommandGroup {

public RightLemonAuto(SwerveSubsystem drive, IntakeSubsystem intake, ShooterSubsystem shooter) {
final double[] startYawRad = new double[1];
addCommands(
new InstantCommand(()->drive.drive(0.5, 0,0, false), drive),
Commands.waitSeconds(2),
new InstantCommand(()->drive.drive(0,0,0, false),drive),
Commands.runOnce(() -> startYawRad[0] = drive.getYaw().getRadians(), drive),
Commands.run(() -> {
double targetYawRad = startYawRad[0] + Math.toRadians(-30.0);
double errorRad = MathUtil.angleModulus(targetYawRad - drive.getYaw().getRadians());
double omegaRadiansPerSecond = MathUtil.clamp(errorRad * 4.0, -SwerveConstants.maxAngularVelocity, SwerveConstants.maxAngularVelocity);
drive.drive(0,0, omegaRadiansPerSecond, false);
}, drive).until(() -> {
double targetYawRad = startYawRad[0] + Math.toRadians(-30.0);
double errorRad = MathUtil.angleModulus(targetYawRad - drive.getYaw().getRadians());
return Math.abs(errorRad) < Math.toRadians(3.0);
}),
Commands.runOnce(() -> drive.drive(0, 0, 0, false), drive),
Commands.runOnce(() -> shooter.setHoodAngle(ShooterSubsystem.HoodAngle.HIGH), shooter),
Commands.runOnce(() -> {
shooter.runIndexer(false);
shooter.runKicker(false);
}, shooter),
Commands.run(() -> shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED), shooter)
.until(() -> shooter.getShooterVelocityRpm() >= ShooterConstants.SHOOTER_READY_RPM)
.withTimeout(2.0),

Commands.sequence(
// Start kicker first, then start indexer 1 second later (kicker keeps running).
Commands.run(() -> {
shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED);
shooter.setKickerSpeed(ShooterConstants.KICKER_SPEED);
shooter.setIndexerSpeed(0.0);
}, shooter).withTimeout(1.0),
Commands.run(() -> {
shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED);
shooter.setKickerSpeed(ShooterConstants.KICKER_SPEED);
shooter.setIndexerSpeed(ShooterConstants.INDEXER_SPEED);
}, shooter)
)
);
}
}
43 changes: 43 additions & 0 deletions src/main/java/frc/robot/Auto/ShootEightAuto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// 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.Auto;

import edu.wpi.first.wpilibj2.command.Commands;
import edu.wpi.first.wpilibj2.command.SequentialCommandGroup;
import frc.robot.Constants.ShooterConstants;
import frc.robot.Subsystems.IntakeSubsystem;
import frc.robot.Subsystems.ShooterSubsystem;
import frc.robot.Subsystems.SwerveSubsystem;

public class ShootEightAuto extends SequentialCommandGroup {

public ShootEightAuto(SwerveSubsystem drive, IntakeSubsystem intake, ShooterSubsystem shooter) {
final double[] startYawRad = new double[1];
addCommands(
Commands.runOnce(() -> shooter.setHoodAngle(ShooterSubsystem.HoodAngle.HIGH), shooter),
Commands.runOnce(() -> {
shooter.runIndexer(false);
shooter.runKicker(false);
}, shooter),
Commands.run(() -> shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED), shooter)
.until(() -> shooter.getShooterVelocityRpm() >= ShooterConstants.SHOOTER_READY_RPM)
.withTimeout(2.0),

Commands.sequence(
// Start kicker first, then start indexer 1 second later (kicker keeps running).
Commands.run(() -> {
shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED);
shooter.setKickerSpeed(ShooterConstants.KICKER_SPEED);
shooter.setIndexerSpeed(0.0);
}, shooter).withTimeout(1.0),
Commands.run(() -> {
shooter.setShooterSpeed(ShooterConstants.SHOOTER_SPEED);
shooter.setKickerSpeed(ShooterConstants.KICKER_SPEED);
shooter.setIndexerSpeed(ShooterConstants.INDEXER_SPEED);
}, shooter)
)
);
}
}
Loading