Files
ozone-tech_owl_prime/vision_classifier/config.yaml
2026-08-03 01:26:42 +07:00

111 lines
4.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Конфиг алгоритмической части трека 3 (RealSense D415 → классификация → MQTT)
camera:
depth_device: /dev/video0
color_device: /dev/video4
width: 640
height: 480
fps: 30
depth_scale_mm: 1.0
# Intrinsics депта D415 @ 640x480 (кроп 4:3 из 1280x720, HFOV 65°): fx=fy≈670.
# Старое значение 430 завышало габариты в ~1.56 раза!
# Уточнить под свою камеру: .venv/bin/python calibrate.py --length 300 --width 200
fx: 564.0
fy: 564.0
cx: 320.0
cy: 240.0
# Совмещение RGB с depth в демо (сенсоры D415 разнесены ~55 мм).
# Подбор: .venv/bin/python align_color.py (нужен объект с чёткими краями)
color_dx: -40.0
color_dy: -8.0
color_scale: 1.030
# Высота камеры над пустой лентой, мм (оценка по боковым полосам ленты: ~594)
belt_distance_mm: 594
belt_tolerance_mm: 25
min_object_height_mm: 20
min_object_area_px: 800
# Игнор краёв кадра (ролики/борта/плата справа), доля от размера кадра
roi_margin:
top: 0.12
bottom: 0.02
left: 0.05
right: 0.12
# Сколько объектов одновременно искать в кадре
max_objects_in_frame: 3
# RGB-картинка в демо (измерения всё равно по depth)
use_color: true
# Фоновая карта глубины: в main.py при старте; в demo — только кнопка «Авто-высота»
# false пока тестируем с объектом на ленте (карту снимать только на ПУСТОЙ ленте)
use_background_map: false
# RGB-поиск плоских товаров (телефон). ВЫКЛ по умолчанию — тени/шум давали ложные C.
# Включить: true + «Авто-высота» на пустой ленте.
detect_flat_rgb: false
rgb_diff_threshold: 35
classification:
min_mm: [10, 10, 10]
max_mm: [450, 320, 320]
circle_ratio_threshold: 0.8
# Пограничные случаи: нет консенсуса N кадров (~4 с при 12 fps обработки)
# → товар помечается «неуверенно» и уходит в безопасную зону (по умолчанию C).
uncertain_after_frames: 45
uncertain_fallback_zone: C
# MQTT — тот же брокер, что слушает ESP32 и SCADA (backend_control)
# На этом Orange PI mosquitto уже слушает :1883 → используйте 127.0.0.1
# ESP32 в прошивке ждёт 192.168.0.200 — см. INTEGRATION.md
mqtt:
broker: "127.0.0.1"
port: 1883
user: "test"
password: "1234"
client_id: "vision_classifier_opi"
topic_result: "vision/feedback/category"
topic_dims: "vision/feedback/dimensions"
topic_circle: "vision/feedback/circle_ratio"
topic_debug: "vision/feedback/debug"
enabled: true
# Шаговик ленты — те же топики, что SCADA (arduino_code не меняем)
motor:
enabled: true
rpm: -200 # скорость ленты; у вас направление — с минусом
current_percent: 50
microsteps: 16
stealthchop: true
disable_on_stop: false # при Ctrl+C только rpm=0, драйвер не гасим
# Серво-селекторы зон B/C/D — подставьте свои каналы/углы
routing:
enabled: true
zones:
B: # Подходит для сортировки — пропуск
servo: 0
idle_angle: 0
divert_angle: 0
hold_ms: 500
C: # Не подходит по габаритам
servo: 1
idle_angle: 0
divert_angle: 90
hold_ms: 800
D: # Без доупаковки (круг)
servo: 2
idle_angle: 0
divert_angle: 90
hold_ms: 800
cooldown_ms: 1500
runtime:
show_preview: false
save_debug_frames: false
debug_dir: "debug_frames"
# JSONL-журнал всех LOCK-решений (метрики для отчёта)
decisions_log: "logs/decisions.jsonl"
preview_every_n: 3
process_every_n: 1
confirm_frames: 8