Робот

Мы соединили две вещи, которые обычно живут в разных мирах: систему технического зрения engiAI с собственным конвейером обучения нейросетей и шестиосевой промышленный робот BORUNTE BRTIRUS0707A. Результат — робот, который не выполняет заученную программу, а видит деталь и подстраивается под неё в реальном времени.

Тестовое задание, на котором связка доказала себя: коробка лежит на столе в произвольном положении, оператор крутит её как угодно — от 0 до 360 градусов. Камера смотрит сверху, нейросеть определяет угол поворота с точностью до градуса, и рука робота повторяет положение коробки — разворачивает захват ровно под неё. Никаких упоров, ложементов и датчиков положения: только камера, нейросеть и робот.
Из чего состоит система
engiAI — машинное зрение. Полный цикл работы с ИИ: подключение промышленных камер (SICK, Hikrobot, GigE Vision, USB), разметка зон инспекции прямо на живом видео, генерация обучающей выборки из считанных кадров, обучение YOLO-моделей на GPU (CUDA) и живой инференс со скоростью потока камеры. Модуль OUTPUT превращает результат распознавания в действия: TCP-посылки роботу или ПЛК и дискретные выходы камер.
Robot1 — управление роботом. Прямое общение с контроллером HC1 по открытому JSON/TCP-протоколу, без пульта и проприетарного софта: ручное управление каждой осью, сохраняемые позы, 3D-модель робота с базой положений. Главное — TCP-приёмник команд от ИИ: правило на каждую ось с именем команды, скоростью, смещением, инверсией и приведением угла к ближнему пути (±180°).
Связь между программами — обычный TCP/IP. Это принципиально: в цепочку можно поставить любое оборудование, которое умеет открыть сокет — ПЛК, другой робот, SCADA, ERP.
Как это работает: от кадра до движения
- Кадр. Камера отдаёт изображение зоны инспекции (в нашем стенде — SICK, матрица 2048×2048).
- Класс. YOLO-модель классифицирует положение детали: каждый градус поворота — отдельный класс (0…359 на полный круг или 0…180 для симметричных деталей).
- Посылка. Правило OUTPUT формирует команду — например «J6 315» — и отправляет её по TCP. Правило создаётся одно на всю модель: подстановка {class} сама передаёт имя распознанного класса.
- Правило оси. Robot1 применяет настройки оси — инверсию, смещение, ближний путь — и командует контроллеру целевой угол с заданной скоростью.
- Движение. Ось поворачивается — захват встаёт ровно по детали.
Задержка реакции от поворота коробки до старта оси — около секунды, и она управляемая: все выдержки вынесены в настройки.
Обучение без датасета и без ML-инженера
Классическая боль машинного обучения на производстве — сбор и разметка тысяч снимков. В engiAI это решено генерацией синтетики: оператор делает один снимок детали в зоне, и программа сама строит обучающую выборку:
- поворачивает окно зоны над целым кадром с заданным шагом (хоть 0,1°) — в кадр попадает настоящий фон, деталь не режется рамкой: снимок автоматически расширяется до квадрата по диагонали зоны;
- добавляет вариации яркости и контраста в заданных пределах и зеркальные копии;
- сама раскладывает кадры по классам-градусам (0…359) и делит выборку на train и val.
Из одного снимка получаются сотни обучающих файлов. Дальше — кнопка «TRAIN AI MODEL», и через время модель готова к работе. Весь цикл «показал деталь → обучил → робот работает» выполняет оператор линии, а не приглашённый ML-инженер.
Поток данных не должен ломать робота
Нейросеть отдаёт распознавания десятки раз в секунду, и «в лоб» транслировать их в движения нельзя — сервоприводы срываются в аварию от потока перенацеливаний. В связке реализована многоступенчатая защита, выверенная на живом роботе:
- Мёртвая зона — дребезг между соседними классами (315↔312) не двигает ось вовсе;
- Выдержка стабильности — новый класс должен продержаться заданное время: одиночные ложные кадры нейросети не гоняют ось в дальние рейсы;
- Плавный перехват — если цель изменилась, пока ось едет, робот не доезжает устаревшую точку: контролируемое торможение, очистка очереди контроллера и сразу движение к последней цели. Промежуточные команды отбрасываются — важна только актуальная;
- Пауза между движениями — жёсткий ограничитель частоты команд контроллеру;
- Автовосстановление — при аварии очередь контроллера чистится автоматически, после сброса цель уходит заново; обе программы ведут постоянные файловые журналы.
Чем это лучше классического робота-манипулятора
Классический промышленный робот повторяет жёстко записанную траекторию. Всё, что он «знает» о детали, обеспечивается механикой вокруг него. Отсюда — главные статьи расходов и главные ограничения автоматизации. Зрение с ИИ снимает их по пунктам.
Деньги и сроки
- Не нужна механическая оснастка базирования — ложементы, упоры, вибробункеры, центрирующие станции. Деталь может лежать как угодно: робот сам под неё подстроится. Оснастка под одну деталь нередко стоит как сам робот — здесь её нет вообще.
- Переналадка на новое изделие — часы, а не недели. Показали детали камере, обучили модель, задали правило — линия работает. Не нужен выезд интегратора и остановка производства.
- Мелкие серии становятся рентабельными. Классическая автоматизация окупается только на больших тиражах. Когда переналадка почти бесплатна, автоматизировать выгодно даже партию на день.
- Один инструмент вместо трёх систем: наведение робота, контроль качества и отбраковка работают в одной программе с одной камерой.
Гибкость и качество
- Толерантность к реальному миру. Сместился конвейер, деталь легла криво, пришла партия с другим оттенком — классическая ячейка встаёт, ИИ-ячейка продолжает работать: она смотрит на деталь, а не на координаты.
- Контроль качества бесплатно. Та же модель, что наводит робота, отличает брак: замятую коробку, сорванную этикетку, неправильную сборку — и отправляет её в отбраковку тем же механизмом правил.
- Любая ось — по ИИ. Правила назначаются на каждую из шести осей независимо: сегодня по модели работает один разворот захвата, завтра — полное позиционирование по нескольким осям одновременно.
- Постоянная обратная связь. Робот не «слепой исполнитель»: каждое движение — ответ на то, что реально видно в кадре, с журналом всех решений.
Открытость и масштабирование
- Независимость от бренда робота. Связь — открытый TCP/IP: сегодня это BORUNTE, завтра тем же правилом можно управлять другим манипулятором, поворотным столом или ПЛК.
- Дообучение на месте. Модель — не «прошивка»: появился новый вид детали или брака — дообучили за вечер, прямо на линии, на реальных кадрах с реальным освещением цеха.
- Тиражирование ячейки — копирование программ и файла модели, а не повторный проект интеграции.
- Прозрачность. Постоянные журналы обеих программ и журнал срабатываний в базе данных: видна вся история — от кадра до движения оси. Это база для статистики, метрик качества партий и предиктивного обслуживания.
Где это применимо
- Упаковка и логистика: ориентация коробок перед укладкой, паллетирование и депаллетирование смешанных палет, конвейерный пикинг произвольно лежащих предметов.
- Контроль качества с отбраковкой: одна камера и проверяет, и командует исполнительными механизмами.
- Загрузка станков (ЧПУ, прессы): заготовки навалом или на подложке, без вибробункеров.
- Сборка: позиционирование деталей, контроль правильности установки на каждом шаге.
- Пищевое производство и агро: вариативные объекты, где механическое базирование невозможно в принципе.
- Переработка и сортировка: объекты, которых «нет в каталоге», — область, где классическая автоматизация бессильна.
Что дальше
- Этапы и внешние триггеры: технологическая программа из шагов (координаты всех осей и скорость на каждом шаге), добавление и удаление этапов из интерфейса, запуск этапов по TCP-сигналам от зрения, ПЛК или оператора;
- Захват по полной позе: от угла одной оси — к положению и ориентации детали по нескольким осям одновременно;
- Многокамерные ячейки и синхронизация нескольких роботов;
- Автодообучение на потоке: система сама собирает сложные кадры и предлагает их в новую обучающую выборку.
Технологический стек
.NET 9 (WinForms) · YOLO-классификация, ONNX, CUDA · камеры SICK / Hikrobot / GigE Vision / DirectShow · робот BORUNTE BRTIRUS0707A (контроллер HC1, открытый JSON/TCP-протокол) · SQLite · TCP/IP-интеграция с любым оборудованием.
Проект показывает главное: порог входа в «зрячую» робототехнику упал. Не нужен штат ML-инженеров и месяцы интеграции — нужен один снимок детали, кнопка обучения и открытый протокол. Робот перестаёт быть самым дорогим и самым негибким станком в цехе — и становится универсальным рабочим, которого переучивают за вечер.
