Building a drone from scratch with 2 other classmates using RaspberryPi, motors, speed controllers, accelerometer, gyroscope, and remote radio control is my one of favorite projects I have taken on.
We all worked in a new language, C++, and used various resources and libraries to work together to arrive at a solution. We came across numerous challenges that not only required software solutions, but also physical solutions to our drone design. I became very familiar with using Linux and version control (GitHub) through this project and what it feels like to work with others in a project. I learned about concepts in electrical engineering that I never otherwise expected to such as what PWM output is and how radio transmission works. This was also the first time we learned how to use a third-party electronic instrument (accelerometer/gyroscope) and communicate to it through our own written program rather than a given GUI or program.
In short, we used data from the accelerometer and gyroscope along with data from the radio receiver to instruct the corresponding motors to deliver a certain output, causing the drone to fly and move around as instructed.
Although the project took an entire school year and our final flight for our drone was very limited, the feeling of accomplishment from seeing our work physically at work was very motivating and inspirational for me to continue a path in computer science. Until then, most of my work in CS was a digital experience, but this project truly showed me the versatility of CS and the range of its presence in my life along with the hidden effort others put into all the products I use daily.
Athul Nair Philip Dupont Aidan Lynch