CV Line Following and TDOA PCB Robot

Overview

In my sophomore year, my team and I built a robot with 4 capabilities:

  1. Computer Vision (CV) Line Following
  2. Time Difference of Arrival (TDOA) angle calculation
  3. Teleoperation via clapping
  4. Audio frequency detection to switch between the above 3 modes

I designed the PCB in KiCad to house the analog control circuit, motor drivers, and two microcontrollers (the basic Arduino Uno which the class was using and a more advanced Tiva C Series which I wanted to use). I also decided to make using the Tiva C Series even cooler by installing a real-time operating system on it, FreeRTOS.

I wrote three concurrent threads that FreeRTOS managed:

  1. Listen to microphones for audio frequency detection. 3 frequencies corresponded to 3 modes (line following, TDOA, or clap-controlled teleoperation)
  2. Translate velocity commands received from the Odroid XU4 over serial to the control circuit during CV line following mode
  3. Clap detection from analog microphone signals for both teleoperation and TDOA calculations

The Odroid XU4 was responsible for image processing in CV line following, so I organized it into 3 ROS nodes: the camera driver, our Python CV line following algorithm, and a serial driver talking to the Tiva.

We were the overachievers in that class.

Demo

Our Approach

Component Labels on PCB.

System Block Diagram

System block diagram

Gallery