Add initial project structure and configuration files

This commit is contained in:
Jack.Le
2026-05-18 14:14:16 -07:00
commit b9adc7c0b8
41 changed files with 94365 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
# Wafer Position Monitor (demo)
PySide6 desktop demo: load NanoBerry edge CSVs from `MASTER_SD/`, fit a wafer circle, show **X / Y / theta** offset and **sigma** vs a calibration baseline. No live camera required.
**Stack:** Python 3.11+, PySide6, NumPy.
## Quick start
```bash
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
wafer-user # or: python src/wafer_edge/App.py
```
Click **Read Wafer** to load the demo CSVs. Tests: `python -m pytest tests/` (UI smoke needs a display).
## Demo data
CSV files in `[MASTER_SD/](MASTER_SD/)`. Names: `{S|R}{1|2}{seq}P0.CSV` — local/remote board, SPI camera, 4-digit sequence (e.g. `S10540P0.CSV`).
Default cameras: `CsvSource.DEMO_CAMERA_PATHS`. Change that dict or use `parse_csv_filename()` for other captures.
## Calibration
First run creates `baseline.json` (gitignored). Key fields: `center_mm`, `radius_mm` (75), `center_px`, `radius_px` (pixel scale).
## Layout
| Path | Role |
| ----------------------- | --------------------------------- |
| `src/wafer_edge/App.py` | Main window |
| `VisionEngine.py` | Circle fit + offsets (no Qt) |
| `CsvSource.py` | CSV loader |
| `ui/widgets.py` | Plot + metric cards |
| `ui/Theme.qml` | Styles (loaded via `ui/theme.py`) |
**Pipeline:** `DEMO_CAMERA_PATHS``load_camera_records_from_csv()``snapshot_from_records()` → UI.
![APP screenshot](screenshot.png)