# pranavk-2003/isaaclab architecture

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

- Interactive diagram: https://gitdiagram.com/pranavk-2003/isaaclab
- Repository: https://github.com/pranavk-2003/isaaclab

## Overview

This repository is a learning project for taking a Doosan A0509 arm and AG95 gripper from robot descriptions to a simulated, trained, and evaluated reach policy in Isaac Lab. The current workflow prepares or composes the robot asset, validates its articulation, configures and registers a reach task, then trains and evaluates a PPO policy. The README also documents planned lift, camera, teleoperation, imitation-learning, and vision-language-action stages. Some later-stage implementations are not sampled, so those capabilities are shown as documented roadmap rather than inferred runtime wiring.

Main entry points: [`source/doosan_lab/doosan_lab/assets/doosan.py`](https://github.com/pranavk-2003/isaaclab/blob/main/source/doosan_lab/doosan_lab/assets/doosan.py) (Robot configuration), [`source/doosan_lab/doosan_lab/tasks/reach/__init__.py`](https://github.com/pranavk-2003/isaaclab/blob/main/source/doosan_lab/doosan_lab/tasks/reach/__init__.py) (Task registration), [`tools/build_urdf.py`](https://github.com/pranavk-2003/isaaclab/blob/main/tools/build_urdf.py) (URDF merge), [`tools/urdf_to_usda.py`](https://github.com/pranavk-2003/isaaclab/blob/main/tools/urdf_to_usda.py) (URDF conversion)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_asset["Robot asset"]
  node_urdf_merge["URDF merge<br/>[build_urdf.py]"]
  node_usd_conversion["URDF conversion<br/>[urdf_to_usda.py]"]
  node_usd_composition["USD composition"]
end

subgraph group_simulation["Simulation setup"]
  node_robot_config["Robot configuration<br/>[doosan.py]"]
  node_spawn_tests["Articulation checks<br/>[spawn_robot.py]"]
  node_gripper_measure["Gripper measurement<br/>[measure_gripper.py]"]
  node_joint_sweep["Joint sweep<br/>[sweep_joints.py]"]
end

subgraph group_reach["Reach learning"]
  node_reach_config["Reach environment<br/>[reach_env_cfg.py]"]
  node_task_registration["Task registration<br/>[__init__.py]"]
  node_ppo_config["PPO configuration<br/>[rsl_rl_ppo_cfg.py]"]
  node_training["Policy training<br/>[train.py]"]
  node_playback["Policy playback<br/>[play.py]"]
  node_evaluation["Reach evaluation<br/>[eval_reach.py]"]
end

subgraph group_roadmap["Manipulation roadmap"]
  node_lift_stage["Lift with cameras"]
  node_stack_stage["Stack tasks"]
  node_learning_roadmap["Teleop to VLA<br/>[README.md]"]
end

node_engineer(("Engineer"))

node_engineer -->|"builds asset"| node_urdf_merge
node_urdf_merge -->|"converts URDF"| node_usd_conversion
node_engineer -->|"chooses alternative"| node_usd_composition
node_usd_composition -.->|"provides USD"| node_robot_config
node_usd_conversion -.->|"provides USD"| node_robot_config
node_robot_config -->|"configures robot"| node_spawn_tests
node_robot_config -->|"configures robot"| node_gripper_measure
node_robot_config -->|"configures robot"| node_joint_sweep
node_robot_config -->|"sets scene robot"| node_reach_config
node_reach_config -->|"supplies environment"| node_task_registration
node_ppo_config -->|"registers agent config"| node_task_registration
node_engineer -->|"trains policy"| node_training
node_training -->|"selects task"| node_task_registration
node_engineer -->|"runs policy"| node_playback
node_engineer -->|"evaluates checkpoints"| node_evaluation
node_evaluation -->|"loads registered task"| node_task_registration
node_engineer -->|"plans next phase"| node_lift_stage
node_engineer -.->|"explores task area"| node_stack_stage
node_lift_stage -->|"extends toward"| node_learning_roadmap
node_learning_roadmap -->|"documents roadmap"| node_engineer

click node_urdf_merge "https://github.com/pranavk-2003/isaaclab/blob/main/tools/build_urdf.py"
click node_usd_conversion "https://github.com/pranavk-2003/isaaclab/blob/main/tools/urdf_to_usda.py"
click node_usd_composition "https://github.com/pranavk-2003/isaaclab/blob/main/tools/compose_a0509_ag95.py"
click node_robot_config "https://github.com/pranavk-2003/isaaclab/blob/main/source/doosan_lab/doosan_lab/assets/doosan.py"
click node_spawn_tests "https://github.com/pranavk-2003/isaaclab/blob/main/scripts/spawn_robot.py"
click node_gripper_measure "https://github.com/pranavk-2003/isaaclab/blob/main/scripts/measure_gripper.py"
click node_joint_sweep "https://github.com/pranavk-2003/isaaclab/blob/main/scripts/sweep_joints.py"
click node_reach_config "https://github.com/pranavk-2003/isaaclab/blob/main/source/doosan_lab/doosan_lab/tasks/reach/reach_env_cfg.py"
click node_task_registration "https://github.com/pranavk-2003/isaaclab/blob/main/source/doosan_lab/doosan_lab/tasks/reach/__init__.py"
click node_ppo_config "https://github.com/pranavk-2003/isaaclab/blob/main/source/doosan_lab/doosan_lab/tasks/reach/agents/rsl_rl_ppo_cfg.py"
click node_training "https://github.com/pranavk-2003/isaaclab/blob/main/scripts/train.py"
click node_playback "https://github.com/pranavk-2003/isaaclab/blob/main/scripts/play.py"
click node_evaluation "https://github.com/pranavk-2003/isaaclab/blob/main/scripts/eval_reach.py"
click node_lift_stage "https://github.com/pranavk-2003/isaaclab/tree/main/source/doosan_lab/doosan_lab/tasks/lift"
click node_stack_stage "https://github.com/pranavk-2003/isaaclab/tree/main/source/doosan_lab/doosan_lab/tasks/stack"
click node_learning_roadmap "https://github.com/pranavk-2003/isaaclab/blob/main/README.md"

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_urdf_merge,node_usd_conversion,node_usd_composition toneBlue
class node_robot_config,node_spawn_tests,node_gripper_measure,node_joint_sweep toneAmber
class node_reach_config,node_task_registration,node_ppo_config,node_training,node_playback,node_evaluation toneMint
class node_lift_stage,node_stack_stage,node_learning_roadmap toneRose
class node_engineer toneIndigo
```

## Components

### Robot asset

- [URDF merge](https://github.com/pranavk-2003/isaaclab/blob/main/tools/build_urdf.py): `tools/build_urdf.py`
- [URDF conversion](https://github.com/pranavk-2003/isaaclab/blob/main/tools/urdf_to_usda.py): `tools/urdf_to_usda.py`
- [USD composition](https://github.com/pranavk-2003/isaaclab/blob/main/tools/compose_a0509_ag95.py): `tools/compose_a0509_ag95.py`

### Simulation setup

- [Robot configuration](https://github.com/pranavk-2003/isaaclab/blob/main/source/doosan_lab/doosan_lab/assets/doosan.py): `source/doosan_lab/doosan_lab/assets/doosan.py`
- [Articulation checks](https://github.com/pranavk-2003/isaaclab/blob/main/scripts/spawn_robot.py): `scripts/spawn_robot.py`
- [Gripper measurement](https://github.com/pranavk-2003/isaaclab/blob/main/scripts/measure_gripper.py): `scripts/measure_gripper.py`
- [Joint sweep](https://github.com/pranavk-2003/isaaclab/blob/main/scripts/sweep_joints.py): `scripts/sweep_joints.py`

### Reach learning

- [Reach environment](https://github.com/pranavk-2003/isaaclab/blob/main/source/doosan_lab/doosan_lab/tasks/reach/reach_env_cfg.py): `source/doosan_lab/doosan_lab/tasks/reach/reach_env_cfg.py`
- [Task registration](https://github.com/pranavk-2003/isaaclab/blob/main/source/doosan_lab/doosan_lab/tasks/reach/__init__.py): `source/doosan_lab/doosan_lab/tasks/reach/__init__.py`
- [PPO configuration](https://github.com/pranavk-2003/isaaclab/blob/main/source/doosan_lab/doosan_lab/tasks/reach/agents/rsl_rl_ppo_cfg.py): `source/doosan_lab/doosan_lab/tasks/reach/agents/rsl_rl_ppo_cfg.py`
- [Policy training](https://github.com/pranavk-2003/isaaclab/blob/main/scripts/train.py): `scripts/train.py`
- [Policy playback](https://github.com/pranavk-2003/isaaclab/blob/main/scripts/play.py): `scripts/play.py`
- [Reach evaluation](https://github.com/pranavk-2003/isaaclab/blob/main/scripts/eval_reach.py): `scripts/eval_reach.py`

### Manipulation roadmap

- [Lift with cameras](https://github.com/pranavk-2003/isaaclab/tree/main/source/doosan_lab/doosan_lab/tasks/lift): `source/doosan_lab/doosan_lab/tasks/lift`
- [Stack tasks](https://github.com/pranavk-2003/isaaclab/tree/main/source/doosan_lab/doosan_lab/tasks/stack): `source/doosan_lab/doosan_lab/tasks/stack`
- [Teleop to VLA](https://github.com/pranavk-2003/isaaclab/blob/main/README.md): `README.md`

### Other components

- **Engineer**

## Connections

- Engineer → URDF merge: builds asset (evidence: `README.md`)
- URDF merge → URDF conversion: converts URDF (evidence: `README.md`)
- Engineer → USD composition: chooses alternative (evidence: `README.md`)
- USD composition → Robot configuration: provides USD
- URDF conversion → Robot configuration: provides USD
- Robot configuration → Articulation checks: configures robot (evidence: `scripts/spawn_robot.py`)
- Robot configuration → Gripper measurement: configures robot (evidence: `scripts/measure_gripper.py`)
- Robot configuration → Joint sweep: configures robot (evidence: `scripts/sweep_joints.py`)
- Robot configuration → Reach environment: sets scene robot (evidence: `source/doosan_lab/doosan_lab/tasks/reach/reach_env_cfg.py`)
- Reach environment → Task registration: supplies environment (evidence: `source/doosan_lab/doosan_lab/tasks/reach/__init__.py`)
- PPO configuration → Task registration: registers agent config (evidence: `source/doosan_lab/doosan_lab/tasks/reach/__init__.py`)
- Engineer → Policy training: trains policy (evidence: `README.md`)
- Policy training → Task registration: selects task (evidence: `README.md`)
- Engineer → Policy playback: runs policy (evidence: `README.md`)
- Engineer → Reach evaluation: evaluates checkpoints (evidence: `README.md`)
- Reach evaluation → Task registration: loads registered task (evidence: `scripts/eval_reach.py`)
- Engineer → Lift with cameras: plans next phase (evidence: `README.md`)
- Engineer → Stack tasks: explores task area
- Lift with cameras → Teleop to VLA: extends toward (evidence: `README.md`)
- Teleop to VLA → Engineer: documents roadmap (evidence: `README.md`)
