CV Line Following and TDOA PCB Robot
Overview
In my sophomore year, my team and I built a robot with 4 capabilities:
- Computer Vision (CV) Line Following
- Time Difference of Arrival (TDOA) angle calculation
- Teleoperation via clapping
- 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:
- Listen to microphones for audio frequency detection. 3 frequencies corresponded to 3 modes (line following, TDOA, or clap-controlled teleoperation)
- Translate velocity commands received from the Odroid XU4 over serial to the control circuit during CV line following mode
- 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.