Skip to content

dependable-cps/AdaptVR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AegisVR: Leveraging Reinforcement Learning and LLMs for Personalized Cybersickness Mitigation and Reasoning in VR

AegisVR a reinforcement learning (RL)–based adaptive cybersickness mitigation framework to predict, explain, and mitigate cybersickness. It integrates a Transformer-based cybersickness severity predictor as RL reward shaping, a PPO-based reinforcement learning (RL) agent, and an LLM-powered dialogue engine that interprets user feedback and provides natural language explanations.


AegisVR Scene Hierarchy

Overview

Goal: Trigger appropriate mitigation such as Dynamic Field of View (DFOV) and Dynamic Gaussian Blur (DGB) with proper intensity based on both user state and model predictions, maintaining immersion while reducing discomfort.

Core Idea:
AegisVR continuously observes real-time user signals (e.g., eye-tracking, head motion, and scene context) and applies an RL policy trained to optimize cybersickness mitigation while integrating LLM-based reasoning for interactive and human-in-the-loop adaptation.


Requirements

Component Version Notes
Unity 6 LTS or newer Supports URP & ML-Agents
Unity ML-Agents Toolkit 4.0.0 For PPO training and model export (ML-Agents Guide)
Python 3.9 – 3.11 Backend for training
VR SDK Oculus / OpenXR Required for XR runtime
Tobii XR SDK 4.x For eye and head tracking data
OpenAI API (GPT) gpt-4o-mini Dialogue reasoning & explanation generation

Repository Structure

AdaptVR/
│
├── Assets/
│   ├── Scenes/
│   │   └── AdaptVR.unity
│   ├── Scripts/
│   │   ├── RL_Agent/
│   │   │   ├── AdaptVRAgent.cs
│   │   │   ├── AdaptVRControl.cs
│   │   │   ├── AdaptVRLiveSensorsXR.cs
│   │   │   ├── MitigationManager.cs
│   │   └── UserStudy/
│   │       ├── SpeechRecogniser.cs
│   │       ├── VoiceIntentClassifier.cs
│   │       ├── UserRequest.cs
│   │       ├── HilCsvLogger.cs
│   │       ├── ParticipantSessionCounter.cs
│   │       └── ParticipantIdSettings.cs
│   └── Models/
│       └── AdaptVR.onnx
│
├── Training/
│   └── config_adaptvr.yaml
│
├── Image/
│
└── README.md

RL Agent Training

PPO Configuration (Training/config_adaptvr.yaml)

behaviors:
  AdaptVR:
    trainer_type: ppo
    hyperparameters:
      batch_size: 1024
      buffer_size: 10240
      learning_rate: 3.0e-4
      beta: 5.0e-3
      epsilon: 0.2
      lambd: 0.95
      num_epoch: 3
    network_settings:
      normalize: true
      hidden_units: 256
      num_layers: 2
    reward_signals:
      extrinsic:
        strength: 1.0
        gamma: 0.99
    max_steps: 2.0e6
    time_horizon: 128
    summary_freq: 20000

This configuration trains the RL agent using PPO to minimize cybersickness (ΔFMS) and action instability while encouraging comfort-preserving transitions.


Training Environment Setup

AegisVR training follows the standard Unity ML-Agents workflow.
Refer to:
👉 Unity ML-Agents Toolkit – Training Environments

Example training command:

mlagents-learn Training/config_adaptvr.yaml --run-id=AdaptVR_train --env=Builds/AdaptVR.exe --force

Once training completes, the exported .onxx model (e.g., AdaptVR.onxx) can be loaded in Unity for runtime inference.


Inference Runtime Configuration

During runtime, AegisVR operates in inference-only mode using the pretrained RL model.

AdaptVR Scene Hierarchy

AegisVR scene hierarchy showing integrated components.


Scene Composition

GameObject Description
DL_Detection_Model Transformer model for cybersickness severity prediction (ONNX).
XR Origin (XR Rig) Player rig for VR locomotion and tracking.
├── RL_Agent RL inference component using the trained PPO model (AdaptVR.ONNX).
├── UserStudy (HIL) Collects user comfort data, triggers LLM reasoning, and logs preferences.
├── XR Interaction Manager / EventSystem Handles XR controller and event input.
LLM GPT reasoning node providing explanations and recommendations.
TobbiEyeTracking (Optional) Eye-tracking module for gaze vector input.
DFOV / DGB Adaptive mitigation techniques managed via RL policy.
MitigationManager Central execution hub for applying DFOV/DGB actions.
Data Session parameters, and configuration.

GPT Reasoning Integration

The LLM module integrates GPT-4o-mini for:

  • Parsing voice feedback (via SpeechRecogniser and VoiceIntentClassifier).
  • Explaining selected mitigation actions.
  • Logging reasoning outputs in CSV for personalization.

Configuration:

  • Set your OpenAI API key in Unity’s environment configuration.

ChatGPT Client Settings

ChatGPT Client configuration showing API URL, Key, Organization, and Model settings.

Setup Instructions

  1. Fill the following fields:
    • API URL: https://api.openai.com/v1/chat/completions
    • API Key: Your OpenAI API key
    • API Organization: (Optional) your organization ID
    • API Model: gpt-4o-mini
  2. Toggle Debug to log reasoning outputs in the Unity Console.

The reasoning process runs asynchronously to maintain frame-time efficiency.

User (voice input)
   ↓
Speech Recogniser → Voice Intent Classifier → GPT Reasoning Engine
   ↓
RL Agent (AdaptVRAgent) → MitigationManager (DFOV / DGB)
   ↓
HilCsvLogger (records feedback, policy, reasoning)

All logs include user ID, session ID, timestamp, predicted severity, and chosen mitigation level.

References


About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors