feat: engineering measurement architecture in 3D demo

- Stepper motor length measurement (step counting)
- Laser rangefinder height measurement
- Stereo camera width/shape analysis
- PLC decision logic with C-priority
- Actuator pusher animation
- Full measurement overlay with live data
This commit is contained in:
root
2026-07-09 14:35:58 +02:00
parent fa770f9da9
commit 3aad908aaf
15 changed files with 1241 additions and 68 deletions

View File

@@ -0,0 +1,162 @@
# Measurement System Report
## Summary
Добавлена инженерная архитектура измерения в full-screen 3D demo:
- Шаговый двигатель измеряет длину через подсчёт шагов
- Лазерный дальномер измеряет высоту
- Стереокамера измеряет ширину и форму
- PLC контроллер принимает решение и управляет actuator
## Инженерная логика
### 1. Измерение длины (Stepper Motor)
```
Длина = stepCount × mmPerStep
Параметры:
- Step angle: 1.8° (200 steps/rev)
- Microstep: 16x (3200 steps/rev)
- Drive roller: Ø120mm
- mmPerStep ≈ 0.118 mm
Пример: 300mm depth → stepCount ≈ 2540 pulses
```
### 2. Измерение высоты (Laser Rangefinder)
```
Высота = laserMountHeight - laserDistance
Параметры:
- Laser mount: 1150mm
- Belt surface: 700mm
- Max item height: 320mm
- Laser distance: mount - (belt + itemHeight)
```
### 3. Измерение ширины и формы (Stereo Camera)
```
Стереокамера:
- Baseline: 120mm между линзами
- FOV: 60°
- Mount: 1100mm
Roundness K:
- K ≥ 0.7 → round shape → D
- K < 0.7 → box/irregular → B or C
```
### 4. C-Priority Logic
```
if (dimensionsFail) {
category = 'C'; // Overrides roundness
if (roundness >= 0.7) {
cPriorityApplied = true;
warning = "Dims fail overrides roundness → C";
}
} else if (roundness >= 0.7) {
category = 'D';
} else {
category = 'B';
}
```
## Файлы созданы/изменены
| Файл | Действие |
|------|----------|
| `src/domain/physicalLayout.ts` | Добавлены stepper/laser/stereo параметры |
| `src/domain/measurementSystem.ts` | **Создан** — полная measurement логика |
| `src/domain/measurementSystem.test.ts` | **Создан** — unit tests |
| `src/components/CVInspectionOverlay.tsx` | Обновлён — MEASUREMENT overlay |
| `src/components/ThreeD/SorterDigitalTwinContinuous.tsx` | Добавлены LaserBeam, StereoCameraLenses, PointCloud, ActuatorPusher |
| `src/pages/MainPage.tsx` | Использует measurementSystem |
| `src/styles.css` | Новые стили для measurement overlay |
## Визуальные элементы 3D
### Stepper Motor
- Pulse indicator LED на моторе
- Вращающийся вал при активном измерении
### Laser Beam
- Вертикальный cyan луч от датчика к товару
- Laser dot на верхней поверхности товара
- Laser emitter подсвечивается при измерении
### Stereo Camera
- Два объектива на overhead rig (baseline 120mm)
- View cones к товару при активном измерении
### Point Cloud
- 12 точек вокруг контура товара
- Форма зависит от roundness (круглая/квадратная)
### Actuator Pusher
- Animated pusher при routing в C/D
- Цвет соответствует категории
## Measurement Overlay
Секции:
1. **STEPPER LENGTH** — Pulses, mm/step, Length
2. **LASER HEIGHT** — Mount, Distance, Height
3. **STEREO WIDTH/SHAPE** — Width, Shape, Roundness K
4. **PLC DECISION** — Dims pass/fail, Confidence, CLASS, CMD
Warnings:
- C-priority: "Dims fail overrides roundness → C"
- Low confidence: "Low confidence, rule-based fallback"
## Скриншоты
`docs/measurement_system_screenshots/`:
- `stepper_counting.png` — overlay с данными stepper
- `laser_height_measurement.png` — лазерный луч на товаре
- `stereo_shape_measurement.png` — анализ формы
- `c_priority_decision.png` — C-priority warning
- `route_command_sent.png` — команда маршрутизации
- `mobile_compact_overlay.png` — mobile view (overlay hidden)
## Проверки
| Проверка | Результат |
|----------|-----------|
| `npm run build` | ✅ Успешно |
| `npm run test` | ✅ 74 тестов |
| Docker rebuild | ✅ Успешно |
| Production QA | ✅ Работает |
| Console errors | ✅ Нет ошибок |
| /details | ✅ Не сломан |
## Что осталось
- Можно добавить более детальную анимацию point cloud
- Можно добавить визуальный encoder на drive roller
- Actuator pusher может быть более механистичным
## Команды commit/push
```bash
git add -A
git commit -m "feat: engineering measurement architecture in 3D demo
- Stepper motor length measurement (step counting)
- Laser rangefinder height measurement
- Stereo camera width/shape analysis
- PLC decision logic with C-priority
- Actuator pusher animation
- Full measurement overlay with live data
Technical details:
- mmPerStep = 0.118mm (1.8° step, 16x microstep, Ø120mm roller)
- Laser mount at 1150mm
- Stereo baseline 120mm, FOV 60°
All measurements derived from item dimensions, no random values."
git push origin dan_branch
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 KiB