Как мы учили робота распознавать чертежи и изготавливать мебель

в 13:43, , рубрики: автоматизация промышленности, Компьютерное зрение, распознавание образов, робототехника

Хочу поделиться своим опытом разработки программного обеспечения для робота-манипулятора, которого мы научили распознавать разные объекты на основе их CAD-моделей. В этой статье я подробно рассмотрю процесс создания такого ПО на примере недавнего проекта, связанного с производством мебели. С помощью внедрения технологии распознавания геометрии панелей ДСП мы обучили промышленного робота-манипулятора подавать панели требуемым торцом на станок для дальнейшей обработки. Это значительно повысило производительность линии и облегчило жизнь работникам производства.

В самом начале важно сказать, почему вообще появилась такая задача. На это есть три причины. Первая — цена, а именно цена ошибки, которую регулярно совершали работники производства, выбрав не ту деталь, не ту программу, не ту кромку и т. д. Вторая причина — расходы на зарплату и спецодежду работникам, которые работают в тяжелых, пыльных условиях и занимаются монотонным трудом. Ну и третья, самая очевидная — в отличие от человека, робот работает без перекуров и обедов, что позволяет делать всё быстрее. 

Привер работы станка с ручной подачей:

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

Дальше обо всём по порядку. Итак, на входе у нас была палета, размещенная на подъемном столе, с заготовками ДСП разных размеров и форм (в основном, прямоугольниками), сложенных практически случайным образом. Из данных — большая база чертежей будущих деталей в формате dxf, пополняемая по ходу создания новых моделей мебели. От нашего ПО требовалось распознать детали, определить их положение и передать роботу координаты оптимальной для захвата панели, а станку — тип заготовки. Исходя из полученных данных, робот-манипулятор присосками захватывал деталь и перемещал её в станок, а станок обрабатывал её в соответствии с программой (обклеивал торцы, сверлил отверстия в нужных местах и т. д.). Отдельная сложность заключалась в том, что было всего четыре присоски, и надо было передать координату захвата так, чтобы присоска не попала на отверстие, ламель и прочие особенности рельефа заготовки.

Пример используемого вакуумного захвата (присосок)

Пример используемого вакуумного захвата (присосок)

Проблемы, которые мы решали:

1. На вход в станок нужно было подавать детали в определенной последовательности.

Если в палете есть детали разной формы или размера (например, для изготовления кухни), то нужно подавать детали в требуемой последовательности, так как в конце станка стоит робот и складывает из них новую палету. Для решения этой задачи мы прибегли к созданию «задания», в котором оператор линии или старший смены подгружает нужные DXF (AutoCAD) чертежи в ПО с сервера производства и выстраивает нужную последовательность деталей. Благодаря заданию ПО:

  • знает какую деталь искать

  • определяет где у неё верх/низ, рабочие отверстия, ламели и пр.

  • выстраивает роботу последовательность команд для захвата и поворота детали

2. Все ДСП панели в палете имели одинаковый цвет и легкую запыленность.

Гамма цветов таких палет оказалась весьма обширной, от белого до глянцевого черного. Это внесло определенную лепту в используемое оборудования, ведь по условиям задачи нужно было распознать каждую деталь и замерить её, а потом, сравнив с чертежами, безошибочно определить её тип. До наклейки кромки на панели ДСП их края практически не различимы! Ну и бонусом — в цеху был мерцающий свет от люминесцентных ламп. Мы решили избежать данных проблем аппаратно — с помощью ИК диапазона. 

В ИК диапазоне большинство деталей разных цветов имели схожую яркость на снимке, поэтому мы добавили динамическую подсветку по углам — так мы смогли увидеть даже самые незаметные грани на ДСП панелях.

Как видит заготовки камера смартфона

Как видит заготовки камера смартфона
Как видит камера технического зрения те-же самые заготовки в ИК диапазоне с боковой посдветкой и микротенями

Как видит камера технического зрения те-же самые заготовки в ИК диапазоне с боковой посдветкой и микротенями

Что использовалось для создания алгоритма распознавания ДСП-панелей

  1. Аппаратное решение
    - Камера. Задействовали монохромную 12МП камеру, её разрешения было достаточно для определения размеров с точностью 0,5 мм на палете 2,5х2 м.
    - Подсветка. Чтобы никого не слепить, а также чтобы нивелировать цвет ДСП панелей, использовали 4-х точечную, управляемую ИК-подсветку. Она не видна глазу, зато камера её отлично видит. С ней даже черная ДСП панель благодаря ИК-диапазону хорошо различается в градациях серого.
    - Пневмофорсунки для очистки от пыли (используются, если ПО не может распознать детали).
    - Промышленный ПК с нужными интерфейсами и, естественно, шкаф (ну куда же без него 🙂)

  2. Программное решение
    ПО для данной задачи я написал на базе библиотеки Halcon на Python с GUI PyQT под АльтЛинукс (реестровое импортозамещение, но таковы нынче правила игры и требования заказчиков). База данных для изделий размещена на сервере производства.

    Последовательность работы алгоритма распознавания

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

    1. Калибровка камеры
      Для точного замера геометрии детали необходимо было откалибровать камеру. Причем не только соотношение пиксель/мм, но и искажения объектива. В системе использовался широкоугольный, короткофокусный объектив, поэтому он вносил серьезные искажения в снимки с камеры. Для калибровки использовался классический метод обработки дисторсии со стороны ПО. Требуемые коэффициенты получили благодаря калибровочной паллете, размещаемой в нескольких точках кадра с различным углом наклона.

    2. Съемка 5 кадров с различными режимами подсветки
      ИК подсветка рабочего поля представляла собой 4 прожектора, установленных в 4-х углах. Включением каждого прожектора управляло ПО, тем самым достигалась определенная хитрость в усилении видимости стыков ДСП листов за счёт микротеней, возникаемых на стыках заготовок. Камера снимала по одному кадру с каждым прожектором и один кадр со всеми включенными.

      Расположение камеры и системы подсветки над палетой (вид сверху)

      Расположение камеры и системы подсветки над палетой (вид сверху)
  3. Обработка снимков, выделение границ детали
    Полученные 5 снимков обрабатывались по известному методу HDR — из каждого снимка бралась контрастная информация и отбрасывалась неинформативная часть снимка. Полученный снимок обрабатывался алгоритмом коррекции дисторсии и отдавался далее для распознавание моделей.

  4. Распознавание и сопоставление с dxf
    Сначала нам казалось это сложной задачей, но оказалось, что в используемой нами библиотеке она уже присутствует. Основные требования к DXF — отсутствие ГОСТовских рамок и размеров. Хотя над этим мы работаем и со временем научим систему избавляться от вторичной информации самостоятельно. Полученный контрастный и «выпрямленный» снимок обрабатывался алгоритмом read_object_model_3d_dxf для определения геометрических краев каждой детали, а также внутренних отверстий. Библиотека техзрения уже умела работать с dxf файлами, поэтому найти и сопоставить чертеж и границы детали проблемы не возникло.

  5. Передача координат и типа деталей
    Распознанные алгоритмом детали сортировались по коэффициенту схожести. Если они проходили порог в 95%, то верхние координаты 2-3 деталей и их тип отравлялся далее по TCP на станок и манипулятор. После загрузки данных деталей процесс съемки повторялся. Однако, если коэффициенты схожести были менее заданного порога, использовался пневмо-очиститель, который сдувал и пыль и даже слегка раздвигал небольшие детали на палете. Благодаря пневмо-очистителю ПО самостоятельно, без участия оператора, могло повторить распознавание с другими физическими данными. Это позволило значительно снизить простой линии в ожидании помощи от оператора

    По итогам разработки алгоритма получился вот такой результат поиска детали по конкретному чертежу (на фото выведена пригодная для захвата область детали):

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

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

    Полученный алгоритм переписали на Python, добавили GUI для пользователя, тем самым родился прототип ПО, который мы тестировали в гараже, об этом расскажу далее.

    Тестирование прототипа ПО 
    Естественно, любой стартап, начатый в гараже, уже имеет +10 к успеху, вот пример двух парней:

    Как мы учили робота распознавать чертежи и изготавливать мебель - 6

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

    1. Белая матовая пленка

    2. Коричневое ламинирование с явно выраженной текстурой дерева

    3. Чёрные панели с глянцевой поверхностью под рояльный лак

    Как проходило тестирование в гараже

    Как проходило тестирование в гараже

    Панели ДСП расположили на палете в хаотичном порядке примерно так же, как их сложили бы на производстве, а рядом разместили вторую палету, на которую надо было эти заготовки положить нужной стороной (это действие имитирует загрузку деталей роботом в станок). Камеру и свет подвесили над заготовками, используя портальную конструкцию из алюминиевого профиля. Пневмосистему на этапах тестирования решили не устанавливать, так как раскидывать пыль в гараже желающих не нашлось. Оставили её проверку до промышленного тестирования.

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

    Калибровку камеры делали с помощью изготовленной в типографии калибровочной палеты размером 500х500 мм

    Пример калибровочной палеты

    Пример калибровочной палеты

Самое первое тестирование дало нам понять, что постоянная подсветка не работает и требуется импульсная с применением алгоритма HDR. Потребовалось повторное тестирование с новой подсветкой. В результате мы довели ПО до рабочего релиза.

После гаража было тестирование и внедрение на производственной площадке мебельной фабрики, но, к большому сожалению, она не разрешила нам публиковать снимки и разглашать информацию о ней.

В заключение хотелось бы сказать, что это был мой первый опыт разработки, где техническое зрение было по-настоящему глазами робота. Данный проект принес много положительных эмоций, особенно на этапе внедрения. Видеть, как роботы выполняют тяжелый, монотонный труд — это, на мой взгляд, правильно и полезно. Желаю и вам получать драйв от своей работы! 

Спасибо за прочтение, буду рад вашим комментариям и открыт к сотрудничеству. 

Автор: avsolovyev

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js