- 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
211 lines
8 KiB
Markdown
211 lines
8 KiB
Markdown
# ESP32 UWB Hardware Roadmap
|
|
**MaUWB ESP32-S3 Ultra-Wideband Indoor Positioning System**
|
|
|
|
---
|
|
|
|
## 🎯 Project Overview
|
|
|
|
**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
|
|
|
|
---
|
|
|
|
## 📋 System Requirements
|
|
|
|
### Hardware Components
|
|
- [ ] **Tag Device**: ESP32-S3 with USB connectivity
|
|
- [ ] **Anchor Devices**: 8+ ESP32-S3 units (battery powered)
|
|
- [ ] **PC Interface**: USB connection for data collection
|
|
- [ ] **Power Management**: Battery-powered anchors (no mains/WiFi)
|
|
|
|
### Core Constraints
|
|
- ✅ Battery-powered anchors (no WiFi connectivity)
|
|
- ✅ Tag connects to 8 closest anchors (auto-switching)
|
|
- ✅ USB-only connection (tag to PC)
|
|
- ✅ No WiFi scanning needed (handled by PC)
|
|
- ✅ Warehouse too large for simultaneous connection to all anchors
|
|
|
|
---
|
|
|
|
## 🏗️ System Architecture
|
|
|
|
### Data Flow Design
|
|
```
|
|
Anchors (Battery) → Auto-Position Calibration → Store Coordinates Locally
|
|
↓
|
|
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**: Tag acts as data relay - collects anchor coordinates and streams all data via USB to webapp for processing, logging, and visualization
|
|
|
|
---
|
|
|
|
## 🚀 ESP32 Firmware Development Roadmap
|
|
|
|
### Phase 1: Anchor Auto-Positioning System
|
|
|
|
#### 1.1 Distributed Positioning Algorithm
|
|
- [ ] **Anchor Discovery Protocol**
|
|
- All anchors broadcast discovery signals on startup
|
|
- Build neighbor discovery table for each anchor
|
|
- Implement range-based network topology mapping
|
|
|
|
- [ ] **Distance Measurement Matrix**
|
|
- Each anchor measures distances to all neighbors in range
|
|
- Store distance measurements locally (EEPROM/flash)
|
|
- Handle partial connectivity (not all anchors can reach each other)
|
|
|
|
- [ ] **Coordinate System Establishment**
|
|
- Designate anchor with most connections as origin (0,0)
|
|
- Establish coordinate system orientation
|
|
- Implement distributed position calculation algorithm
|
|
|
|
- [ ] **Position Calculation & Storage**
|
|
- Each anchor calculates its own position using trilateration
|
|
- Store calculated position in local memory
|
|
- Implement position confidence scoring
|
|
|
|
#### 1.2 Anchor Communication Protocol
|
|
- [ ] **Inter-Anchor Data Exchange**
|
|
- Protocol for sharing distance measurements
|
|
- Handle multi-hop communication for distant anchors
|
|
- Implement data consistency checks
|
|
|
|
- [ ] **Position Refinement**
|
|
- Iterative position improvement algorithm
|
|
- Consensus mechanism for coordinate system alignment
|
|
- Error detection and correction
|
|
|
|
### Phase 2: Tag Data Relay System
|
|
|
|
#### 2.1 Enhanced Tag Functionality
|
|
- [ ] **Anchor Discovery & Connection**
|
|
- Scan for available anchors
|
|
- Connect to 8 closest/strongest anchors
|
|
- Implement smooth anchor switching logic
|
|
|
|
- [ ] **Position Data Collection**
|
|
- Request calibrated positions from connected anchors
|
|
- Aggregate anchor position data
|
|
- Handle missing or incomplete anchor data
|
|
|
|
- [ ] **Real-time Positioning**
|
|
- Calculate tag position using 8 connected anchors
|
|
- Maintain position continuity during anchor handoffs
|
|
- Implement position smoothing/filtering
|
|
|
|
#### 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}
|
|
- Forward anchor data immediately via USB to webapp
|
|
- No local file storage - webapp handles all logging
|
|
|
|
### Phase 3: System Integration & Optimization
|
|
|
|
#### 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 webapp connection setup
|
|
- Target: Ready-to-use in <15 minutes
|
|
|
|
#### 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 ESP32 system testing
|
|
|
|
- [ ] **Hardware Integration**
|
|
- OLED display optimization
|
|
- UWB module reset and recovery
|
|
- Serial communication stability
|
|
|
|
---
|
|
|
|
## 🎯 Key Technical Challenges
|
|
|
|
### 1. Distributed Anchor Positioning
|
|
**Challenge**: Anchors must calculate positions without central coordination
|
|
**Solution**: Implement distributed trilateration with consensus mechanism
|
|
|
|
### 2. Data Relay Through Tag
|
|
**Challenge**: Getting anchor position data to PC without direct connectivity
|
|
**Solution**: Tag acts as mobile bridge collecting and relaying data
|
|
|
|
### 3. Coordinate System Consistency
|
|
**Challenge**: Ensuring all anchors use same coordinate system
|
|
**Solution**: Distributed coordinate system establishment protocol
|
|
|
|
### 4. Anchor Handoff Management
|
|
**Challenge**: Smooth positioning during anchor switching
|
|
**Solution**: Position continuity algorithms and coordinate system alignment
|
|
|
|
### 5. Partial Connectivity Handling
|
|
**Challenge**: Not all anchors can communicate directly
|
|
**Solution**: Multi-hop communication and distributed data sharing
|
|
|
|
---
|
|
|
|
## 📦 ESP32 Firmware Deliverables
|
|
|
|
### 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
|
|
- [ ] **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
|
|
|
|
### 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
|
|
|
|
---
|
|
|
|
## 🔄 ESP32 Firmware Success Criteria
|
|
|
|
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
|
|
|