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
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.
