My final year project utilizing Python OpenCV and ESP32, featuring object detection and target-following. I had two group members i.e Maaz Ali Khan and Arham Mahbub Khan.

Source code

The source code of the project is publicaly available here under the GNU General Public License.

Summary of the project

The project’s aim was to design and implement a real-time planning and execution system for robots, specifically focusing on robotic soccer as it offers a dynamic and practical testing ground. The project journey consisted of multiple iterations and prototypes. The original approach used IMUs for localization and the calculation of robot’s acceleration, velocity, and orientation. But, the sensor noise resulted in high error rate and drift in position by time. This caused a change of methodology.
Due to the shortcomings in the IMU-based localization, the project shifted to an image processing approach using a mobile camera to capture a live video feed of the playing field and video processing using OpenCV. This significantly improved the accuracy and reliability of the localization system as now we were able to identify different objects based on their color and find their location in the video by finding their coordinates. The result was a successful navigation of the robot towards the ball.

Sequence Diagram of the project

The project had the following sequence of execution.

sequence-diagram.svg

Flow diagram for the image processing

sequence-diagram-image-processing.svg

Circuit diagram for the car

fyp_robot_hot_schem.svg

Note

The final robot did not include the MPU6050 module and and the L298N motor driver was replaced by TB6612FNG motor driver.

Why switch to TB6612FNG

L298N is an old motor driver which uses Bipolar Junction Transistors. Because of this L298N has a big voltage drop and causes alot of excessive heat. Because of this, we switched to TB6612FNG which has a lesser voltage drop and does not cause much heat.

Final robot car

robot.png

Contact Me