# lixiangyi-2006/adasim- architecture

> Architecture diagram of the GitHub repository lixiangyi-2006/adasim-, 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/lixiangyi-2006/adasim-
- Repository: https://github.com/lixiangyi-2006/adasim-

## Overview

ADASim is a Qt/C++ driving-simulation application with a Python planning node. Its main loop generates or replays vehicle and sensor frames, routes them through perception and prediction, displays the results, and exchanges obstacle/state and control messages over sockets. The README also documents multiple planning modes, resource monitoring, configurable defaults, noisy lidar simulation, and TCP heartbeat recovery. Some wiring and UI details are based on documented interfaces because the corresponding source excerpts are incomplete.

Main entry points: [`ADASim/src/data/DataManager.cpp`](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/data/DataManager.cpp) (Data Bus And Sandbox), [`ADASim/src/gui/MainWindow.cpp`](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/gui/MainWindow.cpp) (Application Controller), [`ADASim/src/backend/DataLoader.cpp`](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/backend/DataLoader.cpp) (Frame Generator And Replay), [`ADASim/src/gui/View2D.cpp`](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/gui/View2D.cpp) (2D Driving View)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_simulation["Simulation Core"]
  node_main["Application Controller<br/>[MainWindow.cpp]"]
  node_loader["Frame Generator And Replay<br/>[DataLoader.cpp]"]
  node_ringbuffer["Replay Ring Buffer<br/>[Ringbuffer.h]"]
  node_datamanager["Data Bus And Sandbox<br/>[DataManager.cpp]"]
end

subgraph group_algorithms["Perception And Planning"]
  node_detector["Obstacle Detection"]
  node_predictor["Path Prediction<br/>[PathPredictor.cpp]"]
  node_planner["Python Planner<br/>[python_planner.py]"]
end

subgraph group_interface["User Interface"]
  node_view2d["2D Driving View<br/>[View2D.cpp]"]
  node_sensorview["Lidar View<br/>[SensorView.cpp]"]
  node_monitor["Resource Monitor<br/>[MainWindow.cpp]"]
end

subgraph group_services["Runtime Services"]
  node_socket["TCP And UDP Gateway<br/>[Socket.cpp]"]
  node_config["Configuration<br/>[Config.cpp]"]
  node_logger["Logging<br/>[Logger.cpp]"]
end

node_operator(("Operator"))
node_python(("External Planner Node"))

node_operator -->|"operates"| node_main
node_operator -->|"adds obstacles"| node_view2d
node_main -->|"controls playback"| node_loader
node_loader -->|"stores frames"| node_ringbuffer
node_loader -->|"sends vehicle state"| node_main
node_loader -->|"sends point cloud"| node_datamanager
node_main -->|"forwards vehicle state"| node_datamanager
node_datamanager -->|"detects obstacles"| node_detector
node_datamanager -->|"predicts trajectory"| node_predictor
node_datamanager -->|"sends overlays"| node_view2d
node_datamanager -->|"sends point cloud"| node_sensorview
node_view2d -->|"sends obstacle input"| node_datamanager
node_main -->|"sets algorithms"| node_datamanager
node_datamanager -->|"requests broadcast"| node_socket
node_socket -->|"delivers messages"| node_datamanager
node_socket -->|"exchanges TCP messages"| node_python
node_python -->|"runs planning logic"| node_planner
node_main -->|"updates vehicle view"| node_view2d
node_main -->|"updates statistics"| node_monitor
node_main -->|"loads settings"| node_config
node_main -->|"records lifecycle"| node_logger

click node_main "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/gui/MainWindow.cpp"
click node_loader "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/backend/DataLoader.cpp"
click node_ringbuffer "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/backend/Ringbuffer.h"
click node_datamanager "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/data/DataManager.cpp"
click node_detector "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/algorithm/ObstacleDetector.cpp"
click node_predictor "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/algorithm/PathPredictor.cpp"
click node_planner "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/tools/python_planner.py"
click node_socket "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/communication/Socket.cpp"
click node_view2d "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/gui/View2D.cpp"
click node_sensorview "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/gui/SensorView.cpp"
click node_monitor "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/gui/MainWindow.cpp"
click node_config "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/common/Config.cpp"
click node_logger "https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/common/Logger.cpp"

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_main,node_loader,node_ringbuffer,node_datamanager toneBlue
class node_detector,node_predictor,node_planner toneAmber
class node_view2d,node_sensorview,node_monitor toneMint
class node_socket,node_config,node_logger toneRose
class node_operator,node_python toneIndigo
```

## Components

### Simulation Core

- [Application Controller](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/gui/MainWindow.cpp): `ADASim/src/gui/MainWindow.cpp`
- [Frame Generator And Replay](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/backend/DataLoader.cpp): `ADASim/src/backend/DataLoader.cpp`
- [Replay Ring Buffer](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/backend/Ringbuffer.h): `ADASim/src/backend/Ringbuffer.h`
- [Data Bus And Sandbox](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/data/DataManager.cpp): `ADASim/src/data/DataManager.cpp`

### Perception And Planning

- [Obstacle Detection](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/algorithm/ObstacleDetector.cpp): `ADASim/src/algorithm/ObstacleDetector.cpp`
- [Path Prediction](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/algorithm/PathPredictor.cpp): `ADASim/src/algorithm/PathPredictor.cpp`
- [Python Planner](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/tools/python_planner.py): `ADASim/tools/python_planner.py`

### User Interface

- [2D Driving View](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/gui/View2D.cpp): `ADASim/src/gui/View2D.cpp`
- [Lidar View](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/gui/SensorView.cpp): `ADASim/src/gui/SensorView.cpp`
- [Resource Monitor](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/gui/MainWindow.cpp): `ADASim/src/gui/MainWindow.cpp`

### Runtime Services

- [TCP And UDP Gateway](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/communication/Socket.cpp): `ADASim/src/communication/Socket.cpp`
- [Configuration](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/common/Config.cpp): `ADASim/src/common/Config.cpp`
- [Logging](https://github.com/lixiangyi-2006/adasim-/blob/main/ADASim/src/common/Logger.cpp): `ADASim/src/common/Logger.cpp`

### Other components

- **Operator**
- **External Planner Node**

## Connections

- Operator → Application Controller: operates
- Operator → 2D Driving View: adds obstacles
- Application Controller → Frame Generator And Replay: controls playback
- Frame Generator And Replay → Replay Ring Buffer: stores frames
- Frame Generator And Replay → Application Controller: sends vehicle state
- Frame Generator And Replay → Data Bus And Sandbox: sends point cloud
- Application Controller → Data Bus And Sandbox: forwards vehicle state
- Data Bus And Sandbox → Obstacle Detection: detects obstacles
- Data Bus And Sandbox → Path Prediction: predicts trajectory
- Data Bus And Sandbox → 2D Driving View: sends overlays
- Data Bus And Sandbox → Lidar View: sends point cloud
- 2D Driving View → Data Bus And Sandbox: sends obstacle input
- Application Controller → Data Bus And Sandbox: sets algorithms
- Data Bus And Sandbox → TCP And UDP Gateway: requests broadcast
- TCP And UDP Gateway → Data Bus And Sandbox: delivers messages
- TCP And UDP Gateway → External Planner Node: exchanges TCP messages
- External Planner Node → Python Planner: runs planning logic
- Application Controller → 2D Driving View: updates vehicle view
- Application Controller → Resource Monitor: updates statistics
- Application Controller → Configuration: loads settings
- Application Controller → Logging: records lifecycle
