Skip to content

feat: cross-node fusion + DynamicMinCut + RSSI tracking + CHANGELOG (v0.5.3)#346

Merged
ruvnet merged 5 commits intomainfrom
feat/cross-node-fusion
Mar 31, 2026
Merged

feat: cross-node fusion + DynamicMinCut + RSSI tracking + CHANGELOG (v0.5.3)#346
ruvnet merged 5 commits intomainfrom
feat/cross-node-fusion

Conversation

@ruvnet
Copy link
Copy Markdown
Owner

@ruvnet ruvnet commented Mar 31, 2026

Summary

Major release with cross-node mesh improvements, hardware-verified benchmarks, and comprehensive CHANGELOG.

Cross-Node Fusion

  • RSSI-weighted feature averaging across all active ESP32 nodes
  • DynamicMinCut person separation on subcarrier correlation graph
  • RSSI-based skeleton position tracking (moves left/right between nodes)

Motion-Responsive Skeleton

  • Arm swing (0-80px) driven by CSI variance
  • Leg kick (0-50px) driven by motion_band_power
  • Vertical walking bob, head nod
  • Horizontal + vertical arm movement with 90° phase offset

Smoothing

  • Client-side lerp (alpha=0.15) on keypoint positions
  • Server EMA (alpha=0.15) for temporal keypoint blending
  • Dampened procedural noise (removed tick-based jitter)

Benchmarks (2 ESP32 nodes, 30s)

Metric Before After Change
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%

CHANGELOG

Updated with v0.5.1, v0.5.2, and v0.5.3 entries.

🤖 Generated with claude-flow

ruvnet added 5 commits March 30, 2026 15:47
Adds fuse_multi_node_features() that combines CSI features across all
active ESP32 nodes using RSSI-based weighting (closer node = higher weight).

Benchmark results (2 ESP32 nodes, 30s, ~1500 frames):

  Metric               | Baseline | Fusion  | Improvement
  ---------------------|----------|---------|------------
  Variance mean        |    109.4 |    77.6 | -29% noise
  Variance std         |    154.1 |   105.4 | -32% stability
  Confidence           |    0.643 |   0.686 | +7%
  Keypoint spread std  |      4.5 |     1.3 | -72% jitter
  Presence ratio       |   93.4%  |  94.6%  | +1.3pp

Person count still fluctuates near threshold — tracked as known issue.

Verified on real hardware: COM6 (node 1) + COM9 (node 2) on ruv.net.

Co-Authored-By: claude-flow <ruv@ruv.net>
Keypoints now interpolate between frames (alpha=0.25) instead of
jumping directly to new positions. This eliminates visual jitter
that persists even with server-side EMA smoothing, because the
renderer was drawing every WebSocket frame at full rate.

Applied to skeleton, keypoints, and dense body rendering paths.

Co-Authored-By: claude-flow <ruv@ruv.net>
- Added ruvector-mincut dependency to sensing server
- Replaced variance-based person scoring with actual graph min-cut on
  subcarrier temporal correlation matrix (Pearson correlation edges,
  DynamicMinCut exact max-flow)
- Recalibrated feature scaling for real ESP32 data ranges
- UI: client-side lerp interpolation (alpha=0.25) on keypoint positions
- Dampened procedural animation (noise, stride, extremity jitter)
- Person count thresholds retuned for mincut ratio

Co-Authored-By: claude-flow <ruv@ruv.net>
Co-Authored-By: claude-flow <ruv@ruv.net>
# Conflicts:
#	rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/main.rs
@ruvnet ruvnet merged commit 3733e54 into main Mar 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant