Robot Filesystem

frc/
│
├── lib/
│
├── robot/
│   │
│   ├── command/
│   │   ├── auton/
│   │   │   └── SomeAutonCommand.java
│   │   └── SomeCommand.java
│   │
│   ├── sensors/
│   │   └── some-sensor/
│   │       ├── SomeSensor.java
│   │       ├── SomeSensorConstants.java
│   │       ├── SomeSensorIO.java
│   │       ├── SomeSensorIOSim.java
│   │       └── SomeSensorIOType.java
│   │
│   ├── subsystems/
│   │   └── some-subsystem/
│   │       ├── some-mechanism/
│   │       │   ├── SomeMechanismIO.java
│   │       │   ├── SomeMechanismIOSim.java
│   │       │   └── SomeMechanismIOType.java
│   │       ├── SomeSubsystem.java
│   │       └── SomeSubsystemConstants.java
│   │
│   ├── utils/
│   │
│   ├── BuildConstants.java
│   ├── Constants.java
│   ├── FieldConstants.java
│   ├── Main.java
│   ├── Robot.java
│   ├── RobotContainer.java
│   └── RobotState.java

Description of Structure

  • frc/: The root directory for your FRC robot project.
  • lib/: A directory designated for libraries/files which are not year specific.
  • robot/: Contains the main code and organization for the robot.
  • command/: Directory for command classes that control robot actions.
    • auton/: Subdirectory for autonomous commands.
  • sensors/: Directory for sensor-related classes and functionality.
    • some-sensor/: Subdirectory for a specific sensor's implementation.
    • SomeSensor.java: Class representing the sensor's public facing functionality.
    • SomeSensorConstants.java: Contains constant values related to the sensor's operation.
    • SomeSensorIO.java: Input/Output handling class for the sensor.
    • SomeSensorIOSim.java: Simulation version of the sensor's I/O handling.
    • SomeSensorIOType.java: Real version of the sensor's I/O handling.
  • subsystems/: Directory for subsystem classes that manage various robot mechanisms.
    • some-subsystem/: Subdirectory for a specific subsystem's implementation.
    • some-mechanism/: Subdirectory for a particular mechanism within the subsystem.
      • SomeMechanismIO.java: I/O handling class for the mechanism.
      • SomeMechanismIOSim.java: Simulation version of the mechanism's I/O handling.
      • SomeMechanismIOType.java: Real version of the mechanism's I/O handling.
    • SomeSubsystem.java: Class representing the subsystem's public facing functionality.
    • SomeSubsystemConstants.java: Contains constant values related to the subsystem's operation.
  • utils/: A directory for year-specific utility classes.
  • BuildConstants.java: Class holding build-specific constants.
  • Constants.java: Class containing general constants used throughout the robot code.
  • FieldConstants.java: Class defining constants related to the field and game elements.
  • Main.java: The entry point of the robot code where execution begins.
  • Robot.java: Main class managing the overall robot functionality and lifecycle.
  • RobotContainer.java: Manages the robot's subsystems and command structure, defining how they interact.
  • RobotState.java: Represents the current operational state of the robot.