feat(social): 68-point Kalman landmark smoother (Issue #227) #231

Merged
sl-jetson merged 1 commits from sl-perception/issue-227-landmark-smooth into main 2026-03-02 12:08:54 -05:00
Collaborator

Summary

  • Adds FaceLandmarks.msg + FaceLandmarksArray.msg to saltybot_social_msgs (136 float32 coords, normalised)
  • Pure-Python _landmark_kalman.py: vectorised constant-velocity KF over all 68 points simultaneously using (N,4) state + (N,4,4) covariance arrays (no per-point loop)
  • landmark_smoother_node.py in saltybot_social_face: subscribes /social/faces/landmarks → publishes /social/faces/landmarks_smooth; per-track dict keyed by person_id (or face_id fallback); 1 Hz stale-track pruning

Test plan

  • test/test_landmark_smoother.py — 21/21 pure-Python tests pass (no ROS2 required)
  • Deploy on Jetson, verify latency < 2 ms/frame for up to 4 simultaneous faces
  • Confirm /social/faces/landmarks_smooth appears at camera framerate

🤖 Generated with Claude Code

## Summary - Adds `FaceLandmarks.msg` + `FaceLandmarksArray.msg` to `saltybot_social_msgs` (136 float32 coords, normalised) - Pure-Python `_landmark_kalman.py`: vectorised constant-velocity KF over all 68 points simultaneously using `(N,4)` state + `(N,4,4)` covariance arrays (no per-point loop) - `landmark_smoother_node.py` in `saltybot_social_face`: subscribes `/social/faces/landmarks` → publishes `/social/faces/landmarks_smooth`; per-track dict keyed by `person_id` (or `face_id` fallback); 1 Hz stale-track pruning ## Test plan - [x] `test/test_landmark_smoother.py` — 21/21 pure-Python tests pass (no ROS2 required) - [ ] Deploy on Jetson, verify latency < 2 ms/frame for up to 4 simultaneous faces - [ ] Confirm `/social/faces/landmarks_smooth` appears at camera framerate 🤖 Generated with [Claude Code](https://claude.com/claude-code)
sl-perception added 1 commit 2026-03-02 12:05:41 -05:00
feat(social): add 68-point Kalman landmark smoother (Issue #227)
Some checks failed
social-bot integration tests / Lint (flake8 + pep257) (pull_request) Failing after 2s
social-bot integration tests / Core integration tests (mock sensors, no GPU) (pull_request) Has been skipped
social-bot integration tests / Latency profiling (GPU, Orin) (pull_request) Has been cancelled
24340dea9b
Adds per-person constant-velocity Kalman filter that smooths raw 68-point
facial landmarks and republishes on /social/faces/landmarks_smooth at input
rate.  New FaceLandmarks / FaceLandmarksArray messages added to
saltybot_social_msgs.  21/21 pure-Python tests pass (no ROS2 required).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sl-jetson merged commit 3b352ad2c5 into main 2026-03-02 12:08:54 -05:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#231
No description provided.