Embedded LabFeatured

UWB Autonomous Carrier

A follow-me autonomous vehicle based on UWB trilateration. Mobile positioning with 2 ESP32s and 3 DWM3000s.

PersonalDuration 2 moContribution 100%2025-102025-12
Key Metric: ±10cm, 10Hz, 4-phase roadmap
Engineering Role
Embedded
UWB Autonomous Carrier project interface preview
Embedded Lab
UWB Autonomous Carrier
HW
#Embedded#Robotics#Personal#C++

Overview

A UWB follow-me vehicle that works without fixed anchors. It combines an ESP32-S3 carrier, ESP32-C3 tag, 3 DWM3000 units, SPI multiplexing, trilateration, 10Hz positioning, Kalman filtering, 4-wheel differential motors, and ultrasonic avoidance.

My Work

  • Designed the ESP32-S3 dual-core plus shared-SPI control logic
  • Implemented the DWM3000 2-byte header protocol directly
  • Sequential TWR communication, distance measurement, and the trilateration algorithm
  • Kalman filter (position smoothing) plus PD control loop
  • 4-wheel PWM motor control plus ultrasonic sensor sampling
  • DWA path planning plus avoidance prioritization

Features

  • Real-time following of the tag (person) position
  • 3-channel ultrasonic forward obstacle detection
  • 12V 10Ah battery, about 2 hours of operation
  • Maximum speed 1.0 m/s (safe speed)
  • Maintains a 1.2m following distance via PD
  • No installation required — usable in any space

Highlights

  • 0 fixed anchors — a single carrier follows the user
  • Shared SPI (one ESP32-S3 controls 3 DWM3000 units)
  • Sequential TWR (100ms × 3 channels) → trilateration
  • 10Hz position updates, ±10cm accuracy
  • 4-wheel differential motors (BTS7960) plus 3-channel ultrasonic avoidance

Timeline

2025-102025-12
Role: Solo hardware and firmware
Contribution: 100%
Collaboration: Personal

Tech Stack

</>ESP32-S3 + DWM3000, sequential TWR, trilateration, PD/DWA

C++ArduinoPlatformIOESP32-S3ESP32-C3DWM3000 UWBFreeRTOSBTS7960