How ffrancam/thesis_qt works
This repository implements a ROS-based social-robot game for QT. The principal workflow is: a user interacts with the robot; ROSPlan dispatches a conversational, quiz, sensory, or emotional action; the action gathers speech and updates game state; language and affect services produce a response and expressions; QT performs the result. ENHSP supplies PDDL planning and replanning, while emoACT receives perception and robot-action signals. Several service relationships are inferred only from filenames, so unsupported wiring is intentionally omitted.
Components 22
ROS Orchestration
- ROSPlan Dispatcher
- Conversation Action
scripts/action_conversate.py - Quiz Actions
scripts/action_ask_easy.py - Emotion Action
scripts/action_check_emotion.py - Session Logger
scripts/session_logger.py
Interaction Intelligence
- Conversation Controller
scripts/conversation.py - Audio Recorder
scripts/record_audio.py - Sentiment Analysis
scripts/sentiment_analyzer.py - Response Evaluator
scripts/response_evaluator.py - LLM Engines
scripts/engines
Robot Expression
- Emotion Selector
scripts/service_emotion_selector.py - Gesture Selector
scripts/service_gesture_selector.py - QT Robot API
scripts/qt_api.py - Action Synchronizer
scripts/synchronizer.py
Planning and Game
- ROSPlan Knowledge Base
- Planner Interface
scripts/enhsp_planner_interface.py - ENHSP Wrapper
scripts/enhsp_wrapper.py - ENHSP Planner
planners/ENHSP-Public/src/planners/ENHSP.java
External Integrations
- LLM Provider
- QT Robot Hardware
- emoACT Service
Other components
- Human User
Connections 28
- Human User → Audio Recorder: speaks
- ROSPlan Dispatcher → Conversation Action: dispatches
- ROSPlan Dispatcher → Quiz Actions: dispatches
- ROSPlan Dispatcher → Emotion Action: dispatches
- Conversation Action → Audio Recorder: records speech
- Conversation Action → Conversation Controller: requests response
- Quiz Actions → Audio Recorder: records answer
- Quiz Actions → ROSPlan Knowledge Base: updates state
- Quiz Actions → ROSPlan Dispatcher: requests replanning
- Emotion Action → QT Robot API: reads robot state
- Emotion Action → emoACT Service: sends perception
- Emotion Action → ROSPlan Dispatcher: requests replanning
- Conversation Controller → LLM Engines: generates text
- LLM Engines → LLM Provider: calls completion
- Emotion Selector → LLM Engines: selects emotion
- Gesture Selector → LLM Engines: selects gesture
- Conversation Controller → Emotion Selector: requests expression
- Conversation Controller → Gesture Selector: requests gesture
- Conversation Controller → QT Robot API: speaks response
- Emotion Selector → QT Robot API: sets expression
- Gesture Selector → QT Robot API: sets gesture
- QT Robot API → QT Robot Hardware: controls robot
- Planner Interface → ENHSP Wrapper: invokes planner
- ENHSP Wrapper → ENHSP Planner: runs search
- ENHSP Planner → Planner Interface: returns plan
- Planner Interface → ROSPlan Knowledge Base: reads planning state
- Session Logger → ROSPlan Knowledge Base: records state
- Emotion Action → Session Logger: logs action