vision model
This commit is contained in:
140
vision_classifier/START.md
Normal file
140
vision_classifier/START.md
Normal file
@@ -0,0 +1,140 @@
|
||||
# Полный запуск системы (трек 3)
|
||||
|
||||
Orange PI **192.168.31.225** · MQTT `test` / `1234` · RPM ленты **отрицательный** (`-200`)
|
||||
|
||||
---
|
||||
|
||||
## Стоп (сначала, если что-то уже крутится)
|
||||
|
||||
```bash
|
||||
# 1) убить vision (иначе снова поднимет ленту)
|
||||
pkill -f 'main.py' || true
|
||||
|
||||
# 2) остановить мотор
|
||||
cd ~/workdir/vision_classifier
|
||||
.venv/bin/python - <<'PY'
|
||||
from paho.mqtt.client import Client, CallbackAPIVersion
|
||||
import time
|
||||
c = Client(CallbackAPIVersion.VERSION2, client_id='stop')
|
||||
c.username_pw_set('test', '1234')
|
||||
c.connect('127.0.0.1', 1883, 60)
|
||||
c.loop_start(); time.sleep(0.3)
|
||||
c.publish('motor/control/rpm', '0', qos=1)
|
||||
time.sleep(0.3); c.loop_stop(); c.disconnect()
|
||||
print('rpm=0')
|
||||
PY
|
||||
```
|
||||
|
||||
Или `Ctrl+C` в терминале `main.py` — при выходе сам шлёт `rpm=0`.
|
||||
|
||||
---
|
||||
|
||||
## Чеклист перед стартом
|
||||
|
||||
1. **Питание** конвейера / драйвера / ESP32 включено.
|
||||
2. **RealSense D415** в USB3 (`lsusb | grep -i RealSense`).
|
||||
3. **Mosquitto** на Orange PI:
|
||||
```bash
|
||||
docker ps | grep mosquitto
|
||||
# должно быть 0.0.0.0:1883
|
||||
```
|
||||
4. **ESP32** в той же сети, в прошивке `MQTT_SERVER = "192.168.31.225"` (уже так).
|
||||
5. Лента под камерой **пустая** (пока не стартовали фон/превью).
|
||||
|
||||
---
|
||||
|
||||
## Запуск — полный контур (камера → B/C/D → MQTT → лента + серво)
|
||||
|
||||
```bash
|
||||
cd ~/workdir/vision_classifier
|
||||
|
||||
# превью JPEG + мотор + серво (рекомендуется)
|
||||
PYTHONUNBUFFERED=1 ./run.sh --preview
|
||||
```
|
||||
|
||||
Что должно появиться в логе:
|
||||
|
||||
```
|
||||
[camera] RGB: /dev/video4
|
||||
[camera] depth OK, valid≈…
|
||||
[mqtt] подключено к 127.0.0.1:1883
|
||||
```
|
||||
|
||||
После старта vision сам включает драйвер и крутит ленту с `motor.rpm: -200` из `config.yaml`.
|
||||
|
||||
### Куда смотреть во время работы
|
||||
|
||||
| Что | Где |
|
||||
|-----|-----|
|
||||
| Кадр RGB | `debug_frames/live_color.jpg` |
|
||||
| Depth | `debug_frames/live_depth.jpg` |
|
||||
| Решения LOCK | stdout + `logs/decisions.jsonl` |
|
||||
| MQTT трафик | http://192.168.31.225:3000 (MQTT Explorer) |
|
||||
| Зоны vision | топики `vision/feedback/*` |
|
||||
|
||||
Хвост логов:
|
||||
|
||||
```bash
|
||||
tail -f logs/decisions.jsonl
|
||||
# или фильтр по LOCK:
|
||||
tail -f logs/decisions.jsonl | while read l; do echo "$l" | .venv/bin/python -c "import sys,json; d=json.loads(sys.stdin.read()); print(d.get('ts'), 'LOCK', d.get('zone'), d.get('dims_mm'), d.get('circle_ratio'), d.get('reason',''))"; done
|
||||
```
|
||||
|
||||
### Зоны
|
||||
|
||||
| LOCK | Смысл | Серво (config) |
|
||||
|------|--------|----------------|
|
||||
| **B** | подходит | servo 0 idle |
|
||||
| **C** | габариты вне 10…450×320×320 | servo 1 → 90° |
|
||||
| **D** | круг `ratio ≥ 0.8` | servo 2 → 90° |
|
||||
|
||||
Кладите один объект в поле камеры, ждите строку `LOCK B/C/D`.
|
||||
|
||||
---
|
||||
|
||||
## Запуск без движения ленты (только зрение)
|
||||
|
||||
```bash
|
||||
cd ~/workdir/vision_classifier
|
||||
PYTHONUNBUFFERED=1 ./run.sh --preview --dry-route --no-motor --no-mqtt
|
||||
```
|
||||
|
||||
JPEG всё равно обновляются в `debug_frames/`.
|
||||
|
||||
---
|
||||
|
||||
## Ручной тест ленты (без vision)
|
||||
|
||||
```bash
|
||||
# нужен mosquitto_pub или python из .venv
|
||||
mosquitto_pub -h 127.0.0.1 -u test -P 1234 -t motor/control/driver -m on
|
||||
mosquitto_pub -h 127.0.0.1 -u test -P 1234 -t motor/control/tmc/enable -m on
|
||||
mosquitto_pub -h 127.0.0.1 -u test -P 1234 -t motor/control/rpm -m -200
|
||||
# стоп:
|
||||
mosquitto_pub -h 127.0.0.1 -u test -P 1234 -t motor/control/rpm -m 0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## SCADA (опционально, параллельно)
|
||||
|
||||
```bash
|
||||
cd ~/workdir/backend_control
|
||||
# MQTT_BROKER = "192.168.31.225" или 127.0.0.1
|
||||
python gui.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Если что-то не едет
|
||||
|
||||
| Проблема | Действие |
|
||||
|----------|----------|
|
||||
| Камера занята | `pkill -f main.py`; `fuser /dev/video0` |
|
||||
| MQTT не коннектится | `docker ps \| grep mosquitto`, логин `test`/`1234` |
|
||||
| ESP молчит | одна Wi‑Fi сеть, брокер **192.168.31.225:1883** |
|
||||
| Лента в другую сторону | в `config.yaml` → `motor.rpm: -200` (минус обязателен) |
|
||||
| Ложные LOCK на пустой ленте | уберите мусор/блики; при необходимости поднимите `min_object_height_mm` |
|
||||
| Серво не те каналы | `routing.zones` в `config.yaml` |
|
||||
|
||||
Подробности сети/топиков: [INTEGRATION.md](INTEGRATION.md). Алгоритм: [README.md](README.md).
|
||||
Reference in New Issue
Block a user