Code repository for the Silly Servos Robotics Team #24213 at Highland Park High School
2026-2027 FTC BIOBUZZ

Imagine GitHub as a digital workspace where you and others can collaborate on building things together. Think of it like a shared online notebook for writing code.
On GitHub you can:
- Store your code: Keep your code organized and safe in the cloud.
- Track changes: See who made what changes to your code and when.
- Collaborate with others: Work on coding projects with other people.
- Learn from others: Explore and learn from code written by others.
Key terms:
- Repository: This is like a folder where you store your code files.
- Commit: This is a snapshot of your code at a specific point in time.
- Branch: This is a copy of your code where you can make changes without affecting the original.
- Pull request: This is a way to suggest changes to someone else's code.
Think of it like writing a book:
- The repository is the book itself.
- Each chapter is a branch.
- Saving your progress is a commit.
- Asking a friend to review your chapter is a pull request.
We use GitHub as our central code repository for the robot. This allows multiple team members to collaborate efficiently on the code. While GitHub can be used for basic editing, we primarily utilize an Integrated Development Environment (IDE) for code development. An IDE is a specialized software application that provides advanced features for writing, testing, and debugging code. Our team uses Android Studio, an IDE specifically designed for Java development, to create and refine our robot's software. Since Android Studio is a desktop application, it runs directly on your local computer and needs to be downloaded. To connect GitHub (on the web) to your IDE (locally on your computer), you will need to download GitHub Desktop. The GitHub desktop GUI is the easiest way to connect to GitHub. You can also use Git in the command line, but our team uses GitHub Desktop since it is easier for beginners.
You will need to create a GitHub account to contribute to this repository. Navigate to GitHub.com and create a free account. Next, download GitHub Desktop and sign in to your newly created account. If you are using a Linux machine, you need to install it from your preferred package manager (but if you are a Linux user you probably don't need to read this guide). You now have GitHub all set up!
To edit the code repository in Android Studio, you need to have your own local copy of it. This is called "cloning" a repository. In GitHub Desktop, click on the upper left-hand corner where it says "Current Repository". Click on the "Add" button and select "Clone Repository..." from the dropdown menu. Select this repository from the list, or click the green "Code" button on GitHub and copy the repository URL into the "URL" tab. Below that, choose a local path. This is where you will access the code files from your computer. Choose somewhere you will remember, such as your desktop. Click the "Clone" button and you should be done!
You will now need to download Android Studio. Once it is installed, open the app and click on File>Open. You can then select the path of the cloned repository (from the previous step). The repository is now editable in Android Studio!
You can edit the code in Android Studio. More information on the code structure can be found farther down on this page. Once you edit the code, you will need to push it to GitHub to publish your changes. If you haven't already, save your code in Android Studio with command+s (Mac) or ctrl+s (Windows & GNU/Linux). Navigate to GitHub Desktop and write a short summary of your change. Then, click Commit to <branch-name> to add your changes to your local branch, and click Push origin to upload them to GitHub. Finally, open a pull request and follow the workflow described below (don’t push directly to main unless it’s an approved emergency hotfix).
This project uses a minimal TeamCode structure:
config/HardwareNames.java: all RC hardware map namesconfig/RobotConstants.java: tunable values for drive and autonomous behaviorpedroPathing/PedroMecanumDrive.java: wrapper around Pedro follower setup and mecanum controlopmodes/teleop/TemplateTeleOp.java: driver control templateopmodes/auto/TemplateAuto.java: autonomous template
The goal is to keep the base code easy to read.
HardwareNames is the single source of truth for drivetrain configuration names.
RobotConstants contains configurable values used by opmodes:
- drive speed limits
- teleop field-centric toggle
- simple autonomous forward speed/duration
PedroMecanumDrive builds and owns the Pedro Follower.
It provides a small API used by opmodes:
- start teleop drive
- set drive powers (
forward,strafe,turn) - update follower each loop
- stop drivetrain safely
- read robot pose for telemetry
TemplateTeleOp:- reads gamepad1 sticks
- sends powers to Pedro drive
- updates and reports pose telemetry
TemplateAuto:- sets a starting pose
- runs a simple timed forward movement
- stops drive at the end
- Pull latest
main. - Create a feature branch from
main. - Implement and test in small increments.
- Open a PR early, then iterate.
- Merge after review and validation.
main: always stable and competition-ready.- Short-lived branches for active work.
Branch naming:
feat/<short-description>fix/<short-description>chore/<short-description>docs/<short-description>refactor/<short-description>test/<short-description>
Examples:
feat/add-spline-autofix/teleop-turn-scalingchore/update-gradle-wrapper
Use Conventional Commit style:
<type>: <short imperative summary>
Common types used in this repo:
feat:new robot capability or behaviorfix:bug fix or behavior correctionchore:maintenance, tooling, cleanup with no behavior changedocs:README/comments/process docsrefactor:code structure improvement without behavior changetest:test additions or updatesperf:performance improvementbuild:build system or dependency updatesci:CI workflow changes
Good examples:
feat: add field-centric toggle in teleopfix: clamp turn power for stable strafingchore: remove unused template filesdocs: add branch and PR process to root README
Match Conventional Commit format:
feat: add red-side preload auto skeletonfix: correct starting pose heading
Before requesting review:
- Branch is up to date with
main. - Code is focused on one logical change.
- Opmode behavior is tested on bot or simulator workflow.
- Hardware names/constants changes are documented in PR description.
- No unrelated file changes included.
- At least one teammate review for normal changes.
- Author resolves feedback and re-requests review.
- PR must pass required checks/review before merge.
- Do not push directly to
mainexcept emergency hotfixes. - Always push to
devsince that branch will later be merged withmain.
- Clone repo and open in Android Studio.
- Connect FTC SDK/Android environment.
- Ask Jacob for further instructions.