- 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
5.1 KiB
5.1 KiB
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
Секции:
- STEPPER LENGTH — Pulses, mm/step, Length
- LASER HEIGHT — Mount, Distance, Height
- STEREO WIDTH/SHAPE — Width, Shape, Roundness K
- 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 с данными stepperlaser_height_measurement.png— лазерный луч на товареstereo_shape_measurement.png— анализ формыc_priority_decision.png— C-priority warningroute_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
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