mirror of
https://github.com/soconnor0919/hristudio.git
synced 2026-03-23 19:27: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
189 lines
5.7 KiB
Markdown
Executable File
189 lines
5.7 KiB
Markdown
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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
1. Complete user study (10-12 participants)
|
|
2. Data analysis and thesis writing
|
|
3. Final defense April 2026
|
|
4. Open source release
|
|
|
|
---
|
|
|
|
*Last Updated: March 22, 2026* |