For seven years, I've been the lead programmer of FTC Team 6369, the Designosaurs. I write code that runs on a phone placed on the robot which controls the motors and actuates the appendages.

There are two stages to the game in which our robot competes: TeleOp (or driver controlled), and Autonomous (no human control). While I enjoy the driver controlled period, and am one of the team's drivers that moves the robot on the field, the Autonomous period is the real opportunity for the robot's software to shine. No one is allowed to touch the robot's controllers during this period, and the robot has to control itself entirely based on pre-programmed instructions and sensor data. This year, I've built a complex autonomous program (upwards of 2000 lines of code) that uses multiple computer vision softwares to allow the robot to "see" its objectives on the field. For example, the robot is able to recognize what a beacon looks like based on finding the dark parts of the image, blurring it to reduce noise, then approximating areas that are shaped like a circle and within the proper size constraints. You can see an image of this on the right.

In addition to the computer vision components, the robot knows its location on the field based on sensor fusion algorithms powered by an Adafruit IMU (Integrated Motion Unit). This board is placed in the middle of our robot, and sends gyroscope, accelerometer, magnetometer, and even temperature data back to the phone over I2C and USB. These readings help the robot to make accurate turns and end up in the same position every time, regardless of battery power or field conditions. This data is combined with encoders on the motors as a fail-safe.
Aside from the robot's code, I also help organize the team. This year, being our senior and therefore final year, we've decided to run our team without a coach. As a team, we discuss our strategy and make engineering decisions. This offers us the maximum freedom to pursue our ideas, but also requires more from us as team members. I've taken on managing the team's expenses and helping to schedule meetings. The year has been going great thus far, and we're very proud of what we've built (you can see our robot on the left).

I could go on for many pages speaking of the invaluable lessons I've learned from participating in a robotics program over the years, but the biggest one by far has been teamwork. Key decisions as to how our robot will operate, like design approach, which points to pursue, and driving strategy are decided through group discussion. I have learned how to properly articulate my ideas through sketches on a whiteboard or in a lab notebook, then explain them to the rest of the team. By the time we have decided on our winning strategy, everyone has contributed. I'm especially proud of how well we work together, and how much we're able to accomplish even as a team of four. Go Designosaurs!

Tools & Frameworks
android studio
Programming Languages
computer vision