mirror of
https://github.com/azaion/detections-semantic.git
synced 2026-04-23 00:26:37 +00:00
8e2ecf50fd
Made-with: Cursor
118 lines
3.2 KiB
Markdown
118 lines
3.2 KiB
Markdown
# Component Diagram — Semantic Detection System
|
|
|
|
```mermaid
|
|
graph TB
|
|
subgraph External["External Systems"]
|
|
YOLO["Existing YOLO Pipeline"]
|
|
CAM["ViewPro A40 Camera"]
|
|
GPS["GPS-Denied System"]
|
|
OP["Operator Display"]
|
|
NVME["NVMe Storage"]
|
|
end
|
|
|
|
subgraph Helpers["Common Helpers"]
|
|
CFG["Config\n(YAML loader + validation)"]
|
|
TYP["Types\n(shared dataclasses)"]
|
|
end
|
|
|
|
subgraph Core["Core Components"]
|
|
SC["ScanController\n(py_trees BT orchestrator)"]
|
|
T1["Tier1Detector\n(YOLOE TensorRT FP16)"]
|
|
T2["Tier2SpatialAnalyzer\n(mask trace + cluster trace)"]
|
|
VLM["VLMClient\n(NanoLLM IPC)"]
|
|
GD["GimbalDriver\n(ViewLink + PID)"]
|
|
OM["OutputManager\n(logging + recording)"]
|
|
end
|
|
|
|
subgraph VLMContainer["Docker Container"]
|
|
NANO["NanoLLM\n(VILA1.5-3B)"]
|
|
end
|
|
|
|
%% Helper dependencies (all components use both)
|
|
CFG -.-> T1
|
|
CFG -.-> T2
|
|
CFG -.-> VLM
|
|
CFG -.-> GD
|
|
CFG -.-> OM
|
|
CFG -.-> SC
|
|
TYP -.-> T1
|
|
TYP -.-> T2
|
|
TYP -.-> VLM
|
|
TYP -.-> GD
|
|
TYP -.-> OM
|
|
TYP -.-> SC
|
|
|
|
%% ScanController orchestrates all
|
|
SC -->|"detect(frame)"| T1
|
|
SC -->|"trace_mask / trace_cluster"| T2
|
|
SC -->|"analyze(roi, prompt)"| VLM
|
|
SC -->|"set_angles / follow_path / zoom_to_poi"| GD
|
|
SC -->|"log_detection / record_frame"| OM
|
|
|
|
%% VLM to NanoLLM container
|
|
VLM -->|"Unix socket IPC"| NANO
|
|
|
|
%% External integrations
|
|
YOLO -->|"detections[]"| SC
|
|
CAM -->|"HDMI/IP frames"| SC
|
|
GD -->|"UART ViewLink"| CAM
|
|
OM -->|"YOLO format output"| OP
|
|
OM -->|"JPEG + JSON-lines"| NVME
|
|
GPS -.->|"coordinates (optional)"| OM
|
|
|
|
%% Styling
|
|
classDef external fill:#f0f0f0,stroke:#999,color:#333
|
|
classDef helper fill:#e8f4fd,stroke:#4a90d9,color:#333
|
|
classDef core fill:#d4edda,stroke:#28a745,color:#333
|
|
classDef container fill:#fff3cd,stroke:#ffc107,color:#333
|
|
|
|
class YOLO,CAM,GPS,OP,NVME external
|
|
class CFG,TYP helper
|
|
class SC,T1,T2,VLM,GD,OM core
|
|
class NANO container
|
|
```
|
|
|
|
## Component Dependency Graph (implementation order)
|
|
|
|
```mermaid
|
|
graph LR
|
|
CFG["Config"] --> T1["Tier1Detector"]
|
|
CFG --> T2["Tier2SpatialAnalyzer"]
|
|
CFG --> VLM["VLMClient"]
|
|
CFG --> GD["GimbalDriver"]
|
|
CFG --> OM["OutputManager"]
|
|
TYP["Types"] --> T1
|
|
TYP --> T2
|
|
TYP --> VLM
|
|
TYP --> GD
|
|
TYP --> OM
|
|
|
|
T1 --> SC["ScanController"]
|
|
T2 --> SC
|
|
VLM --> SC
|
|
GD --> SC
|
|
OM --> SC
|
|
|
|
SC --> IT["Integration Tests"]
|
|
```
|
|
|
|
## Data Flow Summary
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
Frame["Camera Frame"] --> T1["Tier1\nYOLOE detect"]
|
|
T1 -->|"detections[]"| Eval["EvaluatePOI\n(scenario match)"]
|
|
Eval -->|"POI queued"| L2["L2 Investigation"]
|
|
L2 -->|"mask"| T2M["Tier2\ntrace_mask"]
|
|
L2 -->|"cluster dets"| T2C["Tier2\ntrace_cluster"]
|
|
T2M -->|"waypoints"| Follow["Gimbal\nPID follow"]
|
|
T2C -->|"waypoints"| Visit["Gimbal\nvisit loop"]
|
|
Follow -->|"ambiguous"| VLM["VLM\nanalyze"]
|
|
Visit -->|"ambiguous"| VLM
|
|
Follow -->|"detection"| Log["OutputManager\nlog + record"]
|
|
Visit -->|"detection"| Log
|
|
VLM -->|"tier3 result"| Log
|
|
Log -->|"operator format"| OP["Operator Display"]
|
|
Log -->|"JPEG + JSON"| NVME["NVMe Storage"]
|
|
```
|