Technical
First Tech Challenge: #9889 Cruise Control
September 2018 - June 2023
I was the software engineer for First Tech Challenge team #9889 Cruise Control from 2018–2023, writing Java robot code, serving four years as drive team captain and two as team captain, with four qualifications for both the world championship and the Maryland Tech Invitational.
Pure Pursuit
In my second year I created an odometry system that tracked the robot’s position on the field using dead wheels. From that known position, I developed a version of a path-following algorithm called Pure Pursuit. Pure Pursuit allows smooth movement between multiple points so the robot can follow a continuous path around objects. After working out the math, I built a simulator in Python that showed a working version before I implemented the algorithm on the robot.
Match Code
I used this algorithm to create many programs where the robot controlled itself autonomously for the first thirty seconds of the match. During my last year I took it further: because Pure Pursuit only needs the points to move through, I built a system that let me program a custom autonomous routine within 30 seconds — a complete path while talking to the alliance partner at the field, without a computer. That same season, I created an algorithm that aligned with the scoring poles using a webcam. The robot could adjust its position even if the pole or the robot was pushed away.
Driver Assist
I programmed algorithms and state-based controllers to help the drivers every year: automatically grabbing objects, placing and scoring them, and aligning the robot on parts of the field using sensors. The entire robot could be controlled with a couple of buttons. Manual functions lived on a second controller that was rarely used but kept as a backup.
Results
During those five years we qualified for worlds four times, and played two of them — Rover Ruckus and Power Play; the other two were cancelled because of Covid-19. In Power Play we played on the #4 seed alliance in eliminations and made it to divisional finals after upsetting the #1 seed alliance. Later we played at the Maryland Tech Invitational as the #3 seed alliance captain out of the 40 best teams in the world. Teams were small: Power Play had 10 students, the largest of those years; every other season had five or six.