Some checks failed
social-bot integration tests / Lint (flake8 + pep257) (push) Failing after 4s
social-bot integration tests / Core integration tests (mock sensors, no GPU) (push) Has been skipped
social-bot integration tests / Lint (flake8 + pep257) (pull_request) Failing after 3s
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
social-bot integration tests / Latency profiling (GPU, Orin) (push) Has been cancelled
## New files
- saltybot_social_msgs/msg/VoiceCommand.msg
intent + entities[] + confidence + confirmation_token + requires_confirmation
- saltybot_social/voice_command_parser.py
Pure-Python regex NLU, zero ROS2/ML deps, < 1 ms/call
30+ named intents across nav.*, social.*, system.*, config.*, confirm.*
Entity extraction: location, name, mode, level, route name
Dangerous-command flag: system.shutdown, system.restart, social.forget_me
- saltybot_social/voice_command_node.py
Subscribes /social/speech/transcript, publishes /social/voice_command
Confirmation flow with UUID token + 10 s timeout
Below-threshold → intent=fallback → LLM conversation engine
- saltybot_social/test/test_voice_command_parser.py
191 unit tests (all pass), no ROS2 runtime required
- saltybot_social/config/voice_command_params.yaml
- saltybot_social/launch/voice_command.launch.py
## Intent taxonomy
nav: go_to, go_home, follow_me, stop, wait, come_here, patrol,
set_mode (shadow/lead/side/orbit/loose/tight),
teach_route, stop_teaching, replay_route
social: remember_me, forget_me [CONFIRM], whats_my_name, tell_joke
system: battery_status, map_status, shutdown [CONFIRM], restart [CONFIRM],
volume_up, volume_down, volume_set
config: personality, sass_level, follow_mode
## Updated
- saltybot_social_msgs/CMakeLists.txt: register VoiceCommand.msg
- saltybot_social/setup.py: add voice_command_node entry point
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
26 lines
1.2 KiB
Plaintext
26 lines
1.2 KiB
Plaintext
# VoiceCommand.msg — Parsed voice command with NLU intent, entities, and confidence.
|
|
# Published by voice_command_node on /social/voice_command (Issue #137).
|
|
#
|
|
# Intent namespace:
|
|
# nav.* — navigation commands
|
|
# social.* — social / enrollment commands
|
|
# system.* — robot system control
|
|
# config.* — behavior configuration
|
|
# confirm.* — confirmation flow responses (yes / no)
|
|
# fallback — unrecognized; route to LLM conversation engine
|
|
|
|
std_msgs/Header header
|
|
|
|
string intent # e.g. "nav.go_to", "social.remember_me", "fallback"
|
|
string raw_text # Normalized transcribed text (lowercased, punctuation stripped)
|
|
string speaker_id # Who issued the command (from SpeechTranscript.speaker_id)
|
|
float32 confidence # NLU match confidence 0..1
|
|
|
|
# Entities: key=value pairs, e.g. ["location=kitchen", "mode=shadow", "name=Alice"]
|
|
# Parse with: dict(e.split("=", 1) for e in entities)
|
|
string[] entities
|
|
|
|
# Confirmation flow (for dangerous commands: system.shutdown, system.restart, social.forget_me)
|
|
bool requires_confirmation # true = awaiting confirm.yes before execution
|
|
string confirmation_token # UUID matching this command to its confirmation response
|