mirror of
https://github.com/soconnor0919/hristudio.git
synced 2026-03-24 03:37:51 -04:00
- Move 30+ outdated docs to docs/_archive/ - Move obsolete root files to _archive/ - Update README.md (Better Auth, current features) - Update docs/README.md (new architecture diagram) - Update docs/quick-reference.md (consolidated) - Update docs/project-status.md (March 2026 state) - Update docs/nao6-quick-reference.md (14 actions, Docker services) - Update docs/implementation-guide.md (Better Auth, git submodule) - Update docs/proposal.tex (timeline updates) - Archive errors.txt, plugin_dump.json, test HTML files
5.7 KiB
Executable File
5.7 KiB
Executable File
HRIStudio Project Status
Current Status: Active Development
Project Version: 1.0.0
Last Updated: March 2026
Overall Completion: 98%
Status: Thesis research phase
Executive Summary
HRIStudio is a complete platform for Wizard-of-Oz HRI research. Key milestones achieved:
Recent Updates (March 2026)
- ✅ WebSocket real-time trial updates implemented
- ✅ Better Auth migration complete (replaced NextAuth.js)
- ✅ Docker integration for NAO6 (3 services: nao_driver, ros_bridge, ros_api)
- ✅ Conditional branching with wizard choices and convergence
- ✅ 14 NAO6 robot actions (speech, movement, gestures, sensors, LEDs, animations)
- ✅ Plugin identifier system for clean plugin lookup
- ✅ Seed script with branching experiment structure
Key Achievements
- ✅ Complete backend with 12 tRPC routers
- ✅ Professional UI with unified experiences
- ✅ Full TypeScript coverage (strict mode)
- ✅ Role-based access control (4 roles)
- ✅ 31 database tables with relationships
- ✅ Experiment designer with 26+ core blocks
- ✅ Real-time trial execution wizard interface
- ✅ NAO6 robot integration via ROS2 Humble
Architecture
Three-Layer Architecture
┌─────────────────────────────────────────────────────┐
│ User Interface Layer │
│ ├── Experiment Designer (visual programming) │
│ ├── Wizard Interface (trial execution) │
│ ├── Observer View (live monitoring) │
│ └── Participant View (thesis study) │
├─────────────────────────────────────────────────────┤
│ Data Management Layer │
│ ├── PostgreSQL + Drizzle ORM │
│ ├── tRPC API (12 routers) │
│ └── Better Auth (role-based auth) │
├─────────────────────────────────────────────────────┤
│ Robot Integration Layer │
│ ├── Plugin system (robot-agnostic) │
│ ├── ROS2 via rosbridge WebSocket │
│ └── Docker deployment (nao_driver, ros_bridge) │
└─────────────────────────────────────────────────────┘
Plugin Identifier System
plugins table:
- id: UUID (primary key)
- identifier: varchar (unique, e.g. "nao6-ros2")
- name: varchar (display, e.g. "NAO6 Robot (ROS2)")
- robotId: UUID (optional FK to robots)
- actionDefinitions: JSONB
actions table:
- type: "plugin.action" (e.g., "nao6-ros2.say_with_emotion")
- pluginId: varchar (references plugins.identifier)
Branching Flow
Experiment steps support conditional branching with wizard choices:
Step 3 (Comprehension Check)
└── wizard_wait_for_response
├── Click "Correct" → setLastResponse("Correct") → nextStepId=step4a
└── Click "Incorrect" → setLastResponse("Incorrect") → nextStepId=step4b
Step 4a/4b (Branches)
└── conditions.nextStepId: step5.id → convergence point
Step 5 (Story Continues)
└── Linear progression to Step 6
NAO6 Robot Actions (14 total)
| Category | Actions |
|---|---|
| Speech | say, say_with_emotion, wave_goodbye |
| Movement | walk, turn, move_to_posture |
| Gestures | play_animation, gesture |
| Sensors | get_sensors, bumper_state, touch_state |
| LEDs | set_eye_leds, set_breathing_lights |
Tech Stack
| Component | Technology | Version |
|---|---|---|
| Framework | Next.js | 15-16.x |
| Language | TypeScript | 5.x (strict) |
| Database | PostgreSQL | 14+ |
| ORM | Drizzle | latest |
| Auth | NextAuth.js | v5 |
| API | tRPC | latest |
| UI | Tailwind + shadcn/ui | latest |
| Real-time | WebSocket | with polling fallback |
| Robot | ROS2 Humble | via rosbridge |
| Package Manager | Bun | latest |
Development Status
Completed Features
| Feature | Status | Notes |
|---|---|---|
| Database Schema | ✅ | 31 tables |
| Authentication | ✅ | 4 roles |
| Experiment Designer | ✅ | 26+ blocks |
| Wizard Interface | ✅ | 3-panel design |
| Real-time Updates | ✅ | WebSocket |
| Plugin System | ✅ | Robot-agnostic |
| NAO6 Integration | ✅ | Docker deployment |
| Conditional Branching | ✅ | Wizard choices |
| Mock Robot | ✅ | Development mode |
Known Issues
| Issue | Status | Notes |
|---|---|---|
| robots.executeSystemAction | Known error | Fallback works |
SSH Deployment Commands
# Local development
bun dev
# Database
bun db:push # Push schema changes
bun db:seed # Seed with test data
bun run docker:up # Start PostgreSQL
# Quality
bun typecheck # TypeScript validation
bun lint # ESLint
Thesis Timeline
Current phase: March 2026 - Implementation complete, preparing user study
| Phase | Status | Date |
|---|---|---|
| Proposal | ✅ | Sept 2025 |
| IRB Application | ✅ | Dec 2025 |
| Implementation | ✅ | Feb 2026 |
| User Study | 🔄 In Progress | Mar-Apr 2026 |
| Defense | Scheduled | April 2026 |
Next Steps
- Complete user study (10-12 participants)
- Data analysis and thesis writing
- Final defense April 2026
- Open source release
Last Updated: March 22, 2026