From fafc2d5830bf8367edb54b010c20c507b84965f2 Mon Sep 17 00:00:00 2001 From: martin Date: Wed, 20 Aug 2025 16:07:39 +0200 Subject: [PATCH] Update ESP32 firmware roadmap - focus on hardware development - Restructured roadmap to focus on ESP32 firmware development only - Removed time constraints from all development phases - Clarified data flow: ESP32 streams to webapp, webapp handles all logging - Updated deliverables: firmware components, hardware integration, OLED support - Removed PC software and web visualization phases (handled by separate webapp) - Updated success criteria for ESP32 firmware performance metrics - Updated dev notes to reflect webapp integration architecture --- CLAUDE.md | 13 ++-- docs/ROADMAP.md | 180 ++++++++++++++++++------------------------------ 2 files changed, 75 insertions(+), 118 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 3a2c0eb..9cbd472 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -35,8 +35,8 @@ pio device monitor ### Device Roles & Communication Flow ``` -Anchors: Auto-position ’ Store coordinates locally ’ Report to tags -Tags: Range to anchors ’ Collect coordinates ’ USB to PC ’ Real-time + logging +Anchors: Auto-position � Store coordinates locally � Report to tags +Tags: Range to anchors � Collect coordinates � USB to PC � Real-time + logging ``` ### Key Technical Patterns @@ -86,10 +86,11 @@ Key values in config.h: ## Development Roadmap Context -This system implements **Phase 1** of a 5-phase indoor positioning project (see docs/ROADMAP.md): -- **Current**: Basic anchor-tag ranging with USB data collection -- **Next**: Anchor auto-positioning, dual-file logging, PC software, web visualization -- **Goal**: <15min warehouse setup, <30cm accuracy, real-time + offline analysis +This ESP32 firmware implements the hardware foundation for the UWB positioning system (see docs/ROADMAP.md): +- **Current**: Basic anchor-tag ranging with USB data streaming via UWBHelper library +- **Next**: Anchor auto-positioning, coordinate relay through tag, battery optimization +- **Goal**: <15min anchor setup, <30cm ranging accuracy, reliable USB data streaming to webapp +- **WebApp Integration**: All data logging, visualization, and analysis handled by separate Next.js webapp ## Hardware Requirements diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 15ae09d..5268f93 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,15 +1,15 @@ -# Indoor Positioning System Roadmap -**MaUWB ESP32-S3 Warehouse Positioning & WiFi Mapping System** +# ESP32 UWB Hardware Roadmap +**MaUWB ESP32-S3 Ultra-Wideband Indoor Positioning System** --- ## 🎯 Project Overview -**Purpose**: Indoor positioning system for warehouse WiFi strength mapping -- **Hardware**: 1 mobile tag + 8+ battery-powered anchors -- **Connectivity**: Tag connects to PC via USB, anchors are wireless-only -- **Constraint**: Tag connects to 8 closest anchors (auto-switching) -- **Goal**: Quick installation (<15 min) with automatic anchor positioning +**Purpose**: ESP32-S3 firmware for Ultra-Wideband indoor positioning hardware +- **Hardware**: 1 mobile tag + 8+ battery-powered anchors (Makerfabs MaUWB) +- **Connectivity**: Tag streams to PC via USB, anchors are battery-powered wireless +- **Network**: Tag connects to 8 closest anchors with automatic switching +- **Goal**: Reliable UWB ranging with anchor auto-positioning and real-time data streaming --- @@ -36,24 +36,22 @@ ``` Anchors (Battery) → Auto-Position Calibration → Store Coordinates Locally ↓ -Tag (Mobile) → Collect Raw Data + Anchor Coordinates → PC (USB) → Real-time Display - ↓ ↓ - Two Log Files Live Position View - ↓ - Web Application - (Load both files) +Tag (Mobile) → Collect Raw Data + Anchor Coordinates → USB Stream → WebApp + ↓ + Real-time Display + + Data Logging + + Path Analysis ``` ### Critical Problem Solved **Challenge**: How do battery-powered anchors transmit calibrated positions to PC? -**Solution**: Dual-file approach - Tag logs raw positioning data + anchor coordinates separately, webapp loads both files for offline processing +**Solution**: Tag acts as data relay - collects anchor coordinates and streams all data via USB to webapp for processing, logging, and visualization --- -## 🚀 Implementation Roadmap +## 🚀 ESP32 Firmware Development Roadmap ### Phase 1: Anchor Auto-Positioning System -**Duration**: 2-3 weeks #### 1.1 Distributed Positioning Algorithm - [ ] **Anchor Discovery Protocol** @@ -88,7 +86,6 @@ Tag (Mobile) → Collect Raw Data + Anchor Coordinates → PC (USB) → Real-tim - Error detection and correction ### Phase 2: Tag Data Relay System -**Duration**: 2 weeks #### 2.1 Enhanced Tag Functionality - [ ] **Anchor Discovery & Connection** @@ -106,93 +103,49 @@ Tag (Mobile) → Collect Raw Data + Anchor Coordinates → PC (USB) → Real-tim - Maintain position continuity during anchor handoffs - Implement position smoothing/filtering -#### 2.2 Tag Data Logging System -- [ ] **Dual-File Logging** - - **File 1**: Raw positioning data (distances, RSSI, timestamps) - - **File 2**: Anchor coordinates database (collected from connected anchors) - - USB transfer to PC for both files +#### 2.2 USB Data Streaming System +- [ ] **Real-time Data Stream** + - Stream raw positioning data via USB (AT+RANGE format) + - Include anchor coordinates in data stream when available + - Maintain backward compatibility with current UWBHelper parsing - [ ] **Data Collection Protocol** - Request anchor coordinates: "Send me your calibrated position" - Anchor responds: {anchor_id, x, y, calibration_confidence} - - Store coordinates locally and update anchor database file - - Continue logging raw positioning data as current system does + - Forward anchor data immediately via USB to webapp + - No local file storage - webapp handles all logging -### Phase 3: PC Software Development -**Duration**: 2 weeks +### Phase 3: System Integration & Optimization -#### 3.1 Real-time PC Application -- [ ] **USB Communication & Live Display** - - Receive real-time data stream from tag via USB - - Parse incoming data: raw distances + anchor coordinates - - Calculate live tag position using anchor coordinates - - Display real-time position on 2D map - -- [ ] **Live Monitoring Features** - - Show current tag position with live updates - - Display connected anchors and their positions - - Real-time signal strength indicators - - Live path tracking during mapping session - -#### 3.2 Dual-File Logging (Background) -- [ ] **Simultaneous Data Logging** - - **raw_positioning.csv**: Tag positioning data (distances, RSSI, timestamps) - - **anchor_coordinates.csv**: Anchor position database - - Log files generated automatically during real-time session - - Export files for webapp analysis after session - -- [ ] **Data Validation** - - Verify file integrity and format - - Check timestamp consistency - - Validate anchor coordinate data - -### Phase 4: Web Visualization Application -**Duration**: 2-3 weeks - -#### 4.1 Core Web Interface -- [ ] **Dual-File Upload & Processing** - - Upload **raw_positioning.csv** and **anchor_coordinates.csv** - - Parse and correlate both datasets - - Data validation and error handling - - Calculate actual tag positions using raw data + anchor coordinates - -- [ ] **2D Warehouse Visualization** - - Display anchor positions from coordinates file - - Calculate and plot tag path using positioning algorithm - - Interactive warehouse floor plan with scalable coordinate system - -#### 4.2 Path Analysis Features -- [ ] **Path Tracking Visualization** - - Tag movement path overlay - - Timeline scrubbing and playback - - Speed and direction indicators - -- [ ] **Data Analysis Tools** - - Path statistics and metrics - - Export functionality (images, reports) - - Comparison between multiple mapping sessions - -### Phase 5: System Integration & Optimization -**Duration**: 1-2 weeks - -#### 5.1 Quick Installation Workflow +#### 3.1 Quick Installation Workflow - [ ] **Automated Setup Process** - Power-on all anchors simultaneously - Auto-discovery and network formation - Position calibration and verification - - Tag pairing and PC connection setup + - Tag pairing and webapp connection setup - Target: Ready-to-use in <15 minutes -#### 5.2 System Validation +#### 3.2 Performance Optimization +- [ ] **Battery Life Optimization** + - Optimize anchor power consumption + - Implement sleep modes when possible + - Efficient UWB communication protocols + +- [ ] **Data Transmission Efficiency** + - Optimize AT command responses + - Minimize USB data bandwidth usage + - Ensure reliable anchor coordinate transmission + +#### 3.3 System Validation - [ ] **Accuracy Testing** - Position accuracy validation - Anchor auto-positioning verification - - End-to-end system testing + - End-to-end ESP32 system testing -- [ ] **Performance Optimization** - - Battery life optimization for anchors - - Data transmission efficiency - - Real-time performance tuning +- [ ] **Hardware Integration** + - OLED display optimization + - UWB module reset and recovery + - Serial communication stability --- @@ -220,36 +173,39 @@ Tag (Mobile) → Collect Raw Data + Anchor Coordinates → PC (USB) → Real-tim --- -## 📦 Deliverables +## 📦 ESP32 Firmware Deliverables -### Software Components -- [ ] **Enhanced Anchor Firmware** - Auto-positioning and data storage -- [ ] **Enhanced Tag Firmware** - Data relay and USB communication -- [ ] **PC Data Collection Software** - USB interface and logging -- [ ] **Web Visualization Application** - Path analysis and mapping +### Firmware Components +- [ ] **Enhanced Anchor Firmware** - Auto-positioning, coordinate storage, inter-anchor communication +- [ ] **Enhanced Tag Firmware** - Data relay, anchor coordinate collection, USB streaming +- [ ] **UWBHelper Library** - Complete AT command implementation with positioning support +- [ ] **Configuration Management** - Network setup, device roles, calibration storage + +### Hardware Integration +- [ ] **OLED Display Support** - Real-time status, anchor/tag information, connection indicators +- [ ] **Reset & Recovery** - UWB module reset handling, error recovery protocols +- [ ] **Power Management** - Battery optimization for anchors, USB power for tags +- [ ] **Serial Communication** - Robust USB streaming, AT command processing ### Documentation -- [ ] **Installation Guide** - Quick setup procedures -- [ ] **User Manual** - Operation and troubleshooting -- [ ] **Technical Documentation** - API and protocol specifications -- [ ] **Calibration Procedures** - System validation and accuracy testing +- [ ] **Firmware Installation Guide** - PlatformIO build and flash procedures +- [ ] **AT Command Reference** - Complete UWBHelper API documentation +- [ ] **Hardware Setup Guide** - Pin configurations, OLED connections, reset procedures +- [ ] **Calibration Procedures** - Anchor positioning, system validation, accuracy testing -### Test Results -- [ ] **Positioning Accuracy Report** - Performance metrics -- [ ] **Battery Life Analysis** - Power consumption data -- [ ] **Installation Time Study** - Setup procedure validation +### Validation & Testing +- [ ] **Positioning Accuracy Report** - ESP32 ranging performance metrics +- [ ] **Battery Life Analysis** - Anchor power consumption data +- [ ] **Communication Reliability** - USB streaming stability, AT command response times --- -## 🔄 Success Criteria +## 🔄 ESP32 Firmware Success Criteria -1. **Installation Time**: Complete system setup in <15 minutes -2. **Positioning Accuracy**: <30cm accuracy in warehouse environment -3. **Battery Life**: Anchors operate >8 hours on single charge -4. **System Reliability**: 99%+ uptime during mapping sessions -5. **Data Integrity**: Complete path tracking with <1% data loss -6. **User Experience**: Simple web interface for path visualization +1. **Quick Setup**: Anchor auto-positioning completes in <15 minutes +2. **Ranging Accuracy**: <30cm UWB distance measurement accuracy +3. **Battery Life**: Anchors operate >8 hours on single battery charge +4. **Communication Reliability**: Stable USB data streaming with <1% packet loss +5. **Network Stability**: Automatic anchor discovery and handoff without interruption +6. **AT Command Compatibility**: Full UWBHelper library integration with webapp - -*Last Updated: 2025-01-19* -*Version: 1.0* \ No newline at end of file