Customizing

Adapt this repository to your robot and workflow.

Good customization changes the robot-specific parts without breaking the reusable structure.

Safe first changes

Start with these before you change architecture:

  • hardware IDs and buses

  • gains, limits, and setpoints

  • controller bindings

  • autonomous selections

  • mechanism naming and dashboard labels

These usually belong in constants/ or RobotContainer.

Common repo-specific customization points

Hardware and constants

Update:

  • constants/subsystems/ for subsystem-specific configs and gains

  • constants/drive/ for drivetrain setup

  • constants/vision/ for camera names, transforms, and filtering

  • constants/sensors/ for digital sensor configuration

Controller behavior

Most operator behavior is customized in RobotContainer.

This includes:

  • default commands

  • button bindings

  • co-pilot controls

  • autonomous chooser options

  • named commands used by auto tools

Mechanism behavior

If an existing mechanism pattern fits your hardware, customize its constants before rewriting the subsystem.

Examples:

  • use different presets in ShooterCommands

  • change rack or hood limits in subsystem constants

  • swap SparkMax and TalonFX IO factories while keeping the same subsystem API

Simulation and visualization

This repo contains real simulation support. Customize it only if you actually need simulation behavior to match the robot more closely.

Examples:

  • robot visualization assets

  • drivetrain simulation parameters

  • intake and launched game-piece simulation

  • vision simulation transforms and noise models

When to restructure code

Restructure only when constants and command wiring are no longer enough.

Good reasons:

  • a mechanism no longer fits Flywheel or PositionJoint

  • one subsystem owns too many unrelated responsibilities

  • a new hardware model requires a different IO implementation shape

  • simulation needs a genuinely different integration path

Bad reasons:

  • preferring a different style

  • moving files before robot behavior is stable

  • introducing new abstractions before the current ones are understood

Warning

Avoid unnecessary customization early. The fastest path is usually to keep the existing subsystem patterns and only change configuration, commands, and bindings.