FRC 5113 Puppy
- 1 Devlogs
- 3 Total hours
No, this is not an actual puppy (unfortunately). This is the code for our FRC 5113 outreach bot. It uses a custom framework, simulation, & is designed for the 2026 REBUILT game.
No, this is not an actual puppy (unfortunately). This is the code for our FRC 5113 outreach bot. It uses a custom framework, simulation, & is designed for the 2026 REBUILT game.
Puppy is a robot designed for the REBUILT FRC 2026 game. It is our team’s outreach bot, meaning that it will be used to attract new members into our team during special events.
The biggest problem when starting this is that the deprecated RoboRIO cannot use the modern robot frameworks (used to control the robot at a high-level). The roboRIO is incompatible with the new frameworks because they are tightly coupled to the newer hardware.
To overcome this, I created a new framework that mimics the behavior of the current modern frameworks. It subclasses TimedRobot, allowing for each robot mode to be encapsulated in its own module rather than all lifecycle hooks needing to be in the same class. In other words, this eliminates the problem of a gigantic robot.py file that orchestrates the entire codebase.
Here’s a diagram to show how each mode is separated:
Robot Framework (inherits from `TimedRobot`)
│
├── DisabledMode
├── AutonomousMode
├── TeleopMode
└── TestMode
Unit testing robot runtime behavior isn’t feasible. Therefore, I created integration tests to ensure the correct behavior of the lifecycle methods in each mode (i.e. entered, periodic, exited).
I completed the drivetrain subsystem as a model for the rest of the subsystems to follow. The file structure encapsulates each of the subsystems, making it impossible for other subsystems to talk with or command the hardware of any others. For example:
drivetrain/
├── io/
│ ├── base_io.py
│ ├── real_io.py
│ └── sim_io.py
├── constants.py
├── drivetrain.py
└── controller.py
**Note: The image is of our competition bot that we’re going to use for an upcoming offseason event - I couldn’t find one of Puppy. I’ll post one next week!