mirror of
https://github.com/ruvnet/RuView
synced 2026-08-11 20:41:44 +00:00
50a7c4a645
Closes the deferred item from R12 PABS (tick 19): 'real production
needs pose-aware forward model updating in real-time'. R12.1 implements
the closed loop in synthetic form.
Method: 50-frame walking subject + intruder entering at T=25. Compare
two PABS pipelines:
(a) Fixed-expected (R12 PABS naive)
(b) Pose-updated (R12.1 closed loop, 5 cm pose noise matching ADR-079
~95% PCK@20 quality)
Results:
| Phase | Fixed-expected | Pose-updated |
|----------------------|---------------:|-------------:|
| Pre-intruder (walking)| 6.02 | 0.30 |
| Post-intruder | 7.76 | 2.84 |
| Intruder lift | 1.29x | 9.36x |
Pose updates suppress subject-motion noise by 20x (6.02 -> 0.30),
leaving the intruder as a clean 9.36x spike. False-alarm problem
from R12 PABS RESOLVED.
R12 thread fully closed (3 ticks):
- R12 (tick 5): NEGATIVE SVD eigenshift 0.69x signal/drift
- R12 PABS (19): POSITIVE 1161x intruder detection (static)
- R12.1 (this): CLOSED 9.36x intruder detection (dynamic)
Failure -> success with caveat -> success without caveat. The
multi-tick arc that justifies a long research loop.
Production roadmap (~80 LOC + 30 LOC plumbing):
let pose = pose_tracker.estimate(csi_window)?;
let expected_scene = body_model.from_pose(pose) + room_walls;
let y_predicted = fresnel_forward.simulate(expected_scene);
let pabs = (csi_window - y_predicted).norm_sq() / csi_window.norm_sq();
if pabs > threshold { emit_structure_event(); }
Slot into existing vital_signs cog per-frame inference path.
Composes:
- R6.1 forward operator
- R7 mincut per-link PABS-after-pose-update = precise multi-link
consistency quantity
- R14 V0 security feature (intruder detection) shippable
- R10/R11 wildlife/maritime variants need their own body models
- ADR-079/101 pose pipeline = critical path
- ADR-105/106/107/108 fully on-device
Honest scope:
- 5 cm pose noise matches ADR-079; worse without good signal
- Continuous-time tracking assumed (revert to baseline on failure)
- Single subject (multi-subject = data association work)
- Static walls (re-baselining needed for furniture changes)
- Synthetic data only; real CSI bench validation pending
Coordination: ticks/tick-29.md, no PROGRESS.md edit.
After this tick, all research-loop work substantively complete:
- 13 research threads (R1, R3, R5-R15)
- 4 ADRs in privacy chain (105, 106, 107, 108)
- 3 negative-result categories
- 2 explicit self-corrections
- 3 honest-scope findings
- 9-tick R6 placement family
- 3-tick R3 cross-room re-ID arc
- 3-tick R12 structure detection arc
135 lines
2.9 KiB
JSON
135 lines
2.9 KiB
JSON
{
|
|
"config": {
|
|
"n_frames": 50,
|
|
"trajectory_start": [
|
|
2.0,
|
|
2.0
|
|
],
|
|
"trajectory_end": [
|
|
3.0,
|
|
3.5
|
|
],
|
|
"T_intrude": 25,
|
|
"intruder_pos": [
|
|
1.5,
|
|
1.5
|
|
],
|
|
"pose_tracker_std_m": 0.05
|
|
},
|
|
"pabs_fixed": [
|
|
0.0,
|
|
0.23976021993699137,
|
|
1.333289923835776,
|
|
4.7449972298645005,
|
|
16.132302954344752,
|
|
57.31864185847987,
|
|
34.59671192160786,
|
|
11.19613115945127,
|
|
5.077096413694479,
|
|
2.8125145174844848,
|
|
1.7357497400150317,
|
|
1.1422331113156927,
|
|
0.7902984026449109,
|
|
0.5844695055883886,
|
|
0.48864852071817233,
|
|
0.49495019610807023,
|
|
0.5992183799548572,
|
|
0.7707784100562064,
|
|
0.9509356710764513,
|
|
1.1010310944881865,
|
|
1.2286767924050106,
|
|
1.3666209606880533,
|
|
1.5555622650632148,
|
|
1.8511220775066175,
|
|
2.3569113678968043,
|
|
23.64420568922056,
|
|
24.766708919894374,
|
|
12.440097343342567,
|
|
5.835505088452743,
|
|
3.016239220001779,
|
|
1.6368370866065183,
|
|
0.8521752953170693,
|
|
0.35830915433305105,
|
|
0.06898386583751527,
|
|
0.11286933302231912,
|
|
1.49823836553597,
|
|
11.73405853896596,
|
|
15.012383585890914,
|
|
5.44051226107576,
|
|
2.450306678228625,
|
|
1.144765319492743,
|
|
0.43860379597713645,
|
|
0.6217089528021075,
|
|
40.28090119216048,
|
|
9.742961313951346,
|
|
2.4076884969330483,
|
|
0.8288916761760434,
|
|
0.12070720537158618,
|
|
0.66996511955866,
|
|
28.778255288508806
|
|
],
|
|
"pabs_pose_updated": [
|
|
0.0397808142334705,
|
|
0.5104513448136311,
|
|
0.8158108392380339,
|
|
0.9465194410415606,
|
|
0.5508926517254545,
|
|
0.6594979498306511,
|
|
2.0582347819010445,
|
|
0.6060528733141695,
|
|
0.12736172431501477,
|
|
0.5159119899356763,
|
|
0.01556708655354054,
|
|
0.007342537186192009,
|
|
0.002804857511672747,
|
|
0.020407791283141442,
|
|
0.00023421796933611544,
|
|
0.004093746595234462,
|
|
0.008881014219198688,
|
|
0.012739000996667617,
|
|
0.028360834638721005,
|
|
0.0004098514050666686,
|
|
0.00010859128727197401,
|
|
0.00016902339492389355,
|
|
0.054732157887574226,
|
|
0.0006514193522454603,
|
|
0.6018761650863446,
|
|
10.405708813283992,
|
|
1.6307427510614485,
|
|
0.7535171230661254,
|
|
0.6341883054891835,
|
|
1.1494872301598305,
|
|
0.4973417823824021,
|
|
0.5908828843636849,
|
|
0.19423577429400954,
|
|
1.4642997355851366,
|
|
0.08691356242442586,
|
|
1.3298358192934818,
|
|
3.4730881799534568,
|
|
0.11532793333150544,
|
|
1.7292922842852005,
|
|
2.527226823962975,
|
|
0.26166589945633334,
|
|
0.27967362635220994,
|
|
0.13730251197140705,
|
|
22.685535567483463,
|
|
0.8599415629887098,
|
|
1.0779487716387626,
|
|
1.9983295809816795,
|
|
1.2202290817498453,
|
|
1.0205655174952935,
|
|
14.910181149340993
|
|
],
|
|
"pre_intrude_means": {
|
|
"fixed": 6.018746107769026,
|
|
"pose": 0.30355570822863354
|
|
},
|
|
"post_intrude_means": {
|
|
"fixed": 7.756075151466307,
|
|
"pose": 2.841338490895822
|
|
},
|
|
"intruder_detection_lift": {
|
|
"fixed": 1.2886529872816415,
|
|
"pose": 9.360187978266477
|
|
}
|
|
} |