Files
openclaw-wiki/training/modules/2890-codebase-index.md

4.7 KiB

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

Team 2890 Codebase Index — Training Reference

Source: http://2890.duckdns.org:3002/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

File What it Controls
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/)

Library Purpose
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:

Pattern Java (Mothman) C++ (WPILib)
Subsystem class extends SubsystemBase Inherit frc::SubsystemBase
Command binding += operator AddCommands()
Motor controller .set() Set()
Joystick input driver.getRawButton() GetRawButton()
Auto commands pathplanner pathplanner (same lib)

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

Repo URL Purpose
PhotonVision Team2890/PhotonVision Vision processing (mirrored from github)
YAGSL Team2890/YAGSL Swerve library (mirrored)
allwpilib Team2890/allwpilib WPILib source (mirrored)

Access: http://2890.duckdns.org:3002/Team2890/Mothman