You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently the signal-derived pose estimation detects at most 1 person from a single ESP32 CSI stream. When 2+ people are in the room, only one is reported. This was confirmed during live testing with ESP32 hardware connected — GET /api/v1/pose/current returns 1 person even with 2 people present.
Root Cause
The current derive_pose_from_sensing() function in sensing-server/src/main.rs generates a single synthetic skeleton from aggregate CSI features (motion score, dominant frequency, spectral centroid). It has no mechanism to:
Separate individual contributions from the CSI amplitude/phase data
Estimate person count from the signal
Generate distinct skeletons with different positions/poses
Proposed Solution (ADR-037)
Phase 1: Person Count Estimation
Use CSI signal variance, eigenvalue spread, or spectral complexity to estimate the number of people
Threshold-based approach: motion energy above N sigma suggests multiple occupants
Frequency-domain decomposition: distinct motion frequencies indicate separate individuals
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Problem
Currently the signal-derived pose estimation detects at most 1 person from a single ESP32 CSI stream. When 2+ people are in the room, only one is reported. This was confirmed during live testing with ESP32 hardware connected —
GET /api/v1/pose/currentreturns 1 person even with 2 people present.Root Cause
The current
derive_pose_from_sensing()function insensing-server/src/main.rsgenerates a single synthetic skeleton from aggregate CSI features (motion score, dominant frequency, spectral centroid). It has no mechanism to:Proposed Solution (ADR-037)
Phase 1: Person Count Estimation
Phase 2: Signal Decomposition
Phase 3: Multi-Skeleton Generation
Phase 4: Neural Model Enhancement
Affected Components
sensing-server/src/main.rsderive_pose_from_sensing()— multi-person outputsignal/src/ruvsense/field_model.rssignal/src/ruvsense/pose_tracker.rsruvector/src/viewpoint/fusion.rsnn/ui/components/PoseDetectionCanvas.jsui/utils/pose-renderer.jspersons[]arrayConstraints
Acceptance Criteria
derive_pose_from_sensing()returns multiple persons when detectedRelated
signal/src/ruvsense/field_model.rs: SVD room eigenstructuresignal/src/ruvsense/pose_tracker.rs: Kalman tracker with re-IDBeta Was this translation helpful? Give feedback.
All reactions