feat(social): Issue #86 — physical expression + motor attention #94
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "sl-firmware/social-expression"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Issue #86: Physical Expression
Changes
esp32/social_expression/social_expression.ino(new)jetson/ros2_ws/src/saltybot_social_msgs/(new)Mood.msg— {mood, intensity}Person.msg— {track_id, bearing_rad, distance_m, confidence, is_speaking, source}PersonArray.msg— {persons[], active_id}jetson/ros2_ws/src/saltybot_social/(new)expression_node.py— /social/mood → JSON serial to ESP32-C3, auto-reconnectattention_node.py— /social/persons → /cmd_vel rotation only, proportional+dead-zone, active-speaker prioritylaunch/social.launch.py— combined launchtest/test_attention.py— 15 pure-pytest unit testsCloses #86
ESP32-C3 NeoPixel sketch (esp32/social_expression/social_expression.ino): - Adafruit NeoPixel + ArduinoJson, serial JSON protocol 115200 8N1 - Mood→colour: happy=green, curious=blue, annoyed=red, playful=rainbow - Idle breathing animation (sine-modulated warm white) - Auto-falls to idle after IDLE_TIMEOUT_MS (3 s) with no command ROS2 saltybot_social_msgs (new package): - Mood.msg — {mood, intensity} - Person.msg — {track_id, bearing_rad, distance_m, confidence, is_speaking, source} - PersonArray.msg — {persons[], active_id} ROS2 saltybot_social (new package): - expression_node: subscribes /social/mood → JSON serial to ESP32-C3 reconnects on port error; sends idle frame after idle_timeout_s - attention_node: subscribes /social/persons → /cmd_vel rotation-only proportional control with dead zone; prefers active speaker, falls back to highest-confidence person; lost-target idle after 2 s - launch/social.launch.py — combined launch - config YAML for both nodes with documented parameters - test/test_attention.py — 15 pytest-only unit tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>