# lifelong-robot-learning/libero architecture

> Architecture diagram of the GitHub repository lifelong-robot-learning/libero, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lifelong-robot-learning/libero
- Repository: https://github.com/lifelong-robot-learning/libero

## Overview

LIBERO is a benchmark and research framework for lifelong and multitask robot learning. The main workflow selects a task suite and demonstrations, trains a visuomotor policy with a lifelong-learning method, and evaluates task success in simulated manipulation environments. Its runtime spans task/environment construction, demonstration datasets, policy networks, learning algorithms, and evaluation. The README documents suite, policy, algorithm, and evaluation capabilities; sampled training and environment code shows parts of their wiring. The benchmark implementation itself is absent from the supplied tree, so its internals are not mapped.

Main entry points: [`libero/libero/envs/bddl_base_domain.py`](https://github.com/lifelong-robot-learning/libero/blob/master/libero/libero/envs/bddl_base_domain.py) (BDDL domain), [`libero/lifelong/models/bc_transformer_policy.py`](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/bc_transformer_policy.py) (BC Transformer), [`libero/lifelong/main.py`](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/main.py) (Experiment runner), [`libero/libero/envs/env_wrapper.py`](https://github.com/lifelong-robot-learning/libero/blob/master/libero/libero/envs/env_wrapper.py) (Environment API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_simulation["Task simulation"]
  node_task_spec["Task suites"]
  node_domain["BDDL domain"]
  node_problems["Task definitions"]
  node_objects["Scene objects"]
  node_regions["Region samplers"]
  node_arenas["Scene arenas"]
  node_robots["Robot models"]
  node_env_api["Environment API<br/>[env_wrapper.py]"]
  node_vector_env["Vector environments<br/>[venv.py]"]
end

subgraph group_learning["Learning workflow"]
  node_trainer["Experiment runner<br/>[main.py]"]
  node_algorithm["Learning algorithms<br/>[base.py]"]
  node_packnet["PackNet<br/>[packnet.py]"]
  node_evaluator["Success evaluation<br/>[metric.py]"]
end

subgraph group_networks["Policy networks"]
  node_policy_base["Policy base<br/>[base_policy.py]"]
  node_bc_transformer["BC Transformer"]
  node_bc_rnn["BC RNN<br/>[bc_rnn_policy.py]"]
  node_bc_vilt["BC ViLT<br/>[bc_vilt_policy.py]"]
  node_rgb_encoder["RGB encoders<br/>[rgb_modules.py]"]
  node_language_encoder["Language encoders"]
  node_transformer["Transformer modules"]
  node_policy_head["Action head<br/>[policy_head.py]"]
end

subgraph group_data["Demonstration data"]
  node_demonstrations[("Demonstrations")]
  node_dataset["Sequence datasets<br/>[datasets.py]"]
end

node_researcher(("Researcher"))

node_researcher -->|"selects suite"| node_task_spec
node_task_spec -->|"configures tasks"| node_trainer
node_researcher -->|"downloads data"| node_demonstrations
node_demonstrations -.->|"supplies samples"| node_dataset
node_trainer -->|"builds datasets"| node_dataset
node_trainer -->|"selects algorithm"| node_algorithm
node_trainer -->|"selects policy"| node_policy_base
node_algorithm -->|"optimizes policy"| node_policy_base
node_packnet -->|"extends"| node_algorithm
node_bc_transformer -->|"extends"| node_policy_base
node_bc_transformer -->|"uses"| node_rgb_encoder
node_bc_transformer -->|"uses"| node_language_encoder
node_bc_transformer -->|"uses"| node_transformer
node_bc_transformer -->|"uses"| node_policy_head
node_trainer -->|"evaluates progress"| node_evaluator
node_evaluator -->|"creates environments"| node_env_api
node_evaluator -.->|"evaluates tasks"| node_task_spec
node_env_api -.->|"wraps environments"| node_vector_env
node_problems -->|"subclasses"| node_domain
node_domain -->|"loads objects"| node_objects
node_domain -->|"uses samplers"| node_regions
node_domain -->|"constructs arenas"| node_arenas
node_domain -->|"configures robots"| node_robots
node_env_api -.->|"exposes simulation"| node_domain

click node_domain "https://github.com/lifelong-robot-learning/libero/blob/master/libero/libero/envs/bddl_base_domain.py"
click node_problems "https://github.com/lifelong-robot-learning/libero/tree/master/libero/libero/envs/problems"
click node_objects "https://github.com/lifelong-robot-learning/libero/tree/master/libero/libero/envs/objects"
click node_regions "https://github.com/lifelong-robot-learning/libero/blob/master/libero/libero/envs/regions/base_region_sampler.py"
click node_arenas "https://github.com/lifelong-robot-learning/libero/tree/master/libero/libero/envs/arenas"
click node_robots "https://github.com/lifelong-robot-learning/libero/tree/master/libero/libero/envs/robots"
click node_env_api "https://github.com/lifelong-robot-learning/libero/blob/master/libero/libero/envs/env_wrapper.py"
click node_vector_env "https://github.com/lifelong-robot-learning/libero/blob/master/libero/libero/envs/venv.py"
click node_dataset "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/datasets.py"
click node_trainer "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/main.py"
click node_algorithm "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/algos/base.py"
click node_packnet "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/algos/packnet.py"
click node_evaluator "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/metric.py"
click node_policy_base "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/base_policy.py"
click node_bc_transformer "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/bc_transformer_policy.py"
click node_bc_rnn "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/bc_rnn_policy.py"
click node_bc_vilt "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/bc_vilt_policy.py"
click node_rgb_encoder "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/modules/rgb_modules.py"
click node_language_encoder "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/modules/language_modules.py"
click node_transformer "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/modules/transformer_modules.py"
click node_policy_head "https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/policy_head.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_task_spec,node_domain,node_problems,node_objects,node_regions,node_arenas,node_robots,node_env_api,node_vector_env toneBlue
class node_trainer,node_algorithm,node_packnet,node_evaluator toneAmber
class node_policy_base,node_bc_transformer,node_bc_rnn,node_bc_vilt,node_rgb_encoder,node_language_encoder,node_transformer,node_policy_head toneMint
class node_demonstrations,node_dataset toneRose
class node_researcher toneIndigo
```

## Components

### Task simulation

- **Task suites**
- [BDDL domain](https://github.com/lifelong-robot-learning/libero/blob/master/libero/libero/envs/bddl_base_domain.py): `libero/libero/envs/bddl_base_domain.py`
- [Task definitions](https://github.com/lifelong-robot-learning/libero/tree/master/libero/libero/envs/problems): `libero/libero/envs/problems`
- [Scene objects](https://github.com/lifelong-robot-learning/libero/tree/master/libero/libero/envs/objects): `libero/libero/envs/objects`
- [Region samplers](https://github.com/lifelong-robot-learning/libero/blob/master/libero/libero/envs/regions/base_region_sampler.py): `libero/libero/envs/regions/base_region_sampler.py`
- [Scene arenas](https://github.com/lifelong-robot-learning/libero/tree/master/libero/libero/envs/arenas): `libero/libero/envs/arenas`
- [Robot models](https://github.com/lifelong-robot-learning/libero/tree/master/libero/libero/envs/robots): `libero/libero/envs/robots`
- [Environment API](https://github.com/lifelong-robot-learning/libero/blob/master/libero/libero/envs/env_wrapper.py): `libero/libero/envs/env_wrapper.py`
- [Vector environments](https://github.com/lifelong-robot-learning/libero/blob/master/libero/libero/envs/venv.py): `libero/libero/envs/venv.py`

### Learning workflow

- [Experiment runner](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/main.py): `libero/lifelong/main.py`
- [Learning algorithms](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/algos/base.py): `libero/lifelong/algos/base.py`
- [PackNet](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/algos/packnet.py): `libero/lifelong/algos/packnet.py`
- [Success evaluation](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/metric.py): `libero/lifelong/metric.py`

### Policy networks

- [Policy base](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/base_policy.py): `libero/lifelong/models/base_policy.py`
- [BC Transformer](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/bc_transformer_policy.py): `libero/lifelong/models/bc_transformer_policy.py`
- [BC RNN](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/bc_rnn_policy.py): `libero/lifelong/models/bc_rnn_policy.py`
- [BC ViLT](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/bc_vilt_policy.py): `libero/lifelong/models/bc_vilt_policy.py`
- [RGB encoders](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/modules/rgb_modules.py): `libero/lifelong/models/modules/rgb_modules.py`
- [Language encoders](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/modules/language_modules.py): `libero/lifelong/models/modules/language_modules.py`
- [Transformer modules](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/modules/transformer_modules.py): `libero/lifelong/models/modules/transformer_modules.py`
- [Action head](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/models/policy_head.py): `libero/lifelong/models/policy_head.py`

### Demonstration data

- **Demonstrations**
- [Sequence datasets](https://github.com/lifelong-robot-learning/libero/blob/master/libero/lifelong/datasets.py): `libero/lifelong/datasets.py`

### Other components

- **Researcher**

## Connections

- Researcher → Task suites: selects suite (evidence: `README.md`)
- Task suites → Experiment runner: configures tasks (evidence: `README.md`)
- Researcher → Demonstrations: downloads data (evidence: `README.md`)
- Demonstrations → Sequence datasets: supplies samples
- Experiment runner → Sequence datasets: builds datasets (evidence: `libero/lifelong/main.py`)
- Experiment runner → Learning algorithms: selects algorithm (evidence: `libero/lifelong/main.py`)
- Experiment runner → Policy base: selects policy (evidence: `libero/lifelong/main.py`)
- Learning algorithms → Policy base: optimizes policy (evidence: `libero/lifelong/algos/base.py`)
- PackNet → Learning algorithms: extends (evidence: `libero/lifelong/algos/packnet.py`)
- BC Transformer → Policy base: extends (evidence: `libero/lifelong/models/bc_transformer_policy.py`)
- BC Transformer → RGB encoders: uses (evidence: `libero/lifelong/models/bc_transformer_policy.py`)
- BC Transformer → Language encoders: uses (evidence: `libero/lifelong/models/bc_transformer_policy.py`)
- BC Transformer → Transformer modules: uses (evidence: `libero/lifelong/models/bc_transformer_policy.py`)
- BC Transformer → Action head: uses (evidence: `libero/lifelong/models/bc_transformer_policy.py`)
- Experiment runner → Success evaluation: evaluates progress (evidence: `libero/lifelong/main.py`)
- Success evaluation → Environment API: creates environments (evidence: `libero/lifelong/metric.py`)
- Success evaluation → Task suites: evaluates tasks
- Environment API → Vector environments: wraps environments
- Task definitions → BDDL domain: subclasses (evidence: `libero/libero/envs/problems/libero_living_room_tabletop_manipulation.py`)
- BDDL domain → Scene objects: loads objects (evidence: `libero/libero/envs/bddl_base_domain.py`)
- BDDL domain → Region samplers: uses samplers (evidence: `libero/libero/envs/bddl_base_domain.py`)
- BDDL domain → Scene arenas: constructs arenas (evidence: `libero/libero/envs/bddl_base_domain.py`)
- BDDL domain → Robot models: configures robots (evidence: `libero/libero/envs/bddl_base_domain.py`)
- Environment API → BDDL domain: exposes simulation
