sign in
Start typing to search across all 16 weeks…
Summer Project

MiniBot — The Course Project

you're building a real WRT-style robot codebase from scratch across 8 weeks. every week adds a new piece. by week 8, you'll have a fully structured robot program.

What You're Building

MiniBot is a simplified version of our actual FRC robot code. it uses the same patterns, naming conventions, and file structure as WaltonRobotics/Rebuilt. when you're done, your code could be the base of a real robot project.

final project structure
minibot/
├── Constants.java               // Week 1 — all robot constants
├── AutoLogic.java               // Week 2 — if/switch auto selection
├── SensorProcessor.java         // Week 3 — loops + arrays
├── DriveCalculator.java         // Week 4 — static utility methods
├── subsystems/
│   ├── DriveSubsystem.java      // Week 5 — first OOP class
│   └── ShooterSubsystem.java    // Week 6 — inheritance
├── RobotState.java              // Week 7 — enum + interface
└── Robot.java                   // Week 8 — final assembly

Week-by-Week Checklist

WeekFileWhat to buildCore concept
Week 1 Constants.java Inner classes DriveK + ShooterK with motor IDs, speeds, gear ratios Variables, final, naming conventions
Week 2 AutoLogic.java Static method that uses if/switch to return an auto routine name given an input mode int if/else, switch, booleans
Week 3 SensorProcessor.java Static methods: average of double array, count values above a threshold, find min/max for loops, arrays, methods
Week 4 DriveCalculator.java Static utility methods: RPM to m/s, ticks to rotations, clamp(val, min, max), deadband(input, threshold) Static methods, parameters, return types
Week 5 DriveSubsystem.java Class with private final motor fields, constructor, periodic(), drive(double speed), stop(), getters OOP, encapsulation, constructors
Week 6 ShooterSubsystem.java Extends same abstract base as DriveSubsystem. Adds m_targetRPS, isAtSpeed(), overrides periodic() Inheritance, extends, @Override
Week 7 RobotState.java Enum with IDLE, DRIVING, SHOOTING, DISABLED. Plus interface IControllable with method signatures. Enums, interfaces, nested classes
Week 8 Robot.java Extends TimedRobot. Fields for both subsystems. configureBindings(). robotPeriodic() with CommandScheduler. Uses RobotState. Full project integration

Submission

at the end of week 8, you'll push all your .java files to a branch in the team repo and open a pull request. the leads will review your code — same process as real contributions to our robot.

PR title format: feat: minibot project — [your name]
Include a short description of what you built and anything you're unsure about. We give feedback, not just grades.

Grading (quick version)

20 pts
Naming conventions
k prefix on constants. m_ prefix on member vars. PascalCase classes. camelCase methods.
20 pts
OOP structure
Subsystems have proper constructors, periodic(), getters/setters. Inheritance and interface used correctly.
20 pts
No magic numbers
Every constant lives in Constants.java. Nothing hardcoded inline — not even CAN IDs.
20 pts
Comments
Every public method has a Javadoc. Tricky logic has inline // comments explaining the why.
20 pts
Compiles + runs
Your code should compile without errors. Logic should be sound — no while loops in periodic(), no raw mutation of private fields from outside the class.