cat ./projects/esp-rover

ESP-Rover: voice-controlled mecanum rover

Last updated ยท 1 min read

  • Robotics
  • Cloud

What it is

A small omnidirectional rover built from an M5StickC (ESP32) and a RoverC Pro chassis with four mecanum wheels. You open the web page the rover serves itself, hold the mic button, and say "strafe left" or "turn right fast". About three seconds later it moves.

How it works

  • The browser records a clip of up to 3 seconds and posts it to API Gateway.
  • A Python Lambda stores the audio in S3, runs Amazon Transcribe, and fuzzy-matches the transcript against a shared command map covering forward and back, turns, strafes, diagonals, and slow/fast speed modifiers.
  • The rover firmware turns the command into per-wheel motor values over I2C. Mecanum wheels let it strafe and move diagonally without turning.
  • Safety: a 2-second watchdog stops the motors if no command arrives, and a hardware button is an emergency stop.
  • A second firmware variant adds an HTTPS web server with generated certificates, a safety monitor and telemetry collection.

Stack

  • Hardware: M5StickC (ESP32-PICO-D4), RoverC Pro (STM32 motor controller over I2C)
  • Firmware: Arduino C++ with a REST control API and persistent Wi-Fi and endpoint config
  • Cloud: API Gateway, Lambda (Python), S3, Transcribe, CloudWatch, X-Ray
  • Infrastructure as code: Terraform with scoped IAM, a 7-day lifecycle on audio objects and 14-day log retention

Status

Deployed and working end to end. I provisioned the AWS backend by hand with Terraform and the deploy script, and flashed the firmware to the rover from the Arduino IDE. There is no CI/CD pipeline.

Next steps

A camera for visual feedback, obstacle detection, a custom wake word, and coordinating more than one rover.

Source

github.com/digitalShokri/ESP-Rover

All projects