|
|
a5cd544e9d
|
fix(bom): replace MGJ2D121505SC with R2D-0505/R — wrong part (gate driver, not ±5V supply)
|
2026-04-26 21:57:11 -07:00 |
|
|
|
451b7ee341
|
feat: hardware BOM + fix critical daemon bugs (gaze dead code, FIST mapping)
- Add hardware/ directory structure (cad, cam, parts, sim, docs)
- Add hardware/bom/merlin-bci-rev0.csv — ADS1299 + ESP32-WROOM-32E full BOM
with passive values for 8-ch EEG front-end, isolated ±5V supply, WiFi streaming
- Fix: wire gaze_est.estimate(face) into camera loop (was instantiated but never called)
- Fix: add fist, gaze_left/right/up/down to DEFAULT_MAPPINGS
- Add: ActionExecutor.backend property (replace _backend direct access in /status)
- Add: scroll_left/right, key_ctrl_z/c/v to xdotool + pyautogui backends
|
2026-04-26 21:38:21 -07:00 |
|
|
|
6188f332ba
|
feat(merlin/phase-a): Phase A complete — camera daemon, OS input injection, manage.sh
|
2026-04-26 21:26:17 -07:00 |
|
|
|
5d66dbb56b
|
feat(daemon): implement camera loop + FastAPI control API on port 8522
|
2026-04-26 21:24:09 -07:00 |
|
|
|
5af689389e
|
feat(actions): implement ActionMapper config-driven gesture→action lookup
|
2026-04-26 21:21:51 -07:00 |
|
|
|
51a22cbe47
|
feat(actions): implement ActionExecutor with xdotool and pyautogui backends
|
2026-04-26 21:20:06 -07:00 |
|
|
|
0dcc25164d
|
feat(features): implement BlinkDetector, GazeEstimator, HeadPoseEstimator, HandGestureDetector
- BlinkDetector: EAR-based blink detection (left/right/both), 6 tests
- GazeEstimator: iris-to-eye-corner ratio gaze direction, frozen GazeDirection dataclass, 4 tests
- HeadPoseEstimator: velocity-based nod/shake/tilt detection (stateful, no tests — daemon smoke test)
- HandGestureDetector: normalize_hand + tip-distance open/pinch/fist classifier (no tests — daemon smoke test)
- TDD: blink and gaze followed RED→GREEN cycle; Black applied to all 6 files
|
2026-04-26 21:13:59 -07:00 |
|
|
|
072ee3f36c
|
chore: scaffold Merlin Phase A repo
|
2026-04-26 21:03:19 -07:00 |
|