# h-embodvis/turbovla architecture

> Architecture diagram of the GitHub repository h-embodvis/turbovla, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/h-embodvis/turbovla
- Repository: https://github.com/h-embodvis/turbovla

## Overview

TurboVLA is a vision-language-action model and benchmark workflow for training compact robot-manipulation policies and evaluating them on LIBERO and RoboTwin. The main path is benchmark data through dataset preparation and training into a shared vision-language-action model, then policy adaptation and simulator rollouts. The graph retains the distinct LIBERO and RoboTwin evaluation routes and the model’s encoder, fusion, and action-prediction layers. Some wiring is based on README descriptions because several entrypoints and model components were not sampled.

Main entry points: [`turbovla/models/turbovla.py`](https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/turbovla.py) (TurboVLA model), [`turbovla/evaluation/policy.py`](https://github.com/h-embodvis/turbovla/blob/main/turbovla/evaluation/policy.py) (LIBERO policy), [`experiments/robotwin/evaluation/model2robotwin_interface.py`](https://github.com/h-embodvis/turbovla/blob/main/experiments/robotwin/evaluation/model2robotwin_interface.py) (Robot policy interface), [`turbovla/training/trainer.py`](https://github.com/h-embodvis/turbovla/blob/main/turbovla/training/trainer.py) (Training loop)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data preparation"]
  node_libero_data[("LIBERO RLDS data")]
  node_robotwin_data[("RoboTwin datasets")]
  node_libero_loader["LIBERO loader<br/>[libero_rlds.py]"]
  node_mixed_loader["Mixed-suite loader<br/>[mixed_suite.py]"]
  node_suite_stats["Suite statistics<br/>[suite_stats.py]"]
  node_robotwin_registry["RoboTwin data config<br/>[data_config.py]"]
end

subgraph group_model["TurboVLA model"]
  node_model_config["Model configuration<br/>[configuration.py]"]
  node_text_encoder["Text encoder<br/>[text_encoder.py]"]
  node_vision_encoder["Vision encoder<br/>[vision_encoder.py]"]
  node_interaction["Vision-language fusion<br/>[fusion.py]"]
  node_vla_model["TurboVLA model<br/>[turbovla.py]"]
  node_action_head["Action head<br/>[action_head.py]"]
end

subgraph group_training["Training"]
  node_libero_train["LIBERO training entry<br/>[train.py]"]
  node_robotwin_train["RoboTwin training entry<br/>[train.py]"]
  node_mixed_train["Mixed training setup<br/>[train_mixed.py]"]
  node_trainer["Training loop<br/>[trainer.py]"]
end

subgraph group_libero["LIBERO evaluation"]
  node_libero_eval_entry["LIBERO evaluation<br/>[evaluate.py]"]
  node_libero_policy["LIBERO policy<br/>[policy.py]"]
  node_suite_policy["Suite policy adapter<br/>[suite_policy.py]"]
end

subgraph group_robotwin["RoboTwin evaluation"]
  node_robotwin_eval["RoboTwin evaluation<br/>[evaluate.py]"]
  node_robotwin_interface["Robot policy interface"]
end

node_libero_user(("LIBERO user"))
node_robotwin_user(("RoboTwin user"))
node_libero_sim(("LIBERO simulator"))
node_policy_service["Websocket policy service"]
node_robotwin_sim(("RoboTwin simulator"))

node_libero_data -->|"loads episodes"| node_libero_loader
node_libero_loader -->|"extends loader"| node_mixed_loader
node_suite_stats -->|"normalizes samples"| node_mixed_loader
node_robotwin_data -->|"configures datasets"| node_robotwin_registry
node_libero_user -->|"starts training"| node_libero_train
node_robotwin_user -->|"starts training"| node_robotwin_train
node_libero_train -->|"configures run"| node_mixed_train
node_robotwin_train -->|"starts training"| node_trainer
node_mixed_train -->|"starts training"| node_trainer
node_mixed_loader -->|"provides batches"| node_trainer
node_trainer -->|"optimizes"| node_vla_model
node_model_config -->|"configures"| node_vla_model
node_vla_model -->|"encodes instructions"| node_text_encoder
node_vla_model -->|"encodes images"| node_vision_encoder
node_vla_model -->|"fuses features"| node_interaction
node_vla_model -->|"predicts chunks"| node_action_head
node_libero_user -->|"starts evaluation"| node_libero_eval_entry
node_libero_eval_entry -->|"runs policy"| node_suite_policy
node_suite_policy -->|"extends policy"| node_libero_policy
node_libero_policy -->|"infers actions"| node_vla_model
node_libero_sim -->|"sends observations"| node_libero_policy
node_libero_policy -->|"returns actions"| node_libero_sim
node_robotwin_user -->|"starts evaluation"| node_robotwin_eval
node_robotwin_eval -->|"launches rollout"| node_robotwin_interface
node_robotwin_interface -.->|"requests actions"| node_policy_service
node_robotwin_sim -->|"sends observations"| node_robotwin_interface
node_robotwin_interface -->|"returns actions"| node_robotwin_sim

click node_libero_loader "https://github.com/h-embodvis/turbovla/blob/main/turbovla/data/libero_rlds.py"
click node_mixed_loader "https://github.com/h-embodvis/turbovla/blob/main/turbovla/data/mixed_suite.py"
click node_suite_stats "https://github.com/h-embodvis/turbovla/blob/main/turbovla/data/suite_stats.py"
click node_robotwin_registry "https://github.com/h-embodvis/turbovla/blob/main/experiments/robotwin/data_registry/data_config.py"
click node_model_config "https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/configuration.py"
click node_text_encoder "https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/text_encoder.py"
click node_vision_encoder "https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/vision_encoder.py"
click node_interaction "https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/components/fusion.py"
click node_vla_model "https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/turbovla.py"
click node_action_head "https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/action_head.py"
click node_libero_train "https://github.com/h-embodvis/turbovla/blob/main/experiments/libero/train.py"
click node_robotwin_train "https://github.com/h-embodvis/turbovla/blob/main/experiments/robotwin/train.py"
click node_mixed_train "https://github.com/h-embodvis/turbovla/blob/main/turbovla/training/train_mixed.py"
click node_trainer "https://github.com/h-embodvis/turbovla/blob/main/turbovla/training/trainer.py"
click node_libero_eval_entry "https://github.com/h-embodvis/turbovla/blob/main/experiments/libero/evaluate.py"
click node_libero_policy "https://github.com/h-embodvis/turbovla/blob/main/turbovla/evaluation/policy.py"
click node_suite_policy "https://github.com/h-embodvis/turbovla/blob/main/turbovla/evaluation/suite_policy.py"
click node_robotwin_eval "https://github.com/h-embodvis/turbovla/blob/main/experiments/robotwin/evaluate.py"
click node_robotwin_interface "https://github.com/h-embodvis/turbovla/blob/main/experiments/robotwin/evaluation/model2robotwin_interface.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_libero_data,node_robotwin_data,node_libero_loader,node_mixed_loader,node_suite_stats,node_robotwin_registry,node_libero_user,node_robotwin_user toneBlue
class node_model_config,node_text_encoder,node_vision_encoder,node_interaction,node_vla_model,node_action_head toneAmber
class node_libero_train,node_robotwin_train,node_mixed_train,node_trainer toneMint
class node_libero_eval_entry,node_libero_policy,node_suite_policy toneRose
class node_robotwin_eval,node_robotwin_interface,node_libero_sim,node_policy_service,node_robotwin_sim toneIndigo
```

## Components

### Data preparation

- **LIBERO RLDS data**
- **RoboTwin datasets**
- [LIBERO loader](https://github.com/h-embodvis/turbovla/blob/main/turbovla/data/libero_rlds.py): `turbovla/data/libero_rlds.py`
- [Mixed-suite loader](https://github.com/h-embodvis/turbovla/blob/main/turbovla/data/mixed_suite.py): `turbovla/data/mixed_suite.py`
- [Suite statistics](https://github.com/h-embodvis/turbovla/blob/main/turbovla/data/suite_stats.py): `turbovla/data/suite_stats.py`
- [RoboTwin data config](https://github.com/h-embodvis/turbovla/blob/main/experiments/robotwin/data_registry/data_config.py): `experiments/robotwin/data_registry/data_config.py`

### TurboVLA model

- [Model configuration](https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/configuration.py): `turbovla/models/configuration.py`
- [Text encoder](https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/text_encoder.py): `turbovla/models/text_encoder.py`
- [Vision encoder](https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/vision_encoder.py): `turbovla/models/vision_encoder.py`
- [Vision-language fusion](https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/components/fusion.py): `turbovla/models/components/fusion.py`
- [TurboVLA model](https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/turbovla.py): `turbovla/models/turbovla.py`
- [Action head](https://github.com/h-embodvis/turbovla/blob/main/turbovla/models/action_head.py): `turbovla/models/action_head.py`

### Training

- [LIBERO training entry](https://github.com/h-embodvis/turbovla/blob/main/experiments/libero/train.py): `experiments/libero/train.py`
- [RoboTwin training entry](https://github.com/h-embodvis/turbovla/blob/main/experiments/robotwin/train.py): `experiments/robotwin/train.py`
- [Mixed training setup](https://github.com/h-embodvis/turbovla/blob/main/turbovla/training/train_mixed.py): `turbovla/training/train_mixed.py`
- [Training loop](https://github.com/h-embodvis/turbovla/blob/main/turbovla/training/trainer.py): `turbovla/training/trainer.py`

### LIBERO evaluation

- [LIBERO evaluation](https://github.com/h-embodvis/turbovla/blob/main/experiments/libero/evaluate.py): `experiments/libero/evaluate.py`
- [LIBERO policy](https://github.com/h-embodvis/turbovla/blob/main/turbovla/evaluation/policy.py): `turbovla/evaluation/policy.py`
- [Suite policy adapter](https://github.com/h-embodvis/turbovla/blob/main/turbovla/evaluation/suite_policy.py): `turbovla/evaluation/suite_policy.py`

### RoboTwin evaluation

- [RoboTwin evaluation](https://github.com/h-embodvis/turbovla/blob/main/experiments/robotwin/evaluate.py): `experiments/robotwin/evaluate.py`
- [Robot policy interface](https://github.com/h-embodvis/turbovla/blob/main/experiments/robotwin/evaluation/model2robotwin_interface.py): `experiments/robotwin/evaluation/model2robotwin_interface.py`

### Other components

- **LIBERO user**
- **RoboTwin user**
- **LIBERO simulator**
- **Websocket policy service**
- **RoboTwin simulator**

## Connections

- LIBERO RLDS data → LIBERO loader: loads episodes
- LIBERO loader → Mixed-suite loader: extends loader
- Suite statistics → Mixed-suite loader: normalizes samples
- RoboTwin datasets → RoboTwin data config: configures datasets
- LIBERO user → LIBERO training entry: starts training
- RoboTwin user → RoboTwin training entry: starts training
- LIBERO training entry → Mixed training setup: configures run
- RoboTwin training entry → Training loop: starts training
- Mixed training setup → Training loop: starts training
- Mixed-suite loader → Training loop: provides batches
- Training loop → TurboVLA model: optimizes
- Model configuration → TurboVLA model: configures
- TurboVLA model → Text encoder: encodes instructions
- TurboVLA model → Vision encoder: encodes images
- TurboVLA model → Vision-language fusion: fuses features
- TurboVLA model → Action head: predicts chunks
- LIBERO user → LIBERO evaluation: starts evaluation
- LIBERO evaluation → Suite policy adapter: runs policy
- Suite policy adapter → LIBERO policy: extends policy
- LIBERO policy → TurboVLA model: infers actions
- LIBERO simulator → LIBERO policy: sends observations
- LIBERO policy → LIBERO simulator: returns actions
- RoboTwin user → RoboTwin evaluation: starts evaluation
- RoboTwin evaluation → Robot policy interface: launches rollout
- Robot policy interface → Websocket policy service: requests actions
- RoboTwin simulator → Robot policy interface: sends observations
- Robot policy interface → RoboTwin simulator: returns actions
