Auto-publish: training content update 2026-05-20 17:21:08
This commit is contained in:
@@ -1,151 +0,0 @@
|
||||
---
|
||||
type: training-material
|
||||
domain: robotics
|
||||
subdomain: code-index
|
||||
level: reference
|
||||
tags: [frc, java, swerve, autonomous, pathplanner, photonvision, yagsl]
|
||||
status: active
|
||||
source: Team2890 Gitea (Mothman repo)
|
||||
growth: 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 commands** — `pathplanner` (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`
|
||||
Reference in New Issue
Block a user