Меню

Датчики систем технического зрения

Системы технического зрения — как устроены и работают

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

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

По сравнению с многочисленными чувствительными системами, именно системы технического зрения способны поставлять до 90% визуальной информации роботу, чтобы он мог нормально функционировать. Таким образом задача реализации машинного зрения решается в несколько шагов: информация принимается, обрабатывается, затем сегментируется и описывается, после чего распознается и интерпретируется.

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

Выделенные объекты исследуются по характерным параметрам, которые описываются массивами информации, чтобы далее можно было выделить требуемые объекты по параметрам. Требуемые объекты выделяются и идентифицируются при помощи программы. Наконец, идентифицированные объекты интерпретируются и помечаются как принадлежащие к той или иной группе распознаваемых, после чего устанавливаются их зрительные образы.

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

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

Видеодатчики присоединяются к другим частям системы технического зрения при помощи особых кабелей, например оптоволоконных, через которые информация передается на высокой частоте и с минимальными потерями.

Сами видеодатчики могут иметь точечные, одномерные или двумерные чувствительные элементы. Точечные чувствительные элементы способны принимать видимое излучение с мелких частей объекта, и для получения полного растрового изображения необходимо произвести сканирование по плоскости.

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

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

Видеодатчиками могут выступать различные оптоэлектронные устройства, от твердотельных преобразователей до телевизионных камер на основе вакуумной трубки типа видикон. Основой технического зрения являются восприятие и предварительная обработка информации данными датчиками без необходимости прибегать к искусственному интеллекту.

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

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

Типичная реализация системы технического зрения выглядит так. Рабочая зона робота, где располагаются детали, освещается лампами. Над рабочей зоной располагается наблюдающая подвижная телекамера, от которой по кабелю видеоинформация подается в основной блок системы технического зрения.

Из основного блока информация (в обработанной форме) подается на управляющее устройство робота. Устройство производит сортировку деталей, их упорядоченную укладку в тару в строгом соответствии с информацией поступающей от программного обеспечения системы технического зрения.

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

Главное направления научно-технического поиска сегодня — совершенствование систем технического зрения и программно-алгоритмического обеспечения к ним, создание специальных компьютеров, а также принципиально новых систем технического зрения, ведь применение робототехники все больше востребовано и область ее промышленного внедрения непрерывно расширяется.

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

Если Вам понравилась эта статья, поделитесь ссылкой на неё в социальных сетях. Это сильно поможет развитию нашего сайта!

Источник

Датчики и системы технического зрения Omron

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

Комплекс устройств, которые входят в состав системы, включает в себя определенный набор технических средств. Основными являются камера, осуществляющая захват изображения, и блок обработки изображения или контроллер. Дополнительными устройствами, но не менее важными, являются оптика, определяющая границы обзора камеры, подсветка, освещающая объект наблюдения, и дисплей, необходимый для отображения информации в реальном времени и для настройки системы. Эти компоненты могут совмещаться. Например, камера может иметь встроенный объектив с автофокусировкой и интеллектуальную подсветку. А контроллер или блок обработки может иметь встроенный дисплей. Таким образом, обеспечивается компактность системы.

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

Компания Omron выпускает целый ряд качественных устройств для технического зрения различной сложности, от простых датчиков до сложных систем. Omron предлагает свои решения исходя из требований низкой стоимости, простоты установки и ввода в эксплуатацию. На рисунке 1 представлен спектр основных изделий технического зрения в порядке возрастания функционала от простоты в использовании до максимальной гибкости. Рассмотрим каждую серию подробнее.

Рис. 1. Линейка поставок устройств технического зрения Omron

Серия ZFV

Самыми младшими в линейке изделий для технического зрения Omron являются датчики серии ZFV. Это новые модульные системы обработки изображения. Сами датчики состоят из двух отдельных блоков – камеры со встроенным источником света и модуля обработки данных. Причем существуют две разновидности – с распознаванием цвета и без. В функциональном отношении их возможности одинаковы, однако использование цветовой информации в качестве дополнительного критерия («третьего измерения») позволяет значительно повысить стабильность и надежность системы контроля (рис. 2). В зависимости от модели контроллера на выбор предоставляется до восьми различных инструментов контроля и большое количество разнообразных головок датчиков с дальностью действия до 150 мм.

Рис. 2. Различие в обработке изображения датчика с «серой шкалой» и цветного датчика.
Контрастность лучше
.

Блок обработки данных имеет встроенный ЖК-дисплей. Во время работы на дисплее отображаются изображения и результаты измерения, благодаря чему обеспечивается оперативный визуальный контроль процесса измерения. Нет необходимости подключать внешнее устройство для настройки и наблюдения за процессом: такое устройство встроено в датчик и предоставляет всю необходимую информацию (рис. 3).

Рис. 3. Удобный интерфейс и простая настройка датчика ZVF

Переход к настройке параметров и управлению излучением света производится нажатием одной кнопки. Интеллектуальный пользовательский интерфейс позволяет выполнять настройку с помощью нескольких клавиш и встроенного ЖК-дисплея.

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

Рис. 4. Пример построения модульной системы на базе ZFV

Источник

Осваиваем техническое зрение на примере Bioloid STEM и HaViMo2.0

Добрый день, уважаемые читатели Хабра! Данной статьей я открываю серию публикаций по робототехнике. Основными направлениями тематики статей будут являться описание практических реализаций различных задач – от простейшего программирования роботов, до реализации навигации и автономного поведения робота в различных условиях. Основная цель данных статей – показать и научить как просто решить ту или иную прикладную задачу, либо как быстро адаптировать свой робототехнический набор под конкретные условия. Я постараюсь использовать доступные и распространенные на рынке наборы, чтобы многие из вас смогли использовать мои решения и доработать их для своих целей. Надеемся, что данные статьи будут полезны как студентам различных учебных заведений, так и преподавателям робототехники.

Читайте также:  Где находятся датчики курсовой устойчивости

Вместо предисловия

Работа современных мобильных роботов зачастую сопряжена с постоянным и активным перемещением в динамическом (подверженном изменениям) окружении. В настоящее время в связи с интенсивной роботизацией обслуживающей сферы, к примеру, внедрения робокаров на производстве, сервисных роботов для контакта с людьми, возникла серьезная необходимость создания таких роботов, которые могли бы не только уметь двигаться по заранее определенным маршрутам и обнаруживать препятствия, но и классифицировать их, чтобы при необходимости гибко подстроиться под изменяющееся окружение. Данную задачу можно и нужно решать с использованием технического зрения. В данной работе я предлагаю разобраться с основными моментами при реализации технического зрения на примере использования машинки из робототехнического набора Bioloid STEM и камеры HaViMo2.0.

В настоящее время широко распространён такой вид движения роботов, как езда по линии. Это широко используется как на заводах в AGV (Automatic Guided Vehicle) — роботы перемещаются по заранее нарисованным линиям, так и при организации робототехнических соревнований – зачастую можно встретить задания, так или иначе связанные с ориентированием по линиям. Основными датчиками, с помощью которых робот получает данные, являются инфракрасные датчики, которые определяют разницу в контрасте линии и окружающего фона, и магнитные датчики, которые используются в случае применения магнитных линий. Приведенные выше примеры решений требуют как тщательного техобслуживания в процессе эксплуатации, так и определенной чистоты среды: например, на грязном складе линии могут запачкаться и перестать распознаваться ИК-датчиками, а, например, в металлообработке магнитные линии могут забиваться железной стружкой. Помимо всего этого предполагается, что робот перемещается по заранее определенным маршрутам, на которых не должно быть препятствий ни в виде людей, которых он может покалечить, ни в виде каких-либо других объектов. Однако, как правило, всегда на производстве существует множество перемещающихся объектов, которые потенциально могут стать препятствием для робота, поэтому робот всегда должен не только получать информацию о своем маршруте и перемещающихся объектах, но также должен анализировать окружение, чтобы в случае необходимости иметь возможность грамотно отреагировать на возникшую ситуацию.

Рисунок 1. Складские роботы, двигающиеся по линиям

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

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

Получаемые данные могут быть использованы для идентификации объектов, измерения их каких-либо характеристик, а также управления ими.

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

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

Как я уже упомянул ранее, наше решение будет основываться на популярном робототехническом конструкторе, производимом корейской фирмой Robotis, а именно конструкторе Bioloid STEM.

Рисунок 3. Конструктор Bioloid STEM

Данный конструктор содержит компоненты, позволяющие собрать одну из 7 базовых моделей роботов. Я позволю себе не останавливаться на подробном описании данного набора, поскольку в сети достаточно его обзоров разной степени полноты, например, Обзор конструктора Bioloid STEM. В качестве рабочей модели будем использовать стандартную конфигурацию набора – машинку Avoider.

Рисунок 4. Avoider — одна из 7ми стандартных конфигураций набора Bioloid STEM

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

Рисунок 5. Модуль обработки изображений HaViMo2.0

• Встроенная цветная CMOS камера:
o Разрешение: 160 * 120 пикселей
o Глубина цвета: 12 бит YCrCb
o Частота кадров: 19 кадров в секунду
• Сохранение параметров обработки изображений в EEPROM, нет необходимости каждый раз настраивать камеру после включения питания.
• Автоматическая / ручная экспозиция, усиление и баланс белого
• Регулируемые Цветовой тон / Насыщенность
• Обработка изображения на основе цвета
• Встроенная справочная таблица цветов
• Сохранение параметров калибровки во внутреннюю память, нет необходимости повторной калибровки после включения питания
• Способен различать до 256 объектов
• В состав сходят инструменты 3D просмотра и редактирования
• Поддерживает возможность отображения результатов калибровки в режиме реального времени
• Поддерживает реализацию алгоритма Region — Growing в режиме реального времени
• Обнаруживает до 15 сопредельных областей в кадре
• Определяет цвет, количество пикселей и границы областей
• Определяет цвет и количества пикселей для каждой ячейки 5×5
• Поддерживает вывод необработанного изображения в режиме калибровки
• Частота кадров при чересстрочном выводе — 19 FPS
• Частота полного обновления кадра — 0,5 FPS
• Поддерживаемое оборудование:
 CM5
 CM510
 USB2 Dynamixel

Как вы могли заметить, официальной поддержки входящего в состав набора Bioloid STEM контроллера CM-530 у HaViMo2.0 нет. Тем не менее, существует возможность связать CM-530 и HaViMo2.0, но обо всем по порядку.
Перво-наперво нам необходимо каким-то образом установить модуль обработки изображений на машинку. И первое, что приходит в голову – закрепить камеру так, как показано на моделях ниже. Кстати, данные модели были получены с помощью среды моделирования от Bioloid – R+Design. Данная среда «заточена» специально для моделирования роботов из компонентов, предлагаемых Bioloid. Что есть и хорошо, и плохо одновременно. Поскольку модуля изображений в коллекции частей R+Design нет, то при моделировании я его заменил похожей по размерам плашечкой. И обвел в рамочку:

Рисунок 6. Расположение модуля обработки изображений HaViMo2.0 на Avoider

Что ж, выглядеть должно не плохо, но необходимо учесть еще один важный момент – углы обзора камеры модуля, т.к. от этого будет зависеть изображение, которое модуль будет обрабатывать. Поскольку производитель HaViMo2.0 не указал в спецификации углы обзора камеры, то мне пришлось определить их самому. Я не претендую на высокую точность определения, но результаты у меня получились следующие:

углы обзора HaViMo2.0:
по горизонтали — 44° (нет, до 45° округлять не буду, так как до 44° я уже и так округлил)
по вертикали — 30°

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

На какой угол от вертикали необходимо отклонить модуль при показанном выше расположении, чтобы минимизировать область видимости, но при этом исключить попадание в область видимости камеры элементов робота?

Я решил именно минимизировать область видимости по следующим причинам:
— во-первых, на практике проверить, что из этого получится
— во-вторых, облегчить себе последующую калибровку модуля (чем меньше различных объектов попадает в область видимости, тем проще откалибровать модуль)

Изобразим нашу задачу на плоскости (линейные размеры указаны в мм, угловые – в град.):

Рисунок 7. Определение угла отклонения модуля от вертикали

Мы знаем точку положения камеры (С), мы знаем размер передней части робота (А-В), и так же знаем угол обзора по вертикали (выделено красными линиями). Поскольку здесь нет ничего сложнее геометрии 7го класса, то я позволю себе не приводить ход расчета (читай – выкладки) и сказать сразу ответ – между плоскостью камеры и вертикалью должен быть угол в 52° (спасибо САПР за точность). При расчете вручную я получил значение в 50°, так что будем считать результаты приемлемыми.
Помимо угла, мы так же получили, что видимая область камеры по горизонтали составляет порядка 85 мм.

Читайте также:  Замена датчиков в краснодаре

Следующим шагом оценим, какого размера должны быть объекты, чтобы они попадали в зону видимости камеры. Сделаем это применительно к ширине линии, которую робот должен будет отслеживать и двигаться по ней. Изобразим аналогичный предыдущему чертеж для горизонтальной проекции:

Рисунок 8. Видимая область. Горизонтальная проекция.

На этом чертеже мы опять же знаем точку расположения камеры (С), размер передней части робота (СО), угол обзора по горизонтали, и уже знаем длину видимой области, которую получили на предыдущем этапе. Здесь нас в первую очередь интересует длина отрезка А-В, который показывает предельную величину ширины объекта, которую камера может зафиксировать. В результате мы имеем – если робот будет ехать по линии, то при таком расположении камеры ширина линии не должна превышать 31 мм. Если линия будет шире, то мы не сможем точно отслеживать ее поведение.

Воспользовавшись транспортиром и подручными средствами, я попытался закрепить модуль камеры так, как было задумано и вот что из этого получилось:

Рисунок 9. Суровая реальность — живое фото получившейся конструкции

Пришло время приступить непосредственно к работе с модулем HaViMo2.0. Лично от себя хочу сказать – данный модуль очень капризный. Поэтому если у вас что-то не заработало, то повторите попытку еще раз. А лучше два.
Очень важно! Подключение камеры необходимо выполнить к порту Dynamixel port находящемся на торце контроллера между разъемом для подключения батареи и Communication Jack.
Для работы с камерой и последующего программирования робота нам понадобится следующий набор программного обеспечения:
— RoboPlus версии 1.1.3.0 (скачать с сайта производителя)
— HaViMoGUI версии 1.5 (скачать)
— калибровочная прошивка для контроллера CM-530 (скачать)

Начнем с подготовки контроллера. Поскольку идущий в комплекте с робототехническим набором Bioloid STEM контроллер CM-530 официально не поддерживается модулем обработки изображения, то нам необходимо использовать кастомную прошивку для контроллера. Так что перепрошиваем контроллер. Подключаем контроллер к компьютеру, включаем его тумблером и выполним следующие действия:

1. Откроем RoboPlus
2. Во вкладке Expert запустим RoboPlus Terminal
3. Увидим сообщение об ошибке, не испугаемся и нажмем ОК. Обратим внимание, что в левом нижнем углу написано No recent file, а в правом нижнем – Disconnect:

Рисунок 10. Подготовка контроллера. Шаги 1-3

4. Выберем в меню Setup пункт Connect. Появится окно с выбором порта и его настройкой. Выберете COM порт, к которому подключен контроллер. Укажите скорость – 57600. Нажмите Connect. Если соединение установлено успешно – в правом нижнем углу надпись Disconnect сменится на подобную: COM8-57600.
5. Не отключая контроллер от компьютера, выключим его тумблером POWER. Затем убедимся, что у нас установлена английская раскладка клавиатуры, зажмем одновременно клавиши Shift и 3 (тройка со значком #) и, не отпуская кнопки, включим контроллер тумблером. Если все сделано правильно, в окне терминала появится системная информация. Нажмем на Enter один раз.

Рисунок 11. Подготовка контроллера. Шаги 4-5

6. Убедимся, что у нас нигде не болтаются провода и кабель USB надежно подключен к компьютеру и контроллеру. Далее запрещено отключать контроллер от ПК и снимать с него питание. Введем в терминал команду l (английская маленькая L). Нажмем Enter.
7. Выберем в меню Files пункт Transmit file. Выберем скачанную кастомную прошивку CM-530.hex и нажмем кнопку Открыть.

Рисунок 12. Подготовка контроллера. Шаги 6-7

8. После завершения загрузки введем команду GO и нажмем Enter. Терминал можно закрыть, контроллер отключить от компьютера.

Рисунок 13. Подготовка контроллера. Шаг 8

Наш контроллер CM-530 готов к работе с модулем HaViMo2.0. Внешне он будет выглядеть не очень хорошо – будет гореть только один красный светодиод, и никаких других признаков жизни он подавать не будет. Не пугайтесь. Это нормально. Теперь приступим к калибровке нашего модуля обработки изображения. Открываем HaViMoGUI, причем запуск осуществляем от имени администратора. Увидим следующее окно:

Рисунок 14. Лицевая панель HaViMoGUI

В пункте Connection Type выберем контроллер CM-510, в Connection Port – номер COM порта к которому подключен контроллер. Нажмем Connect. В случае успешного соединения увидим в левом нижнем углу окна надпись Port Opened. Теперь подключимся непосредственно к камере. Для этого нажмем Check Camera. Если подключение к камере выполнилось успешно, то в левом нижнем углу увидим надпись Check Camera: HaViMo2 Found. Если такой надписи не появилось, проверьте правильность подключения камеры к контроллеру и повторите действия, начиная с запуска HaViMoGUI.

Рисунок 15. Подключение к камере выполнено успешно

Подключившись к камере, следует зайти во вкладку Camera Settings и активировать Auto Update Settings, которые позволят камере автоматически выбирать яркость/контрастность (и другие настройки) изображения, в зависимости от освещенности объекта.

Рисунок 16. Установка авто-настроек

Затем возвращаемся во вкладку Color Look Up Table и нажмем Sample Image для фиксации изображения с камеры. В результате получим изображение нашего объекта вверху окна в разделе Original Image. Во вкладке Color Look Up Table (справа) появились распознанные камерой оттенки в виде 3D-градиента. Камера распознает объект по его цвету. Одновременно можно запомнить 7 различных объектов (+фон). Для того, чтобы запомнить цвет, во вкладке Color Look Up Table выберем Color 1.

Рисунок 17. Фиксация изображения с камеры

Оттенок цвета можно выбрать при помощи 3D-градиента (нажать на соответствующий квадратик) или нажав в определенную точку Original Image. В нашем случае мы выбираем белую линию, по которой наш робот будет ехать. Нажав на Region Growing, мы увидим область распознавания, которую распознал модуль. Простейшие настройки произведены. Для того, чтобы их запомнить, нажмем кнопку Flash LUT. Если в строке статуса написано LUT Written Successfully, значит сохранение настроек успешно. Также можно сохранить настройки в отдельный файл, нажав на кнопку Save LUT to File, чтобы затем прочитать их из файла без выбора нужных цветов сначала. Кнопка Read LUT позволит прочитать текущие настройки камеры.

Рисунок 18. Сохранение настроек модуля

Настройка модуля распознавания изображений решена. Можно вернуть контроллер в мир живых и рабочих контроллеров. Для этого запускаем RoboPlus, открываем RoboPlus Manager и в верхней строке выбираем пиктограмку Controller Firmware Manager. Нажимаем Next.

Рисунок 19. Восстановление прошивки контроллера

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

Рисунок 20. Контроллер успешно обнаружен

Дожидаемся окончания установки прошивки, нажимаем Next, затем Finish. После чего с вероятностью 99% видим ошибку, на которую не обращаем внимание – просто закрываем окно. Эта ошибка возникает из-за некорректной идентификации модуля распознавания изображения, подключенного к контроллеру. Контроллер снова в мире живых – можно начинать его программировать для управления нашим роботом.

Разрабатывать прошивку будем в стандартной среде от Robotis — RoboPlus Task. Программирование в RoboPlus Task осуществляется с помощью специализированного языка, подобного языку программирования С. Для удобства пользователя в RoboPlus в виде графических блоков реализованы базовые возможности набора, такие так: таймеры, блоки обработки данных с датчиков, блоки передачи данных между устройствами и т.п. Я не буду подробно останавливаться на описании процесса программирования, так как среда достаточно интуитивно понятна и не вызывает сложностей. Однако, если остались какие-то вопросы, рекомендую поглядеть примеры разработки в разделе «Статьи» и «Уроки» на нашем сайте. Но прежде чем мы приступим к программированию, разберемся как же осуществляется обмен данными между контроллером и модулем HaViMo2.0.

Связь между модулем и контроллером реализована по тому же самому протоколу, по которому реализован обмен данными между контроллером и сервоприводами Dynamixel AX-12. Сам модуль построен вокруг DSP (Digital signal processor), настройка которого осуществляется через доступ к его регистрам, каждый из которых может быть считан или настроен с использованием калибровочного интерфейса. Подробное описание настройки DSP приводится в мануале по модулю HaViMo2.0. Там же приведен полный перечень регистров. Нам же для работы с модулем обработки изображений достаточно понять, как осуществляется вывод данных с модуля.

Следующий пример показывает вывод обработанного модулем изображения. Могут быть считаны до 15 областей с адресом 0x10 до 0xFF с использованием команды READ DATA (0x02). Каждая область состоит из 16 байт, которые состоят из следующих частей:
— Region Index – Индекс области: содержит значение 0, если область не выделена
— Region COLOR – Цвет области
— Number of Pixels — Количество пикселей: число выявленных пикселей внутри области.
— Sum of X Coordinates — Сумма Координаты X: Результат сложения Х координаты всех обнаруженных точек. Может быть поделено на количество пикселей, чтобы вычислить среднее X.
— Sum of Y Coordinates — Сумма координат Y: результат сложения Y координаты всех обнаруженных точек. Может быть поделено на количество пикселей, чтобы вычислить среднее Y.
— Max X: Ограничительная боковая линия справа.
— Min X: Ограничительная боковая линия справа.
— Max Y: Ограничительная линия снизу.
— Min Y: Ограничительная линия сверху.

Читайте также:  Датчик холостого хода карбюратор гольф 2

Рисунок 21. Пример вывода изображения с модуля HaViMo2.0

Этого примера достаточно для того, чтобы приступить к программированию робота. Напишем в среде RoboPlus Task функцию, которая будет отвечать за определение границ распознанной области. Поскольку данная среда не позволяет вывести код в удобоваримом текстовом виде, то придется размещать скриншоты. Назовем нашу функцию – Get_Bounding_Box. Алгоритм работы функции следующий:
— последовательно опрашиваем области (Index) с 1 по 15 в цикле, на каждой итерации которого меняем значение адреса (Addr) в соответствии с правилом указанном выше.
— в случае, если мы находим распознанную область (ее индекс не равен 0), то далее мы проверяем ее на соответствие заданному цвету (Color)
— в случае, если ее цвет совпадает с заданным, мы фиксируем размер области (Size) и значения ограничительных линий нашей области (Maxx, Minx, Maxy, Miny)

Рисунок 22. Код функции определения границ распознанной области

Получив значения размера области и координаты ограничительных линий, можно переходить к программированию движения робота. Алгоритм движения робота достаточно прост – зная координаты ограничительных линий по X, мы находим среднее Х. При движении, если будет зафиксировано смещение среднего Х, робот будет доворачивать в нужную сторону, тем самым самопозиционируя себя на линии, по которой едет. Графически алгоритм определения движения робота представлен на следующем рисунке:

Рисунок 23. Алгоритм определения движения робота

И его текстово-блочная реализация:

Рисунок 24. Код основной функции программы

Итак, для этого при включении контроллера мы первым делом инициализируем наши переменные – скорости движения, время движения вперед, время, в течение которого робот будет выполнять поворот, и время на паузу. Далее в бесконечном цикле мы инициализируем подключение к камере (указываем номер порта, к которому она подключена – CamID) и цвет области, который мы будем детектировать. Как мы помним, при калибровке мы выбирали Color 1, поэтому теперь мы его и указываем, как интересующий нас. После этого мы обращаемся к камере и делаем паузу в 150мс, поскольку после первого обращения камера не отвечает в течении не менее 128 мс. Я поместил функцию инициализации подключения камеры в основной цикл программы, так как камера очень капризная и ей может захотеться «отвалиться». Инициализируя ее на каждой итерации цикла, мы ее как бы «пингуем». Затем мы вызываем описанную выше функцию для определения координат ограничительных линий распознанной области и на основании полученных значений находим среднее (Схх). И затем мы сравниваем полученное значение на соответствие условиям – если полученное значение находится в определенном диапазоне, значит робот едет прямо, если сместилось вправо – робот доворачивает вправо, если влево – соответственно влево. Сами функции, отвечающие за движение представлены ниже:

Рисунок 25. Примеры функций, отвечающих за движение вперед и за повороты влево — вправо

Как видно из их реализации логика работы функций следующая – сначала активируются сервоприводы, которые работают в течение определенного времени, после чего останавливаются. За контроль времени работы и остановку отвечают 2 другие функции:

Рисунок 26. Функции таймера и остановки сервоприводов

Все. На этом разработка управляющей роботом программы завершена. Можно загружать ее в контроллер и смотреть, что получилось. У меня получилось следующее:

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

Рисунок 27. Что реально видит камера

Обработав это изображение, исходя из заданных нами настроек, происходит выделение интересующих оттенков выбранного нами цвета:

Рисунок 28. Выделение оттенков цвета на изображении

И последним, самым важным этапом, является выделение на этом изображении прямоугольника, параметры которого мы и используем при программировании:

Рисунок 29. Определение распознанной области в виде прямоугольника.

Применительно к нашей задаче этот прямоугольник обозначает следующее:

Рисунок 30. Трактовка области распознавания, применительно к нашей задаче

Что ж, это все замечательно, однако камера не позволяет нам передавать видео поток в режиме реального времени, чтобы можно было зрительно пронаблюдать, что именно видит камера, и как она это распознает. Но мне очень захотелось отследить хотя бы схематически то, что распознает камера, и то, как ведет себя робот. Для этого я воспользовался средой LabView, с помощью которой организовал сбор данных с контроллера CM-530 и их обработку (Подробнее о том как собирать данные с контроллера CM-530 читайте в моей статье – «LabView в робототехнике – создание SCADA системы для управления роботом»). Не то, чтобы утилита получилась красивая, но, на мой взгляд, довольно полезная для анализа движения робота. Поскольку у меня не было под рукой никакого беспроводного адаптера – ни ZigBee, ни Bluetooth, пришлось данные гнать про USB проводу, что несколько стесняло мои действия. Интерфейс выглядит следующим образом:

Рисунок 31. Интерфейс приложения для анализа движения робота

И разметка области распознавания, с пояснениями, применительно к нашей задаче:

Рисунок 32. Разметка окна распознавания, применительно к нашей задаче

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

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

— «лучше меньше, но больше» — чем меньше скорость передвижения и чем меньшее расстояние робот проезжает за единицу времени, тем лучше, т.к. тем меньше вероятности, что робот пропустит («не увидит») поворот, или сильно уйдет с маршрута;
— вытекает из первой рекомендации – чем острее угол поворота, тем больше вероятности того, что робот его пропустит;
— наш главный враг – покрытие пола. Тут уж сами думайте, что делать – лично я, для езды по линолеуму, на нижнюю часть робота прикрепил лист бумаги, т.к. сопротивление и скрип были ужасные;
— закон Мерфи – если робот едет по светлой линии на темном фоне и в округе есть объект, который можно условно назвать светлым – знайте: для робота он окажется самым светлым, и он с радостью побежит к нему;
— следствие из закона Мерфи – как бы вы не уменьшали область обзора камеры, робот всегда найдет такой светлый объект;
— робот может испугаться собственной тени, поэтому всегда продумывайте, как будет падать свет, и обучайте модуль распознавания на работу при разном освещении;
— будьте готовы к тому, что батарейки разрядятся в самый неподходящий момент, а внешне это будет выглядеть так, как будто у вас ошибки в управляющей программе, прошивке контроллера, самом контроллере и ДНК. Так что всегда контролируйте заряд батарей – для такого робота нормальным напряжением является 8-9В.

Ну и в заключении хотелось бы сказать, что совершенству нет предела – так что все в ваших руках. Вперед за приключениями в области робототехники!

Заключение
Сегодня мы с Вами разобрались как реализовать техническое зрение на широко распространенных наборах Bioloid STEM с использованием модуля распознавания изображений – HaViMo2.0. Это был всего лишь первый шаг в направлении технического зрения в рамках наших публикаций. В следующей статье, посвященной техническому зрению, мы рассмотрим усложненную задачу – движение вдоль линии, имеющей разный тип разметки, с учетом распознавания находящихся вдоль нее некоторых знаков – аналогия движению автомобиля по трассе. Надеюсь, данная статья Вам оказалась полезной и интересной. До новых встреч!

Источник

Adblock
detector