Files
learning-garden/training/modules/2890-codebase-index.md

4.6 KiB

type, domain, subdomain, level, tags, status, source, growth
type domain subdomain level tags status source growth
training-material robotics code-index reference
frc
java
swerve
autonomous
pathplanner
photonvision
yagsl
active Team2890 Gitea (Mothman repo) tree

Team 2890 Codebase Index — Training Reference

Source: https://gitea.hawkcollective2890.com/Team2890/Mothman Access: Via Gitea API token (read) Language: Java (WPILib) Note: Concepts apply to C++ — syntax differs, patterns identical


Repo Structure Overview

Mothman/
├── src/main/java/frc/robot/
│   ├── Constants.java          — Robot-wide constants
│   ├── LimelightHelpers.java  — Vision targeting helpers
│   ├── Main.java              — Robot entry point
│   ├── Robot.java             — Main robot class (periodic methods)
│   ├── RobotContainer.java    — Joysticks, commands, subsystems wiring
│   ├── commands/              — Command classes
│   └── subsystems/           — Hardware subsystem controllers
├── src/main/deploy/
│   ├── pathplanner/          — Autonomous paths + autos
│   └── swerve/              — Swerve module JSON configs
└── vendordeps/              — Vendor libraries (Phoenix, REV, etc.)

Key Training Resources by Topic

🏎️ Swerve Drive (YAGSL)

Config files:

  • deploy/swerve/neo/swervedrive.json — swerve drive config
  • deploy/swerve/neo/modules/*.json — per-module PID/physical properties

Code:

  • subsystems/swervedrive/SwerveSubsystem.java — main swerve controller
  • commands/swervedrive/drivebase/AbsoluteDriveAdv.java — advanced field-relative drive

Training value:

  • YAGSL configuration structure (JSON-based swerve setup)
  • Swerve module characterization
  • Field-relative vs robot-relative control

📍 PathPlanner (Autonomous)

Config:

  • src/main/deploy/pathplanner/autos/*.auto — named autonomous routines
  • src/main/deploy/pathplanner/paths/*.path — individual path segments

Example autos:

  • 1 Meter Test Auto.auto
  • 90 Degree Test Auto.auto

Training value:

  • Auto path structure (waypoints, constraints)
  • PathPlannerLib integration
  • Auto command sequencing

👁️ Vision (PhotonVision + Limelight)

Code:

  • subsystems/swervedrive/Vision.java — AprilTag detection, pose estimation
  • LimelightHelpers.java — Limelight vision helpers

Training value:

  • Camera pipeline setup (PhotonVision)
  • AprilTag interpretation (field layout)
  • Pose estimation from vision

🎮 Subsystems

  • ClimberSubsystem.java — Robot climber mechanism
  • IntakeSubsystem.java — Game piece intake
  • ShooterSubsystem.java — Scoring shooter
  • TargetingSubsystems.java — Aim assist

Training value:

  • Subsystem architecture (commands bound to triggers)
  • Motor controller setup (Phoenix/REV)

⚙️ Vendor Dependencies (vendordeps/)

  • Phoenix5-replay-5.36.0.json — TalonFX (legacy)
  • Phoenix6-replay-26.1.0.json — TalonFX (new)
  • REVLib.json — NEO, SparkFlex motors
  • PathplannerLib-2026.1.2.json — Auto/path planning
  • photonlib.json — PhotonVision
  • yagsl-2026.1.14.json — Swerve library
  • ReduxLib-2026.1.1.json — Sensors
  • Studica-2026.0.0.json — Contour following
  • ThriftyLib-2026.json — Thrifty cameras

Key Files for C++ Developers

For C++ teams learning from Java code:

  • Subsystem class — Java: extends SubsystemBase → C++: Inherit frc::SubsystemBase
  • Command binding — Java: += operator → C++: AddCommands()
  • Motor controller — Java: .set() → C++: Set()
  • Joystick input — Java: driver.getRawButton() → C++: GetRawButton()
  • Auto commandspathplanner (same library in both languages)

What to Use for Training

For students learning FRC programming:

  1. Start with SwerveSubsystem.java — see swerve control in action
  2. Look at AbsoluteDriveAdv.java — field-relative swerve drive logic
  3. Check RobotContainer.java — how subsystems + commands + joysticks wire together
  4. Study the path files — how autos are composed from paths

For C++ students:

  • The pattern is identical. Focus on the logic, not the syntax.
  • YAGSL config (JSON) works the same in both languages

External Mirrors

  • PhotonVision → Team2890/PhotonVision — Vision processing (mirrored from github)
  • YAGSL → Team2890/YAGSL — Swerve library (mirrored)
  • allwpilib → Team2890/allwpilib — WPILib source (mirrored)

Access: https://gitea.hawkcollective2890.com/Team2890/Mothman