Add animated facial expression interface for MageDok 7" display: Core Features: ✓ 8 emotional states: - Happy (default idle) - Alert (obstacles detected) - Confused (searching, target lost) - Sleeping (prolonged inactivity) - Excited (target reacquired) - Emergency (e-stop triggered) - Listening (microphone active) - Talking (TTS output) Visual Design: ✓ Minimalist Cozmo/Vector-inspired eyes + optional mouth ✓ Canvas-based GPU-accelerated rendering ✓ 30fps target on Jetson Orin Nano ✓ Emotion-specific eye characteristics: - Scale changes (alert widened eyes) - Color coding per emotion - Pupil position tracking - Blinking rates vary by state - Eye wandering (confused searching) - Bouncing animation (excited) - Flash effect (emergency) Mouth Animation: ✓ Synchronized with text-to-speech output ✓ Shape frames: closed, smile, oh, ah, ee sounds ✓ ~10fps lip sync animation ROS2 Integration: ✓ Subscribe to /saltybot/state (emotion triggers) ✓ Subscribe to /saltybot/target_track (tracking state) ✓ Subscribe to /saltybot/obstacles (alert state) ✓ Subscribe to /social/speech/is_speaking (talking mode) ✓ Subscribe to /social/speech/is_listening (listening mode) ✓ Subscribe to /saltybot/battery (status tracking) ✓ Subscribe to /saltybot/audio_level (audio feedback) HUD Overlay: ✓ Tap-to-toggle status display ✓ Battery percentage indicator ✓ Robot state label ✓ Distance to target (meters) ✓ Movement speed (m/s) ✓ System health percentage ✓ Color-coded health indicator (green/yellow/red) Integration: ✓ New DISPLAY tab group (rose color) ✓ Full-screen rendering on 1024×600 MageDok display ✓ Responsive to robot state machine ✓ Supports kiosk mode deployment Build Status: ✅ PASSING - 126 modules (+1 for SaltyFace) - 281.57 KB main bundle (+11 KB) - 0 errors Depends on: Issue #369 (MageDok display setup) Foundation for: Issue #371 (Accessibility mode) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Merge pull request 'feat: Replace GNOME with Cage+Chromium kiosk (Issue #374)' (#377) from sl-webui/issue-374-cage-kiosk into main
Merge pull request 'feat: Replace GNOME with Cage+Chromium kiosk (Issue #374)' (#377) from sl-webui/issue-374-cage-kiosk into main
Description
SaltyLab self-balancing bot firmware (STM32F722)
Languages
Python
67.1%
C
11.4%
JavaScript
9.2%
OpenSCAD
7.8%
HTML
1.5%
Other
2.9%