Матриця сумісності компонентів
Для стабільної лабораторної експлуатації необхідно фіксувати «базову конфігурацію» стенду (software + platform + firmware) і оновлювати її тільки через контрольований процес (див. 14.2).
Таблиця 14.1.1. Базові software-версії (за поточним станом репозиторіїв)
| Компонент | Поточне значення | Джерело |
|---|---|---|
| codroid-ball-picker | 0.1.0 | codroid-ball-picker/pyproject.toml |
| codroid-api | 0.1.0 | codroid-api/pyproject.toml |
| onrobot-api | 0.1.0 | onrobot-api/pyproject.toml |
| Python runtime | >=3.11 | pyproject.toml усіх трьох проєктів |
| depthai | 3.2.1 | codroid-ball-picker/pyproject.toml |
| Контейнер UI (base image) | ubuntu:22.04 | codroid-ball-picker/Dockerfile |
Таблиця 14.1.2. Platform/runtime сумісність для Jetson
| Компонент платформи | Вимога / робочий діапазон | Примітка |
|---|---|---|
| JetPack | 5.x або 6.x | за деплой-інструкцією docs/deploy_jetson_docker.md |
| NVIDIA Container Runtime | Обов’язково встановлено | потрібен для GPU-доступу в контейнері |
| Docker + Compose plugin | Обов’язково встановлено | запуск/оновлення контейнера через docker compose |
| Мережевий режим контейнера | network_mode: host | потрібен прямий доступ до підмережі робота/грипера |
| UI endpoint | http://<jetson-ip>:8050 | контейнер запускається з --host 0.0.0.0 --port 8050 |
Таблиця 14.1.3. Інтеграційні адреси й протоколи (baseline)
| Вузол | Значення за замовчуванням | Протокол |
|---|---|---|
| Robot controller host | 192.168.101.100 | WS |
| Robot WS port | 9000 | ws://…:9000/ |
| User WS port | 9098 | ws://…:9098/ |
| OnRobot Compute Box IP | 192.168.101.95 | XML-RPC / Socket.IO |
| OnRobot XML-RPC port | 41414 | http://…:41414/ |
| OAK-D Pro | USB-C (без IP) | USB (DepthAI) |
Таблиця 14.1.4. Firmware baseline (заповнюється на конкретному стенді)
| Компонент | Фактична версія на стенді | Дата перевірки | Відповідальний |
|---|---|---|---|
| Estun Robot Controller firmware | (заповнюється) | (заповнюється) | (заповнюється) |
| OnRobot Compute Box firmware | (заповнюється) | (заповнюється) | (заповнюється) |
Принцип сумісності:
- Достатньою вважається конфігурація, що пройшла acceptance tests після оновлення (див. 10.12 та 14.2).
- Зміна будь-якого шару (контейнер, JetPack, firmware) без повторної перевірки сумісності не допускається.
- Для аудиту стенду потрібно зберігати журнал: дата зміни, що оновлено, хто виконав, результат acceptance tests.
Політика оновлення та відкату
Оновлення стенду виконується тільки в контрольованому вікні обслуговування, коли робот не перебуває в активному виробничому циклі.
Порядок штатного оновлення:
- Зафіксувати поточний стан: зберегти ID поточного контейнерного образу codroid-ui і створити резервну копію каталогу data/ (калібрування, workspace, drop target, налаштування).
- Перевести стенд у сервісний режим: зупинити активні програми в UI та переконатися, що робот у безпечному стані.
- Оновити контейнер: виконати docker compose pull ui, потім docker compose up -d –force-recreate ui.
- Переконатися, що контейнер працює: перевірити docker ps; контейнер codroid-ui має бути у стані running.
- Виконати післяоновлювальні acceptance tests (див. нижче).
Політика автооновлення:
- Якщо використовується systemd-таймер codroid-ball-picker-auto-update.timer, це має бути зафіксовано в журналі стенду.
- Після автоматичного оновлення також обов’язковий повний acceptance check перед роботою зі студентами.
- Якщо потрібен ручний контроль версій, автооновлення вимикають на період навчального циклу.
Порядок rollback (відкат):
- Умова для відкату: критична регресія (камера, робот, грипер, safety-логіка або UI), яку не усунуто оперативно.
- Відкотити контейнер до попереднього стабільного тегу/образу й перезапустити ui.
- За потреби відновити data/ з резервної копії (якщо змінились формати артефактів або дані пошкоджено).
- Повторно виконати acceptance tests і зафіксувати результат у журналі змін.
Мінімальний післяоновлювальний acceptance tests:
- UI доступний за http://<jetson-ip>:8050, сторінка завантажується без критичних помилок.
- OAK-D визначається, є стабільний RGB потік; depth-перевірка проходить у доступному режимі.
- Тест robot connection успішний; Acquire/Release robot control працює коректно.
- Тест gripper (OnRobot) успішний; Compute Box досяжний.
- Завантажуються збережені артефакти data/calibration_bundle.npz, data/workspace_definition.npz, data/robot_calibration.json.
- Виконано безпечний dry-run і мінімум один контрольний цикл pick -> drop без аварійних зупинок.