Skip to content

Computer visionFebruary 2025 - May 2025

Wavedrive — Gesture-Controlled Robot Car

Wave at a webcam to drive an ESP32 Wi-Fi robot

  • Hand Tracking

    MediaPipe runs locally on any webcam

  • 7 Gestures

    TFLite classifier on landmark coordinates, 0.98 held-out accuracy

  • Wi-Fi Tele-op

    ESP32 AP + TCP control loop

System Overview

Wavedrive turns webcam hand gestures into commands for an ESP32 robot car over local Wi-Fi.

MediaPipe tracks hand landmarks, a TensorFlow Lite classifier recognizes ten gestures, and the laptop sends the corresponding command over TCP. The ESP32 drives two DC motors and displays the active command on an OLED, without a cloud inference service.

How it actually works

A hand sign becomes a motor command

Follow a recorded hand through normalisation, the trained classifier running in your browser, and the ESP32 firmware that sets the motors and OLED.

Things to try

  • In 3 Classify, raise Blend amount until the prediction flips.
  • In 1 Track, shrink Hand size in frame, then check 2 Normalise.
  • In 5 Drive, pick Speed up and press Repeat.

Built from the project's own code and documents.from code: A constant or rule copied from the project's repositoryfrom report: A value from the project's report or presentationsimulated: Computed in your browser by running the project's logic

How it works

Turn hand movement into a robot command.

  1. 1

    Track the hand

    Capture webcam frames on the laptop and use MediaPipe to obtain hand-landmark coordinates for the classifier.

  2. 2

    Classify the gesture

    Run the TensorFlow Lite model on normalised landmark coordinates and map the predicted gesture to one of seven commands.

  3. 3

    Send the command

    Transmit the selected command through a TCP socket to the ESP32 access point at 192.168.4.1 on port 12345.

  4. 4

    Drive and display

    The ESP32 sets a PWM duty for each of its two motors and shows the matching gesture icon on the OLED.

Engineering features

  • Trained a TFLite gesture classifier over normalised MediaPipe hand landmarks for seven gestures, reaching 0.98 accuracy on 1,133 held-out samples.

  • Built ESP32 firmware that hosts a Wi-Fi access point and sets the two motors' PWM duty from TCP commands: forward, left, right, stop, spin, speed up and slow down.

  • Added a 128×64 OLED that shows an icon of the active gesture for at-a-glance feedback.

  • End-to-end pipeline runs in real time on a laptop webcam with no cloud dependencies.

Inside the build

The control logic, integration and design decisions, one note at a time.

01

Landmark classification on the laptop

The classifier is trained on MediaPipe landmark coordinates rather than direct image pixels. Python and OpenCV provide the webcam pipeline, with TensorFlow Lite classifying the resulting coordinates. Tracking and classification run locally, without a cloud inference dependency.

02

Robot-hosted wireless control and feedback

The ESP32 hosts the Wi-Fi access point and listens for TCP commands at a fixed local endpoint. Its firmware sets one PWM pin per motor, so the car drives forward, turns, spins and changes speed but cannot reverse, and shows a gesture icon for the current command on the OLED. This divides gesture interpretation and motor actuation between the laptop and the robot.

Evidence & limitations

What the project documents show, and where each claim comes from.

Source code available to explore

The project repository is linked below for the gesture pipeline and ESP32 firmware. The training notebook reports 0.98 accuracy on 1,133 held-out samples across the seven trained gestures. There is no report or demonstration video, so command latency and driving performance are not quantified.

Next projectMaze Runner & Ball ShooterTwo robots for a first-semester university competition

Hiring for robotics or embedded work?

I'm looking for internships. The résumé has the short version.