FRC 4186

Programming Mentor (June 2020 - December 2022)
Lead Programmer (August 2019 - June 2020)
Lead Electronics Member (June 2017 - June 2020)
Electronics & Mechanical Team Member (January 2017 - June 2017)

Alameda, CA
2017-2022

Java, Computer Vision, Control Systems, Electrical Wiring, Pneumatics, Mechanical Design

I joined FRC 4186 in my second semester of high school, originally helping with wiring of the robot. As I progressed through the team and through high school I took upon many roles. This included designing and building the pneumatics system on our 2019 robot Clinky, working on the “pit crew” for every year of competition I was able to be involved in and leading the programming team in my senior year of high school.

In my role as a programmer I went from knowing very little to implementing new systems the team had never used before. The highlights of this included a host of PID controls both for driver operated and autonomous control schemes. I also used off the shelf OpenCV pipelines to implement basic targeting and range finding.

After graduation, I continued to mentor the team focusing on teaching students programming and how to read and write good robot code. I also coached the drive team during the 2022 competition season.

Robot Programming

For the 2019 offseason and 2020 competition year, the team lacked a programmer. I had taken some very basic web programming & knew a little bit about software at the time so I chose to take the lead. I reviewed and rewrote the 2019 code to fit a more singular and sensical style to someone new to programming. The first major project within this I embarked on was closed loop teleoperated control. Using off the shelf PID controller libraries from WPI (the main source of libraries for FRC robots) I used my existing knowledge of PID tuning and robot operation to improve stick feel & robot responsiveness while decreasing slop.

Once the 2020 season started a lot of the code I had written had to be rewritten because the libraries had a major overhaul. I led this, and helped teach newer students how to adapt the codebase to the newer libraries. After this migration the focus was on making the best possible base for the robot that the rest of the team was building for the 2020 challenge. Again in the scope of closed loop control was designing autonomous controllers for encoder based operation for the autonomous period of competition.

The final major piece of software I wrote was the vision code, using OpenCV tools to find targets and then using range finding algorithms to range find and target them for better shooting accuracy than a human could achieve.

Architecturally I switched the team’s ethos from an entire project per robot, meaning every robot had to have many lines of boilerplate code copied over to a plug and play map system where each robot simply had certain functions that were turned on and certain tuning values and all were built within the same project, making it easier to develop and test on multiple robot platforms at once.

Two robots using different vision systems autonomously positioning, turning and aiming to a target

Pneumatics System Design

For the 2019 competition robot I helped reintroduce pneumatics to the robot. This included having a complete understanding of the rules and also understanding the function of all components. While in retrospect a relatively simple issue this was a major challenge as there was very little existing experience from any members and only a single mentor had any experience either. I had to troubleshoot countless wiring, tubing and general flow issues and then package it into something that was rules compliant and easy to maintain in a high pressure competition environment.

Previous
Previous

ExpressLRS