This is the code for the Prime Movers 2025 FRC Competition Robot, which will play the game REEFSCAPE.
The Programming team's work is tracked in this GitHub Project, with one of the below statuses:
- Planning - We're planning how we want to code this
- Active - Coding is in progress
- Awaiting Mech/Elec - Progress is blocked by a mechanical or electrical problem
- Needs Testing - Initial code is complete and needs to be tested on the real robot.
- Bugged - There is a bug in this code
- In Review - This code needs to be reviewed by a coach
- Done - This is code-complete, tested, and merged into the
main
branch
Items on this project board are created from issues and pull requests. When you create a new issue or a pull request, make sure to assign it the correct assignee(s), label(s), add it to the "2025 Competition Robot Build" Project, and add a status, size, and start date to the project item
These rules apply to all code committed to this repository.
- Package names are always lowercase.
public
orstatic
variables are named inPascalCase
.private
variables are prefixed with an underscore, and named in_camelCase
.- Any function with greater than 8 parameters must use a DTO class to wrap the parameters
- These DTOs must be suffixed with
Parameters
and can be as simple or complex as needed.
- These DTOs must be suffixed with
- Use the lowest-resolution data type when possible to save memory.
- If a number will always have a value between -128 to 127, use a
byte
. - If a number will always have a value between −2,147,483,648 to 2,147,483,647, use an
int
. - etc.
- If a number will always have a value between -128 to 127, use a
- Follow the principle of least privilege.
- If a function or a variable does not need to be accessed from outside a class, do not make it
public
- If a function or a variable does not need to be accessed from outside a class, do not make it
- Document your code with JavaDoc comments for all
public
functions and variables. - Add comments to your code on the line right above any area that would require explanation.
These rules apply to subsystems in the robot, unless otherwise approved by a coach.
- Subsystems must follow the IO pattern.
- Must include an
IO
interface. - Must include an
IOReal
class, which inherits from the interface. - Must include an
IOSim
class, which inherits from the interface. - Must include an
IOInputs
class. - Must include an
IOOutputs
class.
- Must include an
- Subsystems must include a member
<Subsystem>Map
class, containing onlypublic static final
values.- Values in the
Map
are values which are recorded for configuration of the robot, and are changed very rarely.
- Values in the
- Subsystems are located in the
subsystems
package, in their own package.
- @zeroClearAmerican
- @PoE309
- Squad 1
- Lead:
- @supazz
- Members:
- @DjAce626
- @johoseph78
- Lead:
- Squad 2
- Lead:
- @meticulouscorn
- Members:
- @EthanElite
- Lead:
- Squad 3
- Lead:
- @ArrowVark
- Members:
- @ArtsNCrafters
- @beese79
- Lead:
- Autonomous Squad - 3 members
- This squad is responsible for creating PathPlanner autonomous routines, and integrating subsystem actions into those routines successfully.
- Each Subsystem Squad lead will nominate one member from their squad (it can be themselves) to be on the Autonomous Squad.
- Members:
- [TBD]
- Operator Interface Squad - 3 members
- This squad is responsible for crafting the Driver and Operator command structures to create an intuitive interface between the driver controls and the robot's subsystems.
- Each Subsystem Squad lead will nominate one member from their squad (it cannot be themselves or their Autonomous representative) to be on the Operator Interface team.
- Members:
- [TBD]