На днях, наконец-то, появилась альфа-версия функционала нижнего зрения. Нижнее зрение - обязательный элемент любой более менее серьезной машины, т.к. позволяет существенно повысить точность установки компонентов. Компоненты, которые берутся из ленты - лежат в ней с некоторым смещением. Кроме того, в процессе взятия компонента также может добавиться смещение. Поэтому после взятия деталей они перемещаются и оказываются над камерой, которая определяет все смещения и в последствии программа дает коректировку, для их компенсации при установке.
Не долго думая я поставил вторую камеру на станок, добавил подсветку. Это позволяет видеть брюшко SMD деталек :)
Пока сделал лишь предварительные тесты с настройкой фильтров, которые позволяют определить границы компонентов.
Общий вид программы:
Слева сверху - кнопки управления аппаратом.
Справа сверху - вид с обоих камер.
Снизу множество вкладок с настройками конкретной платы, компонентов, корпусов, камер и самого аппарата.
Поиск контура детали - довольно нетривиальная задача. Если человек сразу видит деталь, то компьютеру "увидеть" ее несколько сложнее. Конечно, современные алгоритмы вытворяют на порядки более сложные анализы изображений, с распознанием объектов, но разработчик, вероятно не умеет делать столь продвинутое распознавание, поэтому был выбран более простой путь - последовательность простейших преобразований изображения, по сути как в обычном графическом редакторе.
Автор программы заложил базовый алгоритм, в основе которого лежит вычитание зеленого цвета фона. Однако у меня этот алгоритм не заработал. Во-первых для его работы нужно делать зеленый фон, что мне было несколько лень. У самого сопла захвата есть пластиковая часть зеленого цвета, но ее диаметр слишком маленький и проекции больших компонентов выходят за ее границы. Во-вторых алгоритм крайне чувствителен к освещению и всевозможным бликам - достаточно ножке детали отсветить с чуть зеленоватым оттенком - и она уже не распознается программой.
Однако, как я упоминал выше, автор старается делать все максимально гибким, не обошел этот принцип и обработку изображения. В программе можно настроить все шаги обработки (их 17 в базовом варианте), чем я и воспользовался. Я убрал выделение зеленого цвета и сделал просто порог по яркости. У всех SMD деталей снизу есть ножки-площадки для пайки, они металлические и блестят и с моей подсветкой они засвечиваются до белого цвета. Все остальное я убираю. Тесты на нескольких разных детальках показали, что алгоритм работает идеально, ни одного сбоя. Посмотрим как оно будет работать на потоке и с бОльшим количеством разных типов деталей.
Промежуточный этап определения положения корпуса - выделены контуры самых ярких областей:
Окончательный результат - прямоугольник, который рисуется вокруг полученных областей:
Получив прямоугольник, программа вычисляет угол поворота детали и смещение ее центра и вносит эти коррективы в координаты установки детали.
Journal information