This page includes detailed steps for getting your new Az-RBSI-based robot code up and running for the 2026 REBUILT season.
Before you deploy code to your robot, there are several modifications you need to make to the code base.
All of the code you will be writing for your robot's subsystems and
modifications to extant RBSI code will be done to files within the
src/main/java/frc/robot directory (and its subdirectories).
-
Driver Controller: The Az-RBSI supports Xbox, PS4, and PS5-style driver controllers through
frc.robot.util.RBSIController.RobotContainercreates the driver controller withRBSIController.createDriverController(0)and detects the connected controller once at robot startup, so teams should not need to editRobotContainerjust to switch between Xbox and PlayStation controllers.The default semantic mapping is:
- Xbox
A/B/X/Ymaps to PlayStationCross/Circle/Square/Triangle - Xbox left/right bumpers map to PlayStation
L1/R1 - Stick axes and POV/D-pad nudges use the same driver-facing actions
If you want different controls, remap the action constants in
Constants.ControllerButtonConstantsrather than replacing controller classes inRobotContainer. See RBSI-Constants.md for the full Xbox/PS4/5 physical-input mapping and examples for naming co-driver/operator actions such as intake, scoring, and mechanism stow commands. - Xbox
-
Robot Project Constants: All of the configurable values for your robot will be in the
Constants.javafile. This file contains the outerConstantsclass with high-level configuration variables such asswerveType,autoType,visionType, and whether your team has purchased a CTRE Pro license for unlocking some of the more advanced communication and control features available for CTRE devices. See RBSI-Constants.md for a field-by-field guide to the constants file. -
Robot Physical Constants: The next four classes in
Constants.javacontain information about the robot's physical characteristics, power distribution information, all of the devices (motors, servos, switches) connected to your robot, and operator control preferences. Work through these sections carefully and make sure all of the variables in these classes match what is on your robot before deploying code. Power monitoring in Az-RBSI matches subsystems to ports on your Power Distribution Module, so carefully edit theRobotDevicesclass ofConstants.javato include the proper power ports for each motor in your drivetrain, and include any motors from additional subsystems you add to your robot.
It cannot be overemphasized the importance of tuning your drivetrain for smooth and consistent performance, battery longevity, and not tearing up the field.
-
Over the course of your robot project, you will need to tune PID parameters for both your drivebase and any mechanisms you build to play the game. AdvantageKit includes detailed instructions for how to tune the various portions of your drivetrain, and we STRONGLY RECOMMEND you work through these steps BEFORE running your robot.
Similar tuning can be done with subsystem components (flywheel, intake, etc.).
-
Power monitoring by subsystem is included in the Az-RBSI. In order to properly match subsystems to ports on your Power Distribution Module, carefully edit the
RobotDevicesofConstants.javato include the proper power ports for each motor in your drivetrain, and include any motors from additional subsystems you add to your robot. To include additional subsystems in the monitoring, add them to them_powerinstantiation in theRobotContainer.javafile. -
In the
Constants.javafile, the classes followingRobotDevicescontain individual containers for robot subsystems and interaction methods. TheOperatorConstantsclass determines how the operator interacts with the robot.DrivebaseConstantsandFlywheelConstants(and additional classes you add for your own mechanisms) contain human-scale conversions and limits for the subsystem (e.g., maximum speed, gear ratios, PID constants, etc.).AutoConstantscontains the values needed for your autonomous period method of choice (currently supported are MANUAL -- you write your own code; PATHPLANNER, and CHOREO). The next two are related to robot vision, where the vision system constants are contained inVisionConstants, and the physical properties (location, FOV, etc.) of the cameras are inCameras.
As you program your robot for the 2026 (REBUILT) game, you will likely be
adding new subsystems and mechanisms to control and the commands to go with
them. Add new subsystems in the subsystems directory within
src/main/java/frc/robot -- you will find an example flywheel already included
for inspiration. New command modules should go into the commands directory.
The Az-RBSI is pre-plumbed to work with both the PathPlanner and Choreo autonomous path planning software
packages -- select which you are using in the Constants.java file.
Additionally, both PhotonVision and
Limelight
computer vision systems are supported in the present release.
For deeper subsystem bring-up, use these pages after the first compile and deploy:
- RBSI-Drive.md: swerve configuration, odometry ordering, pose buffers, and drive characterization.
- RBSI-Vision.md: PhotonVision and Limelight configuration, camera transforms, observation filtering, and simulation.
- RBSI-Autonomous.md: Manual, PathPlanner, Choreo, and Autopilot autonomous workflows.
- RBSI-SysId.md: example flywheel SysId routines and how to use the generated gains.
To help teams with standardized enclosures for their PhotonVision Orange Pi's and CTRE CANivores, we include three 3D print files as part of the "Assets" section of each release.
-
The CANivore cable holder is designed to hold a right-angle USB-C cable onto the CANivore in a way that won't get knocked loose if your robot hits something. The entire assembly can be attached to the RoboRIO using double-sided mounting tape.
-
The Orange Pi Double Case and Lid are designed to hold one or two Orange Pi 5's (not B or Pro or Max) (and connect up to 4 cameras). If only using one Orange Pi, mount it in the "upper" position for airflow. Also requires:
- 2x 128 GB micro SD card
- 4x M2.5x6mm+6mm Male-Female Hex Standoff (under the bottom Pi)
- 4x M2.5x25mm+6mm Male-Female Hex Standoff (between the two Pi's)
- 4x M2.5x20mm Female-Female Hex Standoff (atop the upper Pi)
- 8x M2.5x8mm Machine Screws (through case and into standoffs)
- 2x Cooling Fan 40mm 5V DC + Grill (attaches to side of case)
- 1x Redux Robotics Zinc-V Regulator OR Pololu 5V, 5.5A Step-Down Voltage Regulator OR Pololu 5V, 3A Step-Up/Step-Down Voltage Regulator (Power regulation for the Pi's)
- 2x 90-Degree USB-C to USB-C Cable, 10 inch for ZINC-V or 90-Degree USB-C to 2 Pin Bare Wire, 10 inch for Pololu (for powering Pi's)
- 3x M2x8mm Machine Screws (for attaching the Pololu to the lid)
NOTE: Powering the case with a Pololu requires soldering the USB-C cables and the 18/2 AWG wires to the Pololu. This requires patience. Using the Zinc-V requires no soldering, but introduces an extra USB-C connection.
See the PhotonVision Wiring documentation for more details. Do not put the Orange Pis, radio, or any device that cannot lose power on port 23 of the REV PDH. Port 23 is switched, and a robot impact can briefly interrupt power.
Mounting the case to the robot requires 4x #10-32 nylock nuts (placed in the hex-shaped mounts inside the case) and 4x #10-32 bolts.
Order of assembly of the Orange Pi Double Case matters given tight clearances:
- Super-glue the nylock nuts into the hex mounting holes.
- Install the fans and grates into the case side.
- Assemble the Pis into the standoffs outside the box.
- Solder or mount the voltage regulator solution of your choice.
- Connect the USB-C power cables to the Pi's.
- Connect the fan power to the 5V (red) and GND (black) pins in the Pi's.
- Install the Pi/standoff assembly into the case using screws at the bottom, be careful of the tight clearance between the USB sockets and the case opening.
- Tie a knot in the incoming power line to be placed inside the box for strain relief, and pass the incoming power line through the notch in the lower case.
- Install the cover on the box using screws.
- Mount the case to your robot using the #10-32 screws.