В предыдущей статье я рассказал о том, как наш робот подружился с распознаванием чертежей для изготовления мебели. Однако, эта история нашла продолжение, и новая задача: автоматизировать перенос дверных полотен с паллеты для их дальнейшей обработки (ламинации). Люди устают, ошибаются, и от неаккуратных действий на полотнах могут появляться сколы – всё это убытки для производства, а значит, повод для роботизации. Мы решили эту задачу с помощью единственной камеры глубины (ToF) и специально адаптированных алгоритмов компьютерного зрения. В статье мы подробно расскажем, почему выбрали именно ToF, как объединили 2D-нейросеть и 3D-обработку данных, и как наш робот теперь с миллиметровой точностью находит и захватывает двери любой формы..

Введение: Следующий логический шаг после чертежа

В предыдущей статье рассказал, как работали с ДСП заготовками, лёгкими, гладкими и однотипными, легко захватываемыми вакуумными присосками. Но в новом вызове нас встретили тяжёлые дверные полотна, сложенные в стопки на паллетах разного типа и размера, цвета, с вырезами под стёкла и т. д.

Пример палеты с заготовками для межкомнатных дверей
Пример палеты с заготовками для межкомнатных дверей

Задача: автоматизировать процесс разгрузки паллет. Робот-манипулятор должен был заменить людей, выполняя монотонную и тяжелую работу.

Ключевой вызов: научить робота видеть и точно локализовывать верхнюю дверь в стопке в неструктурированной среде. Это классическая задача bin picking, но с нюансами: объекты крупные, имеют низкую текстуру (зачастую это ещё голый ДВП).

Цель была четкой: получить от системы зрения 3D-координаты (X, Y, Z) и угол вращения (Rx) верхней двери для захвата роботизированным схватом (зажимом) по краям двери. Благо, схват большой, центр масс угадывать не пришлось. А так как мы используем механический захват, то необходимо определить нужные координаты весьма точно (до 1-2 мм).

Выбор датчика: Почему не 2D, не стереозрение, а именно Time-of-Flight (ToF)

Перед тем как приступить к исправлению кода, необходимо было заменить систему зрения для робота. Предыдущая версия с контровым светом не обеспечивала точную координату высоты, а также занимала много места из-за использования профилей. Поэтому возникла необходимость в замене модуля зрения. Мы изучили основные альтернативы:

  • Классические 2D-камеры: отпали сразу. Для точного захвата роботу критически необходима информация о глубине (Z). По одной 2D-картинке определить высоту объекта на паллете и его положение в 3D-пространстве можно, но это сложнее и дороже.

  • Стереопары (Stereo Vision): требуют калибровки, чувствительны к освещению и слаботекстурным поверхностям (а наши двери — идеальный пример такой поверхности). Вычисления глубины (disparity map) могли бы быть зашумленными и ненадежными. Да, можно взять готовые датчики, но это дороже.

  • Лазерные сканеры (LiDAR): точны, но нужного разрешения в промышленном исполнении – дороги и избыточны для нашей задачи с фиксированной геометрией паллеты. Тем более что все-равно требуется 2D-изображение для определения типа изделия (данные передаются на станок).

  • Time-of-Flight (ToF) камера. Или, как её еще называют, твердотельный лидар. Относительно новая разработка, содержащая весьма хороший потенциал, а цены на неё стали весьма доступными (по меркам рынка машинного зрения).

Именно TOF предоставила нам идеальный компромисс. Принцип её работы оказался для нас чрезвычайно подходящим:

  1. Камера излучает модулированный инфракрасный свет.

  2. Свет отражается от объектов в поле зрения,

  3. Датчик измеряет время задержки (Time-of-Flight) возвращения каждого луча,

  4. На основе этого времени и известной скорости света мгновенно вычисляется расстояние до каждой точки сцены, формируя карту глубины (Depth Map),

  5. Дополнительно, установлен RGB модуль, который показывает цветную 2D картинку.

Именно ToF-камера с цветной RGB-матрицей стала нашим выбором. Почему?

Наша пробная ToF камера
Наша пробная ToF камера

В первую очередь хотелось испытать технологию в деле. В рамках эксперимента была куплена самая простая промышленная ToF + RGB камера на красной китайской площадке. По результатам тестирования она нам понравилась, за исключением разрешения 2D модуля, но в остальном сплошные преимущества для нашего проекта:

  • Скорость: Получение полного кадра глубины происходит за один момент времени. Без ожидания, вспышек света и т.д.

  • Всепогодность для цеха: Собственный активный источник света (ИК-подсветка) делает систему нечувствительной к изменениям заводского освещения. А дополнение белой подсветкой полностью раскрывает её потенциал.

  • Компактность и готовность: Одно устройство выдает синхронизированные RGB-изображение и карту глубины. Без калибровки, танцами с картами и пр.

  • Точность: Современные ToF-камеры обеспечивают миллиметровую точность на рабочих дистанциях (1-6 метра), что достаточно для нашей задачи.

  • Хорошо проработанный SDK (готовые примеры работы с OpenCV под актуальные языки программирования)

Недостатки, а куда без них:

  • Зашумлённость кадра глубины (да, в камере очень много всевозможных фильтров), несмотря на неплохое для 3D разрешение (в камере установлен сенсор SONY DepthSense IMX556 CMOS 640 x 480 px) — шумы присутствовали, и необходимо их программно фильтровать.

  • Низкое разрешение 2D-камеры. Но мы нашли аналогичную камеру с разрешением в 3 МПикс. Поэтому это недостаток лишь данной модели.

  • Чёрные объекты для неё — «бесконечность». Это особенность технологии.

  • Как и любая камера, боится лишнего света, засветов, ей мешают различные иные источники ИК и видимого излучения.

Принцип работы ToF-камеры (схематично)
Принцип работы ToF-камеры (схематично)

Архитектура решения: Гибрид 2D-нейросети и 3D-алгоритмов

Пример получаемого изображения с ToF камеры
Пример получаемого изображения с ToF камеры

С камеры мы получаем два синхронизированных изображения: RGB (цвет) и Depth (глубина). Процесс обработки данных включает три основных этапа:

Этап 1. 2D-Детекция: Где находится дверь на изображении?

Здесь мы применили опыт из предыдущего проекта по чертежам, но с адаптацией.

Перед тем как применить алгоритм из библиотеки MVTec Halcon для распознавания модели двери по чертежу, мы внедрили дополнительный этап: поиск самой верхней двери с использованием нейросети. Этот этап позволил выделить контур двери, который затем сопоставляется с чертежами.

Процесс обучения нейросети включал работу с размеченными RGB-изображениями различных паллет. Одним из ключевых преимуществ использования нейросетей является их способность к обобщению, что позволило модели распознавать двери различных цветов, фактур и размеров, даже если они не были представлены в обучающей выборке. Это решение эффективно справилось с задачей учета разнообразия продукции.

Этап 2. 2D → 3D Проекция: От пикселей к миллиметрам.

На данном этапе начинается процесс превращения изображений в пространственные данные. Из данных у нас имеются:

  1. Бинарная маска двери от нейросети (где каждый пиксель — "дверь" или "фон"),

  2. Карта глубины, где значение каждого пикселя — это расстояние в мм от камеры до объекта,

  3. Точные геометрические размеры двери из чертежа, сопоставленные с изображением двери,

  4. Калибровки относительно реальных объектов. Камера установлена над палетою на высоте 6 метров, сбоку установлен непосредственно манипулятор, также имеются специальные ограничителя для установки палетты с дверьми.

Процесс: Мы "накладываем" маску на карту глубины. Теперь мы знаем глубину (Z) для каждого пикселя, принадлежащего верхней двери.

С помощью параметров калибровки камеры — её внутренних характеристик и внешнего расположения относительно манипулятора, высоты до пола и координат палеты в ограничителях — мы проецируем пиксели маски из 2D-пространства изображения в 3D-пространство мира. Для этого используем формулу, связывающую координаты пикселя (u, v), его глубину z и реальные координаты (X, Y, Z).

Этап 3. 3D-Обработка и вычисление точки захвата:

Возьмём «облако точек», которое соответствует верхней двери.

Фильтрация: Убираем выбросы (ошибки измерения глубины), используя статистические методы.

Определение плоскости: Поскольку дверь — это плоская поверхность, применяем алгоритм RANSAC для нахождения оптимальной плоскости, описывающей данное множество точек.

Вычисление центра и ориентации:

  • Центр захвата (X, Y, Z): Рассчитывается как медиана или центр масс точек, относящихся к найденной плоскости. Координату Z корректируем с учетом толщины двери и необходимой высоты подхода схвата.

  • Угол поворота (Rx): Определяется на основе ориентации плоскости и/или главных компонент (PCA) 2D-проекции точек. Это позволяет роботу корректно сориентировать схват, даже если дверь расположена не строго параллельно осям робота.

Дополнительно, для повышения безопасности, вычисляем высоту на основе масштабирования конту��а двери относительно чертежа. Если значения отличаются более чем на 50 мм от намеренного по ToF, автоматически останавливаем работу и просим оператора проверить безопасность процесса захвата (активируется полуавтоматический режим работы манипулятора на низкой скорости).

Результаты и почему это сработало

Система машинного зрения была успешно интегрирована с контроллером роботизированного манипулятора. Весь процесс от обнаружения объекта до захвата занял менее 10 секунд. Благодаря дублированию методов расчета координат и сверке с чертежами, удалось минимизировать вероятность ошибок и обеспечить участие оператора в случае возникновения разногласий между алгоритмами.

Ключевые метрики успеха:

  • Точность позиционирования: система обеспечила повторяемость определения центра двери с точностью ±2 мм по осям X, Y и ±1° по углу поворота, что полностью удовлетворяло требованиям захвата механическим схватом.

    Надежность: уровень успешных захватов превысил 99.5% в реальных производственных условиях.

    Универсальность: система без переобучения и перенастройки справляется с дверями различных моделей, зная только их чертеж из базы данных, что доказало робастность подхода.

Выводы и что дальше

Этот проект стал логичным продолжением нашей работы по цифровизации мебельного производства: от цифрового чертежа до манипуляции с физическим объектом.

Итоговый стек технологий, который сработал:

  1. Железо: ToF-камера с RGB-D выходом.

  2. Детекция: сверточная нейросеть для семантической сегментации (PyTorch/TensorFlow). Классические алгоритмы MVTec Halcon для работы с 2D/3D данными, чертежами.

  3. 3D-обработка: классические алгоритмы CV (проекция, RANSAC, PCA) на MVTec Halcon.

  4. Интеграция: прямой протокол обмена с контроллером робота.

Таким образом, комбинация современной ToF-камеры, обучаемой 2D-нейросети и проверенных 3D-алгоритмов дала нам не просто «зрение» для робота, а надежный и адаптивный инструмент, который уже сегодня повышает эффективность и безопасность на реальном производстве.

P.S. Если вы тоже сталкивались с задачами bin picking или автоматизации захвата объектов — делитесь опытом в комментариях! Интересно обсудить, какие датчики и алгоритмы оказались эффективны в ваших кейсах.

P.P.S. Фото с роботом не будет, уж простите — это под NDA, собственность и ноу-хау клиента. Но можем повторить, если потребуется)

Примерно так это выглядит)
Примерно так это выглядит)