v0.5.3-esp32
ruvnet/RuViewv0.5.3-esp32Mar 31, 2026by ruvnet
AI Summary
Introduces Cross-Node Mesh Fusion and DynamicMinCut for ESP32-S3 firmware, enabling multi-node networking with RSSI-weighted feature fusion and motion-responsive skeleton tracking.
Key Highlights
- Cross-Node Mesh Fusion with RSSI weighting
- DynamicMinCut person separation algorithm
- Motion-responsive skeleton animation (arm swing, leg kick)
- Per-Node State tracking (ADR-068) with independent vitals
- 72% reduction in keypoint jitter
New Features
- RSSI-weighted feature fusion across multiple nodes
- DynamicMinCut person separation via temporal correlation graph
- Motion-driven skeleton animation driven by real CSI data
- Per-node state management with max aggregation
- Client-side lerp interpolation for fluid skeleton
Full Release Notes
## What's Changed ### Cross-Node Mesh Fusion - **RSSI-weighted feature fusion** across multiple ESP32 nodes — closer node gets higher weight - **DynamicMinCut person separation** via `ruvector_mincut` on subcarrier temporal correlation graph - **RSSI-based skeleton position tracking** — walk between nodes and the skeleton follows - **Motion-responsive skeleton** — arm swing (0-80px), leg kick (0-50px), walking bob, head nod all driven by real CSI data ### Per-Node State (ADR-068) - Each ESP32 gets independent classification, vitals, person count - Stale node eviction after 60s inactivity - Multi-node aggregation: max(per_node_counts) ### RuVector Signal Processing (Phases 1-3) - Subcarrier importance weighting via mincut partition - Temporal EMA keypoint smoothing with coherence gating - Skeleton kinematic constraints (Jakobsen relaxation, 12-bone COCO-17 tree) - Compressed pose history for trajectory matching ### Smoothing & Quality - Client-side lerp interpolation (alpha=0.15) for fluid skeleton - Server EMA (alpha=0.15) for temporal blending - Dampened procedural animation, recalibrated for real ESP32 data - Vital sign filtering: larger median window (31), faster EMA, looser jump filter ### Hardware Benchmarks (2 ESP32 nodes, 30s) | Metric | v0.5.2 (baseline) | v0.5.3 (fusion) | Improvement | |--------|------------------|-----------------|-------------| | Keypoint jitter | std=4.5px | std=1.3px | **-72%** | | Feature noise | 109.4 | 77.6 | **-29%** | | Feature stability | std=154.1 | std=105.4 | **-32%** | | Confidence | 0.643 | 0.686 | **+7%** | | Presence accuracy | 93.4% | 94.6% | **+1.3pp** | ### Bug Fixes - RSSI byte offset (#332), stack overflow, stale node leak, unsafe pointer removed - Person count: sum→max aggregation, recalibrated thresholds - Firmware CI: IDF v5.4, xxd→od ### Binaries | File | Flash Size | Description | |------|-----------|-------------| | `esp32-csi-node.bin` | 8MB | Main firmware | | `esp32-csi-node-4mb.bin` | 4MB | For 4MB flash boards | | `bootloader.bin` | — | Bootloader | | `partition-table.bin` | 8MB | Partition table | | `partition-table-4mb.bin` | 4MB | Partition table (4MB) | | `ota_data_initial.bin` | — | OTA data | **Full Changelog**: https://github.com/ruvnet/RuView/compare/v0.5.2-esp32...v0.5.3-esp32