В предыдущей статье я рассказал о том, как наш робот подружился с распознаванием чертежей для изготовления мебели. Однако, эта история нашла продолжение, и новая задача: автоматизировать перенос дверных полотен с паллеты для их дальнейшей обработки (ламинации). Люди устают, ошибаются, и от неаккуратных действий на полотнах могут появляться сколы – всё это убытки для производства, а значит, повод для роботизации. Мы решили эту задачу с помощью единственной камеры глубины (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, собственность и ноу-хау клиента. Но можем повторить, если потребуется)

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

Комментарии (0)