Voice-Controlled Car

Project Overview

  • Duration: March 2018 - May 2018 (2 months)
  • Team: 3 undergraduate engineering students
  • My role: Developer
  • Tools & Frameworks: Python, C++, Arduino, Energia, Jupyter

Motivation

For my final project in UC Berkeley's EECS 16B Designing Information Systems and Devices class my team created a voice-controlled car from scratch. This combined many of the topics taught within the class from circuits to control theory. My team's front-end circuit was designed from a self-made mic-board circuit and bandpass filter. The back-end feedback system for controlling the car utilized unsupervised learning through PCA and k-means clustering to filter speech and control the motion parameters. A deeper dive into my team's design choices, results, and source code can be found above!

Demonstration

Reflections

Holistically, this project taught me much about the integration not only on a macroscopic level between the software and hardware aspects of engineering, but also on a microscopic level between the various modules of the course from control to circuits. Building the car from scratch improved upon much of my circuit design and debugging skills and also taught me much about the application of software to both classification and signal processing. In hindsight, design choices played a large part in the difficulty of the project, as many of my team's errors came from poor and messy builds that we eventually had to clean up. Hardware failures such as broken MSP pins or other parts also proved to be difficult to debug. Lastly, I learned about the importance of solid data collection especially in large integrative projects as even the smallest errors grow exponentially in size.