# ileri005/omninav architecture

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

## Overview

This small OpenCV toolkit has three workflows: generate a printable ArUco marker, diagnose detection from a saved image, and track marker pose from a Raspberry Pi camera. The shared domain stages are marker encoding and marker detection; live mapping adds camera-frame ingestion, pose estimation, and visualization. The scripts call OpenCV directly rather than sharing an internal application module. The README is empty, so capabilities and connections are based on the supplied source; generated image files are runtime artifacts, not listed in the repository tree.

Main entry points: [`live_mapping.py`](https://github.com/ileri005/omninav/blob/main/live_mapping.py) (Track live markers), [`aruco_detect.py`](https://github.com/ileri005/omninav/blob/main/aruco_detect.py) (Diagnose image), [`generate_marker.py`](https://github.com/ileri005/omninav/blob/main/generate_marker.py) (Generate marker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_marker["Marker generation"]
  node_generator["Generate marker<br/>[generate_marker.py]"]
  node_aruco_generator["ArUco generation"]
  node_marker_image["Marker image"]
end

subgraph group_diagnostic["Image diagnostics"]
  node_diagnostic_script["Diagnose image<br/>[aruco_detect.py]"]
  node_input_image["Input image"]
  node_diagnostic_output["Diagnostic image"]
  node_diagnostic_report["Detection report"]
end

subgraph group_mapping["Live mapping"]
  node_mapping_script["Track live markers<br/>[live_mapping.py]"]
  node_pose_estimator["Pose estimation<br/>[live_mapping.py]"]
  node_tracking_view["Tracking visualization<br/>[live_mapping.py]"]
end

node_operator(("Operator"))
node_detector["ArUco detection"]
node_camera["Pi camera"]
node_console["Console"]
node_viewport["Viewport"]

node_operator -->|"runs"| node_generator
node_generator -->|"generates marker"| node_aruco_generator
node_generator -->|"writes image"| node_marker_image
node_operator -->|"runs"| node_diagnostic_script
node_marker_image -->|"provides image"| node_input_image
node_diagnostic_script -->|"loads image"| node_input_image
node_diagnostic_script -->|"detects markers"| node_detector
node_diagnostic_script -->|"writes overlay"| node_diagnostic_output
node_diagnostic_script -->|"prints results"| node_diagnostic_report
node_operator -->|"runs"| node_mapping_script
node_mapping_script -->|"captures frames"| node_camera
node_mapping_script -->|"detects markers"| node_detector
node_mapping_script -->|"estimates pose"| node_pose_estimator
node_mapping_script -->|"draws overlays"| node_tracking_view
node_mapping_script -->|"prints coordinates"| node_console
node_mapping_script -->|"renders frames"| node_viewport

click node_generator "https://github.com/ileri005/omninav/blob/main/generate_marker.py"
click node_diagnostic_script "https://github.com/ileri005/omninav/blob/main/aruco_detect.py"
click node_mapping_script "https://github.com/ileri005/omninav/blob/main/live_mapping.py"
click node_pose_estimator "https://github.com/ileri005/omninav/blob/main/live_mapping.py"
click node_tracking_view "https://github.com/ileri005/omninav/blob/main/live_mapping.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_generator,node_aruco_generator,node_marker_image,node_viewport toneBlue
class node_diagnostic_script,node_input_image,node_diagnostic_output,node_diagnostic_report toneAmber
class node_mapping_script,node_pose_estimator,node_tracking_view toneMint
class node_operator,node_detector,node_camera,node_console toneIndigo
```

## Components

### Marker generation

- [Generate marker](https://github.com/ileri005/omninav/blob/main/generate_marker.py): `generate_marker.py`
- **ArUco generation**
- **Marker image**

### Image diagnostics

- [Diagnose image](https://github.com/ileri005/omninav/blob/main/aruco_detect.py): `aruco_detect.py`
- **Input image**
- **Diagnostic image**
- **Detection report**

### Live mapping

- [Track live markers](https://github.com/ileri005/omninav/blob/main/live_mapping.py): `live_mapping.py`
- [Pose estimation](https://github.com/ileri005/omninav/blob/main/live_mapping.py): `live_mapping.py`
- [Tracking visualization](https://github.com/ileri005/omninav/blob/main/live_mapping.py): `live_mapping.py`

### Other components

- **Operator**
- **ArUco detection**
- **Pi camera**
- **Console**
- **Viewport**

## Connections

- Operator → Generate marker: runs
- Generate marker → ArUco generation: generates marker
- Generate marker → Marker image: writes image
- Operator → Diagnose image: runs
- Marker image → Input image: provides image
- Diagnose image → Input image: loads image
- Diagnose image → ArUco detection: detects markers
- Diagnose image → Diagnostic image: writes overlay
- Diagnose image → Detection report: prints results
- Operator → Track live markers: runs
- Track live markers → Pi camera: captures frames
- Track live markers → ArUco detection: detects markers
- Track live markers → Pose estimation: estimates pose
- Track live markers → Tracking visualization: draws overlays
- Track live markers → Console: prints coordinates
- Track live markers → Viewport: renders frames
