# muhammedokbi/ogaca architecture

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

- Interactive diagram: https://gitdiagram.com/muhammedokbi/ogaca
- Repository: https://github.com/muhammedokbi/ogaca

## Overview

OGACA is a ROS 2 autonomous-vehicle system. The principal workflow is: an operator starts the stack in the GUI, GPS/IMU and LiDAR/camera data enter ROS, route-following and obstacle-avoidance logic produce motion decisions, and a driving bridge sends commands to the vehicle. The graph also preserves route editing/visualization and lane/sign/obstacle perception. Several links reflect README-documented capabilities rather than inspected call sites; omitted source limits the exact wiring shown.

Main entry points: [`arayuz/arayuz.py`](https://github.com/muhammedokbi/ogaca/blob/main/arayuz/arayuz.py) (System GUI), [`gps/rotalar/routes_data.js`](https://github.com/muhammedokbi/ogaca/blob/main/gps/rotalar/routes_data.js) (Route data), [`gps/main.py`](https://github.com/muhammedokbi/ogaca/blob/main/gps/main.py) (GPS route follower), [`arayuz/haraket/cpp/ogaca_surus_koprusu.cpp`](https://github.com/muhammedokbi/ogaca/blob/main/arayuz/haraket/cpp/ogaca_surus_koprusu.cpp) (Driving bridge)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ops["Operator control"]
  node_gui["System GUI<br/>[arayuz.py]"]
  node_startup_steps["Startup steps<br/>[adimlar.py]"]
  node_map_ui["Live route map<br/>[harita.py]"]
end

subgraph group_localization["GPS and routes"]
  node_route_editor["Route editor"]
  node_route_data["Route data<br/>[routes_data.js]"]
  node_gps_follow["GPS route follower<br/>[main.py]"]
  node_gps_filter["GPS filtering<br/>[gps_filter.py]"]
  node_mavros["MAVROS"]
  node_route_viewer["ROS route viewer"]
end

subgraph group_navigation["Navigation and safety"]
  node_avoidance["Nav2 avoidance<br/>[auto_avoidance.py]"]
  node_safety_gate["Safety gate<br/>[guvenlik_kapisi.py]"]
  node_drive_logic["Driving logic<br/>[main.py]"]
end

subgraph group_sensing["Sensors and perception"]
  node_lidar["RoboSense LiDAR<br/>[node_manager.cpp]"]
  node_zed["ZED camera<br/>[engel_zed.py]"]
  node_lane_detection["Lane detection"]
  node_sign_detection["Sign detection<br/>[zed_tabela.py]"]
  node_qwen["Qwen model<br/>[izleyici.py]"]
end

subgraph group_vehicle["Vehicle output"]
  node_drive_bridge["Driving bridge"]
  node_mqtt(("MQTT broker"))
  node_vehicle_controller(("Vehicle controller"))
end

node_operator(("Operator"))

node_operator -->|"operates"| node_gui
node_gui -->|"reads steps"| node_startup_steps
node_gui -->|"shows map"| node_map_ui
node_gui -->|"selects route"| node_route_data
node_gui -->|"starts stack"| node_gps_follow
node_operator -->|"edits routes"| node_route_editor
node_route_editor -->|"updates routes"| node_route_data
node_route_data -->|"displays routes"| node_map_ui
node_route_data -->|"supplies route"| node_gps_follow
node_mavros -->|"GPS and IMU"| node_gps_filter
node_gps_filter -->|"filtered position"| node_gps_follow
node_gps_follow -->|"route data"| node_route_viewer
node_lidar -->|"point cloud"| node_avoidance
node_zed -->|"camera frames"| node_lane_detection
node_zed -->|"images and depth"| node_sign_detection
node_lane_detection -.->|"lane detections"| node_drive_logic
node_sign_detection -.->|"sign events"| node_drive_logic
node_avoidance -->|"avoidance state"| node_drive_logic
node_safety_gate -->|"stop requests"| node_drive_bridge
node_drive_logic -->|"motion commands"| node_drive_bridge
node_drive_bridge -->|"publishes commands"| node_mqtt
node_mqtt -->|"delivers commands"| node_vehicle_controller
node_qwen -.->|"decision updates"| node_gui

click node_gui "https://github.com/muhammedokbi/ogaca/blob/main/arayuz/arayuz.py"
click node_startup_steps "https://github.com/muhammedokbi/ogaca/blob/main/arayuz/adimlar.py"
click node_map_ui "https://github.com/muhammedokbi/ogaca/blob/main/arayuz/harita.py"
click node_route_editor "https://github.com/muhammedokbi/ogaca/tree/main/gps/rotalar"
click node_route_data "https://github.com/muhammedokbi/ogaca/blob/main/gps/rotalar/routes_data.js"
click node_gps_follow "https://github.com/muhammedokbi/ogaca/blob/main/gps/main.py"
click node_gps_filter "https://github.com/muhammedokbi/ogaca/blob/main/gps/gps_filter.py"
click node_route_viewer "https://github.com/muhammedokbi/ogaca/blob/main/src/nav2_dry_run/nav2_dry_run/gps_route_viewer.py"
click node_lidar "https://github.com/muhammedokbi/ogaca/blob/main/src/rslidar_sdk/src/manager/node_manager.cpp"
click node_zed "https://github.com/muhammedokbi/ogaca/blob/main/gps/engel_zed.py"
click node_lane_detection "https://github.com/muhammedokbi/ogaca/tree/main/yolop/lane_detection"
click node_sign_detection "https://github.com/muhammedokbi/ogaca/blob/main/tabela_algilama/zed_tabela.py"
click node_avoidance "https://github.com/muhammedokbi/ogaca/blob/main/src/nav2_dry_run/nav2_dry_run/auto_avoidance.py"
click node_safety_gate "https://github.com/muhammedokbi/ogaca/blob/main/src/nav2_dry_run/nav2_dry_run/guvenlik_kapisi.py"
click node_drive_logic "https://github.com/muhammedokbi/ogaca/blob/main/gps/main.py"
click node_drive_bridge "https://github.com/muhammedokbi/ogaca/blob/main/arayuz/haraket/cpp/ogaca_surus_koprusu.cpp"
click node_qwen "https://github.com/muhammedokbi/ogaca/blob/main/qwen/izleyici.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_gui,node_startup_steps,node_map_ui toneBlue
class node_route_editor,node_route_data,node_gps_follow,node_gps_filter,node_mavros,node_route_viewer toneAmber
class node_avoidance,node_safety_gate,node_drive_logic toneMint
class node_lidar,node_zed,node_lane_detection,node_sign_detection,node_qwen toneRose
class node_drive_bridge,node_mqtt,node_vehicle_controller,node_operator toneIndigo
```

## Components

### Operator control

- [System GUI](https://github.com/muhammedokbi/ogaca/blob/main/arayuz/arayuz.py): `arayuz/arayuz.py`
- [Startup steps](https://github.com/muhammedokbi/ogaca/blob/main/arayuz/adimlar.py): `arayuz/adimlar.py`
- [Live route map](https://github.com/muhammedokbi/ogaca/blob/main/arayuz/harita.py): `arayuz/harita.py`

### GPS and routes

- [Route editor](https://github.com/muhammedokbi/ogaca/tree/main/gps/rotalar): `gps/rotalar`
- [Route data](https://github.com/muhammedokbi/ogaca/blob/main/gps/rotalar/routes_data.js): `gps/rotalar/routes_data.js`
- [GPS route follower](https://github.com/muhammedokbi/ogaca/blob/main/gps/main.py): `gps/main.py`
- [GPS filtering](https://github.com/muhammedokbi/ogaca/blob/main/gps/gps_filter.py): `gps/gps_filter.py`
- **MAVROS**
- [ROS route viewer](https://github.com/muhammedokbi/ogaca/blob/main/src/nav2_dry_run/nav2_dry_run/gps_route_viewer.py): `src/nav2_dry_run/nav2_dry_run/gps_route_viewer.py`

### Navigation and safety

- [Nav2 avoidance](https://github.com/muhammedokbi/ogaca/blob/main/src/nav2_dry_run/nav2_dry_run/auto_avoidance.py): `src/nav2_dry_run/nav2_dry_run/auto_avoidance.py`
- [Safety gate](https://github.com/muhammedokbi/ogaca/blob/main/src/nav2_dry_run/nav2_dry_run/guvenlik_kapisi.py): `src/nav2_dry_run/nav2_dry_run/guvenlik_kapisi.py`
- [Driving logic](https://github.com/muhammedokbi/ogaca/blob/main/gps/main.py): `gps/main.py`

### Sensors and perception

- [RoboSense LiDAR](https://github.com/muhammedokbi/ogaca/blob/main/src/rslidar_sdk/src/manager/node_manager.cpp): `src/rslidar_sdk/src/manager/node_manager.cpp`
- [ZED camera](https://github.com/muhammedokbi/ogaca/blob/main/gps/engel_zed.py): `gps/engel_zed.py`
- [Lane detection](https://github.com/muhammedokbi/ogaca/tree/main/yolop/lane_detection): `yolop/lane_detection`
- [Sign detection](https://github.com/muhammedokbi/ogaca/blob/main/tabela_algilama/zed_tabela.py): `tabela_algilama/zed_tabela.py`
- [Qwen model](https://github.com/muhammedokbi/ogaca/blob/main/qwen/izleyici.py): `qwen/izleyici.py`

### Vehicle output

- [Driving bridge](https://github.com/muhammedokbi/ogaca/blob/main/arayuz/haraket/cpp/ogaca_surus_koprusu.cpp): `arayuz/haraket/cpp/ogaca_surus_koprusu.cpp`
- **MQTT broker**
- **Vehicle controller**

### Other components

- **Operator**

## Connections

- Operator → System GUI: operates
- System GUI → Startup steps: reads steps
- System GUI → Live route map: shows map
- System GUI → Route data: selects route
- System GUI → GPS route follower: starts stack
- Operator → Route editor: edits routes
- Route editor → Route data: updates routes
- Route data → Live route map: displays routes
- Route data → GPS route follower: supplies route
- MAVROS → GPS filtering: GPS and IMU
- GPS filtering → GPS route follower: filtered position
- GPS route follower → ROS route viewer: route data
- RoboSense LiDAR → Nav2 avoidance: point cloud
- ZED camera → Lane detection: camera frames
- ZED camera → Sign detection: images and depth
- Lane detection → Driving logic: lane detections
- Sign detection → Driving logic: sign events
- Nav2 avoidance → Driving logic: avoidance state
- Safety gate → Driving bridge: stop requests
- Driving logic → Driving bridge: motion commands
- Driving bridge → MQTT broker: publishes commands
- MQTT broker → Vehicle controller: delivers commands
- Qwen model → System GUI: decision updates
