Omnidirectional "Swerve" Drivetrain

Project Overview

Developed from the summer of 2021 and through the 2021 fall semester, I worked on programming an omnidirectional test chassis FRC Team 509 built. Working in Java, I wrote a library to make controlling the complex movement simpler to implement.

Software

This project tested my knowledge of linear algebra, trigonometry, and control theory. Since each individual module ran independently, with its own PID controller for orientation and velocity, the biggest challenge was coordinating all four, while also taking gyroscope and accelerometer input.

Issues and Solutions

I heavily referenced white papers and other research during this project. While they were helpful in teaching me the theory behind writing code for a swerve drive, they did not prevent bugs. However, through the usage of telemetry and diagnostics, I was able to get the system running decently well.