sl-perception
672120bb50
feat(perception): geometric face emotion classifier (Issue #359)
Classifies facial expressions into neutral/happy/surprised/angry/sad
using geometric rules over MediaPipe Face Mesh landmarks — no ML model
required at runtime.
Rules
-----
surprised: brow_raise > 0.12 AND eye_open > 0.07 AND mouth_open > 0.07
happy: smile > 0.025 (lip corners above lip midpoint)
angry: brow_furl > 0.02 AND smile < 0.01
sad: smile < -0.025 AND brow_furl < 0.015
neutral: default
Changes
-------
- saltybot_scene_msgs/msg/FaceEmotion.msg — per-face emotion + features
- saltybot_scene_msgs/msg/FaceEmotionArray.msg
- saltybot_scene_msgs/CMakeLists.txt — register new msgs
- _face_emotion.py — pure-Python: FaceLandmarks, compute_features,
classify_emotion, detect_emotion, from_mediapipe
- face_emotion_node.py — subscribes /camera/color/image_raw,
publishes /saltybot/face_emotions (≤15 fps)
- test/test_face_emotion.py — 48 tests, all passing
- setup.py — add face_emotion entry point
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 14:39:49 -05:00
..
2026-03-03 14:03:11 -05:00
2026-03-02 20:46:37 -05:00
2026-03-02 11:11:48 -05:00
2026-03-02 17:32:41 -05:00
2026-03-02 14:19:27 -05:00
2026-03-03 14:39:49 -05:00
2026-03-02 12:51:14 -05:00
2026-03-02 12:21:35 -05:00
2026-03-03 13:32:41 -05:00
2026-03-03 06:53:04 -05:00
2026-03-03 11:33:22 -05:00
2026-03-03 06:45:43 -05:00
2026-03-02 11:50:56 -05:00
2026-03-02 21:39:28 -05:00
2026-03-02 21:12:51 -05:00
2026-03-02 13:26:07 -05:00
2026-03-03 00:41:39 -05:00