# tmlmarj/carla_simulator_manager architecture

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

- Interactive diagram: https://gitdiagram.com/tmlmarj/carla_simulator_manager
- Repository: https://github.com/tmlmarj/carla_simulator_manager

## Overview

CARLA Simulator Manager is a Tkinter desktop client for managing a CARLA server. The user launches the GUI, connects to a local or remote server, and issues world, actor, sensor, simulation, movement, and scenario operations; CARLA work runs through the application’s dedicated worker. The graph includes the documented feature areas even where implementation excerpts were unavailable. Arrows are limited to README statements and source-index references; relationships within unsampled feature areas are not inferred.

Main entry points: [`core/controller.py`](https://github.com/tmlmarj/carla_simulator_manager/blob/main/core/controller.py) (CARLA worker), [`gui/application.py`](https://github.com/tmlmarj/carla_simulator_manager/blob/main/gui/application.py) (Tkinter application), [`core/state_store.py`](https://github.com/tmlmarj/carla_simulator_manager/blob/main/core/state_store.py) (Shared state), [`gui/tabs`](https://github.com/tmlmarj/carla_simulator_manager/tree/main/gui/tabs) (Feature tabs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_app["Application entry<br/>[app.py]"]
end

subgraph group_interface["Desktop interface"]
  node_gui_app["Tkinter application<br/>[application.py]"]
  node_main_view["Main view<br/>[main_view.py]"]
  node_feature_tabs["Feature tabs"]
  node_actor_editor["Actor editor<br/>[actor_editor.py]"]
  node_movement_window["Movement controls"]
  node_sensor_preview["Sensor preview<br/>[sensor_preview.py]"]
end

subgraph group_core["Worker and state"]
  node_controller["CARLA worker<br/>[controller.py]"]
  node_command_bus["Command dispatch<br/>[command_bus.py]"]
  node_state[("Shared state<br/>[state_store.py]")]
  node_registries["Actor registry<br/>[registries.py]"]
end

subgraph group_operations["Simulation and movement"]
  node_world_services["World services<br/>[world.py]"]
  node_actor_services["Actor services<br/>[actors.py]"]
  node_sensor_services["Sensor services<br/>[sensors.py]"]
  node_simulation["Simulation control<br/>[manager.py]"]
  node_dashboard["Simulation dashboard<br/>[dashboard.py]"]
  node_movement_runtime["Movement runtime<br/>[runtime.py]"]
  node_movement_session["Movement session<br/>[session.py]"]
  node_destination["Destination planning<br/>[destination.py]"]
  node_preview["Map and previews<br/>[map.py]"]
end

subgraph group_scenarios["Scenario lifecycle"]
  node_scenario_manager["Scenario coordinator<br/>[manager.py]"]
  node_scenario_runtime["Scenario runtime<br/>[runtime.py]"]
  node_scenario_io["Scenario file lifecycle"]
  node_scenario_model["Scenario model<br/>[scenarios.py]"]
end

node_user(("Operator"))
node_carla{{"CARLA server"}}

node_user -->|"launches"| node_app
node_app -->|"starts"| node_gui_app
node_gui_app -->|"creates"| node_controller
node_gui_app -->|"builds"| node_main_view
node_main_view -->|"assembles"| node_feature_tabs
node_feature_tabs -->|"opens"| node_actor_editor
node_feature_tabs -->|"opens"| node_movement_window
node_sensor_preview -->|"reads buffers"| node_state
node_gui_app -->|"uses"| node_state
node_controller -->|"dispatches"| node_command_bus
node_controller -->|"updates"| node_state
node_controller -->|"delegates to"| node_movement_runtime
node_controller -->|"delegates to"| node_scenario_runtime
node_controller -->|"uses"| node_simulation
node_controller -->|"uses"| node_dashboard
node_controller -->|"queues generation"| node_preview
node_controller -->|"performs operations"| node_carla
node_controller -.->|"delegates to"| node_world_services
node_controller -.->|"delegates to"| node_actor_services
node_controller -.->|"delegates to"| node_sensor_services
node_actor_services -->|"uses"| node_registries
node_movement_session -->|"uses"| node_movement_runtime
node_movement_runtime -->|"uses"| node_destination
node_destination -->|"transforms map"| node_preview
node_movement_window -.->|"configures"| node_movement_session
node_scenario_runtime -->|"executes operations"| node_scenario_manager
node_scenario_manager -->|"coordinates"| node_scenario_io
node_scenario_manager -->|"validates data"| node_scenario_model
node_scenario_runtime -->|"uses"| node_scenario_model
node_simulation -.->|"controls ticks"| node_carla
node_dashboard -.->|"reads state"| node_state

click node_app "https://github.com/tmlmarj/carla_simulator_manager/blob/main/app.py"
click node_gui_app "https://github.com/tmlmarj/carla_simulator_manager/blob/main/gui/application.py"
click node_main_view "https://github.com/tmlmarj/carla_simulator_manager/blob/main/gui/main_view.py"
click node_feature_tabs "https://github.com/tmlmarj/carla_simulator_manager/tree/main/gui/tabs"
click node_actor_editor "https://github.com/tmlmarj/carla_simulator_manager/blob/main/gui/windows/actor_editor.py"
click node_movement_window "https://github.com/tmlmarj/carla_simulator_manager/blob/main/gui/windows/movement_control.py"
click node_sensor_preview "https://github.com/tmlmarj/carla_simulator_manager/blob/main/gui/windows/sensor_preview.py"
click node_controller "https://github.com/tmlmarj/carla_simulator_manager/blob/main/core/controller.py"
click node_command_bus "https://github.com/tmlmarj/carla_simulator_manager/blob/main/core/command_bus.py"
click node_state "https://github.com/tmlmarj/carla_simulator_manager/blob/main/core/state_store.py"
click node_registries "https://github.com/tmlmarj/carla_simulator_manager/blob/main/core/registries.py"
click node_world_services "https://github.com/tmlmarj/carla_simulator_manager/blob/main/services/world.py"
click node_actor_services "https://github.com/tmlmarj/carla_simulator_manager/blob/main/services/actors.py"
click node_sensor_services "https://github.com/tmlmarj/carla_simulator_manager/blob/main/services/sensors.py"
click node_simulation "https://github.com/tmlmarj/carla_simulator_manager/blob/main/simulation/manager.py"
click node_dashboard "https://github.com/tmlmarj/carla_simulator_manager/blob/main/simulation/dashboard.py"
click node_movement_runtime "https://github.com/tmlmarj/carla_simulator_manager/blob/main/movement/runtime.py"
click node_movement_session "https://github.com/tmlmarj/carla_simulator_manager/blob/main/movement/session.py"
click node_destination "https://github.com/tmlmarj/carla_simulator_manager/blob/main/movement/destination.py"
click node_preview "https://github.com/tmlmarj/carla_simulator_manager/blob/main/preview/map.py"
click node_scenario_manager "https://github.com/tmlmarj/carla_simulator_manager/blob/main/scenarios/manager.py"
click node_scenario_runtime "https://github.com/tmlmarj/carla_simulator_manager/blob/main/scenarios/runtime.py"
click node_scenario_io "https://github.com/tmlmarj/carla_simulator_manager/tree/main/scenarios"
click node_scenario_model "https://github.com/tmlmarj/carla_simulator_manager/blob/main/models/scenarios.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_app toneBlue
class node_gui_app,node_main_view,node_feature_tabs,node_actor_editor,node_movement_window,node_sensor_preview toneAmber
class node_controller,node_command_bus,node_state,node_registries,node_carla toneMint
class node_world_services,node_actor_services,node_sensor_services,node_simulation,node_dashboard,node_movement_runtime,node_movement_session,node_destination,node_preview toneRose
class node_scenario_manager,node_scenario_runtime,node_scenario_io,node_scenario_model,node_user toneIndigo
```

## Components

### Application entry

- [Application entry](https://github.com/tmlmarj/carla_simulator_manager/blob/main/app.py): `app.py`

### Desktop interface

- [Tkinter application](https://github.com/tmlmarj/carla_simulator_manager/blob/main/gui/application.py): `gui/application.py`
- [Main view](https://github.com/tmlmarj/carla_simulator_manager/blob/main/gui/main_view.py): `gui/main_view.py`
- [Feature tabs](https://github.com/tmlmarj/carla_simulator_manager/tree/main/gui/tabs): `gui/tabs`
- [Actor editor](https://github.com/tmlmarj/carla_simulator_manager/blob/main/gui/windows/actor_editor.py): `gui/windows/actor_editor.py`
- [Movement controls](https://github.com/tmlmarj/carla_simulator_manager/blob/main/gui/windows/movement_control.py): `gui/windows/movement_control.py`
- [Sensor preview](https://github.com/tmlmarj/carla_simulator_manager/blob/main/gui/windows/sensor_preview.py): `gui/windows/sensor_preview.py`

### Worker and state

- [CARLA worker](https://github.com/tmlmarj/carla_simulator_manager/blob/main/core/controller.py): `core/controller.py`
- [Command dispatch](https://github.com/tmlmarj/carla_simulator_manager/blob/main/core/command_bus.py): `core/command_bus.py`
- [Shared state](https://github.com/tmlmarj/carla_simulator_manager/blob/main/core/state_store.py): `core/state_store.py`
- [Actor registry](https://github.com/tmlmarj/carla_simulator_manager/blob/main/core/registries.py): `core/registries.py`

### Simulation and movement

- [World services](https://github.com/tmlmarj/carla_simulator_manager/blob/main/services/world.py): `services/world.py`
- [Actor services](https://github.com/tmlmarj/carla_simulator_manager/blob/main/services/actors.py): `services/actors.py`
- [Sensor services](https://github.com/tmlmarj/carla_simulator_manager/blob/main/services/sensors.py): `services/sensors.py`
- [Simulation control](https://github.com/tmlmarj/carla_simulator_manager/blob/main/simulation/manager.py): `simulation/manager.py`
- [Simulation dashboard](https://github.com/tmlmarj/carla_simulator_manager/blob/main/simulation/dashboard.py): `simulation/dashboard.py`
- [Movement runtime](https://github.com/tmlmarj/carla_simulator_manager/blob/main/movement/runtime.py): `movement/runtime.py`
- [Movement session](https://github.com/tmlmarj/carla_simulator_manager/blob/main/movement/session.py): `movement/session.py`
- [Destination planning](https://github.com/tmlmarj/carla_simulator_manager/blob/main/movement/destination.py): `movement/destination.py`
- [Map and previews](https://github.com/tmlmarj/carla_simulator_manager/blob/main/preview/map.py): `preview/map.py`

### Scenario lifecycle

- [Scenario coordinator](https://github.com/tmlmarj/carla_simulator_manager/blob/main/scenarios/manager.py): `scenarios/manager.py`
- [Scenario runtime](https://github.com/tmlmarj/carla_simulator_manager/blob/main/scenarios/runtime.py): `scenarios/runtime.py`
- [Scenario file lifecycle](https://github.com/tmlmarj/carla_simulator_manager/tree/main/scenarios): `scenarios`
- [Scenario model](https://github.com/tmlmarj/carla_simulator_manager/blob/main/models/scenarios.py): `models/scenarios.py`

### Other components

- **Operator**
- **CARLA server**

## Connections

- Operator → Application entry: launches (evidence: `README.md`)
- Application entry → Tkinter application: starts (evidence: `app.py`)
- Tkinter application → CARLA worker: creates (evidence: `gui/application.py`)
- Tkinter application → Main view: builds (evidence: `gui/application.py`)
- Main view → Feature tabs: assembles (evidence: `gui/main_view.py`)
- Feature tabs → Actor editor: opens (evidence: `gui/tabs/vehicles.py`)
- Feature tabs → Movement controls: opens
- Sensor preview → Shared state: reads buffers (evidence: `gui/windows/sensor_preview.py`)
- Tkinter application → Shared state: uses (evidence: `gui/application.py`)
- CARLA worker → Command dispatch: dispatches (evidence: `core/controller.py`)
- CARLA worker → Shared state: updates (evidence: `core/controller.py`)
- CARLA worker → Movement runtime: delegates to (evidence: `core/controller.py`)
- CARLA worker → Scenario runtime: delegates to (evidence: `core/controller.py`)
- CARLA worker → Simulation control: uses (evidence: `core/controller.py`)
- CARLA worker → Simulation dashboard: uses (evidence: `core/controller.py`)
- CARLA worker → Map and previews: queues generation (evidence: `core/controller.py`)
- CARLA worker → CARLA server: performs operations (evidence: `README.md`)
- CARLA worker → World services: delegates to (evidence: `core/controller.py`)
- CARLA worker → Actor services: delegates to (evidence: `core/controller.py`)
- CARLA worker → Sensor services: delegates to (evidence: `core/controller.py`)
- Actor services → Actor registry: uses (evidence: `core/registries.py`)
- Movement session → Movement runtime: uses (evidence: `movement/session.py`)
- Movement runtime → Destination planning: uses (evidence: `movement/runtime.py`)
- Destination planning → Map and previews: transforms map (evidence: `movement/destination.py`)
- Movement controls → Movement session: configures
- Scenario runtime → Scenario coordinator: executes operations (evidence: `scenarios/runtime.py`)
- Scenario coordinator → Scenario file lifecycle: coordinates (evidence: `scenarios/manager.py`)
- Scenario coordinator → Scenario model: validates data (evidence: `scenarios/manager.py`)
- Scenario runtime → Scenario model: uses (evidence: `scenarios/runtime.py`)
- Simulation control → CARLA server: controls ticks
- Simulation dashboard → Shared state: reads state (evidence: `core/state_store.py`)
