# hidedabush/autonomous-inspection-platform architecture

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

- Interactive diagram: https://gitdiagram.com/hidedabush/autonomous-inspection-platform
- Repository: https://github.com/hidedabush/autonomous-inspection-platform

## Overview

AIP is a Phase 1 autonomous visual-inspection station, but the checked-in runtime is currently a grayscale CPU/CUDA smoke test rather than the README’s complete inspection line. The graph shows the implemented path and preserves documented future capabilities—camera/sensor capture, ML classification, dashboard, reject actuation, and logging—as distinct, unsampled subsystems. Their relationships are documented at a high level in README; implementation details and wiring are not evidenced in the sampled source.

Main entry points: [`src/app/main.cpp`](https://github.com/hidedabush/autonomous-inspection-platform/blob/main/src/app/main.cpp) (Smoke-test app), [`include/aip/image.hpp`](https://github.com/hidedabush/autonomous-inspection-platform/blob/main/include/aip/image.hpp) (Host image), [`firmware/esp32/src/main.cpp`](https://github.com/hidedabush/autonomous-inspection-platform/blob/main/firmware/esp32/src/main.cpp) (ESP32 trigger and response), [`ml`](https://github.com/hidedabush/autonomous-inspection-platform/tree/main/ml) (Part classification)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["C++ Runtime"]
  node_app["Smoke-test app<br/>[main.cpp]"]
  node_pipeline["Pipeline contracts<br/>[pipeline.hpp]"]
  node_verdict["Verdict formatting<br/>[pipeline.cpp]"]
end

subgraph group_compute["Image Compute"]
  node_image["Host image<br/>[image.hpp]"]
  node_kernel_api["Kernel interface<br/>[kernels.hpp]"]
  node_cpu["CPU grayscale<br/>[grayscale_cpu.cpp]"]
  node_cuda["CUDA preprocessing"]
end

subgraph group_station["Inspection Station"]
  node_sensor_camera["Sensor and camera"]
  node_firmware["ESP32 trigger and response<br/>[main.cpp]"]
  node_dashboard["Inspection dashboard"]
  node_actuator["Reject actuator"]
  node_inspection_log[("Inspection log")]
end

subgraph group_ml["ML Workflow"]
  node_classifier["Part classification"]
  node_model_training["Model training and export"]
end

node_operator(("Station operator"))

node_app -->|"creates"| node_image
node_app -->|"calls grayscale"| node_kernel_api
node_app -->|"runs baseline"| node_cpu
node_kernel_api -->|"uses image"| node_image
node_cpu -->|"reads and returns"| node_image
node_app -->|"optionally runs"| node_cuda
node_app -->|"includes contracts"| node_pipeline
node_pipeline -->|"uses image"| node_image
node_operator -.->|"starts inspection"| node_sensor_camera
node_sensor_camera -.->|"triggers station"| node_firmware
node_firmware -.->|"sends trigger"| node_sensor_camera
node_sensor_camera -.->|"provides capture"| node_app
node_app -.->|"requests classification"| node_classifier
node_classifier -.->|"provides verdict"| node_dashboard
node_dashboard -.->|"routes rejects"| node_actuator
node_app -.->|"records inspection"| node_inspection_log
node_model_training -.->|"exports model"| node_classifier
node_firmware -.->|"signals reject"| node_actuator
node_app -.->|"uses verdict format"| node_verdict

click node_app "https://github.com/hidedabush/autonomous-inspection-platform/blob/main/src/app/main.cpp"
click node_pipeline "https://github.com/hidedabush/autonomous-inspection-platform/blob/main/include/aip/pipeline.hpp"
click node_verdict "https://github.com/hidedabush/autonomous-inspection-platform/blob/main/src/core/pipeline.cpp"
click node_image "https://github.com/hidedabush/autonomous-inspection-platform/blob/main/include/aip/image.hpp"
click node_kernel_api "https://github.com/hidedabush/autonomous-inspection-platform/blob/main/include/aip/kernels.hpp"
click node_cpu "https://github.com/hidedabush/autonomous-inspection-platform/blob/main/src/cpu/grayscale_cpu.cpp"
click node_cuda "https://github.com/hidedabush/autonomous-inspection-platform/tree/main/src/cuda"
click node_firmware "https://github.com/hidedabush/autonomous-inspection-platform/blob/main/firmware/esp32/src/main.cpp"
click node_classifier "https://github.com/hidedabush/autonomous-inspection-platform/tree/main/ml"
click node_model_training "https://github.com/hidedabush/autonomous-inspection-platform/tree/main/ml/training"
click node_actuator "https://github.com/hidedabush/autonomous-inspection-platform/tree/main/hardware"
click node_inspection_log "https://github.com/hidedabush/autonomous-inspection-platform/tree/main/data"

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,node_pipeline,node_verdict toneBlue
class node_image,node_kernel_api,node_cpu,node_cuda toneAmber
class node_sensor_camera,node_firmware,node_dashboard,node_actuator,node_inspection_log toneMint
class node_classifier,node_model_training toneRose
class node_operator toneIndigo
```

## Components

### C++ Runtime

- [Smoke-test app](https://github.com/hidedabush/autonomous-inspection-platform/blob/main/src/app/main.cpp): `src/app/main.cpp`
- [Pipeline contracts](https://github.com/hidedabush/autonomous-inspection-platform/blob/main/include/aip/pipeline.hpp): `include/aip/pipeline.hpp`
- [Verdict formatting](https://github.com/hidedabush/autonomous-inspection-platform/blob/main/src/core/pipeline.cpp): `src/core/pipeline.cpp`

### Image Compute

- [Host image](https://github.com/hidedabush/autonomous-inspection-platform/blob/main/include/aip/image.hpp): `include/aip/image.hpp`
- [Kernel interface](https://github.com/hidedabush/autonomous-inspection-platform/blob/main/include/aip/kernels.hpp): `include/aip/kernels.hpp`
- [CPU grayscale](https://github.com/hidedabush/autonomous-inspection-platform/blob/main/src/cpu/grayscale_cpu.cpp): `src/cpu/grayscale_cpu.cpp`
- [CUDA preprocessing](https://github.com/hidedabush/autonomous-inspection-platform/tree/main/src/cuda): `src/cuda`

### Inspection Station

- **Sensor and camera**
- [ESP32 trigger and response](https://github.com/hidedabush/autonomous-inspection-platform/blob/main/firmware/esp32/src/main.cpp): `firmware/esp32/src/main.cpp`
- **Inspection dashboard**
- [Reject actuator](https://github.com/hidedabush/autonomous-inspection-platform/tree/main/hardware): `hardware`
- [Inspection log](https://github.com/hidedabush/autonomous-inspection-platform/tree/main/data): `data`

### ML Workflow

- [Part classification](https://github.com/hidedabush/autonomous-inspection-platform/tree/main/ml): `ml`
- [Model training and export](https://github.com/hidedabush/autonomous-inspection-platform/tree/main/ml/training): `ml/training`

### Other components

- **Station operator**

## Connections

- Smoke-test app → Host image: creates (evidence: `src/app/main.cpp`)
- Smoke-test app → Kernel interface: calls grayscale (evidence: `src/app/main.cpp`)
- Smoke-test app → CPU grayscale: runs baseline (evidence: `src/app/main.cpp`)
- Kernel interface → Host image: uses image (evidence: `include/aip/kernels.hpp`)
- CPU grayscale → Host image: reads and returns
- Smoke-test app → CUDA preprocessing: optionally runs (evidence: `src/app/main.cpp`)
- Smoke-test app → Pipeline contracts: includes contracts (evidence: `src/app/main.cpp`)
- Pipeline contracts → Host image: uses image (evidence: `include/aip/pipeline.hpp`)
- Station operator → Sensor and camera: starts inspection (evidence: `README.md`)
- Sensor and camera → ESP32 trigger and response: triggers station (evidence: `README.md`)
- ESP32 trigger and response → Sensor and camera: sends trigger (evidence: `firmware/esp32/src/main.cpp`)
- Sensor and camera → Smoke-test app: provides capture (evidence: `README.md`)
- Smoke-test app → Part classification: requests classification (evidence: `README.md`)
- Part classification → Inspection dashboard: provides verdict (evidence: `README.md`)
- Inspection dashboard → Reject actuator: routes rejects (evidence: `README.md`)
- Smoke-test app → Inspection log: records inspection (evidence: `README.md`)
- Model training and export → Part classification: exports model (evidence: `README.md`)
- ESP32 trigger and response → Reject actuator: signals reject (evidence: `firmware/esp32/src/main.cpp`)
- Smoke-test app → Verdict formatting: uses verdict format
