Встраиваемые системы машинного зрения могут дать больше, чем просто визуализацию
Машинное зрение давно используется в системах автоматизации производства для улучшения качества продукции и повышения производительности, заменяя визуальный контроль, традиционно выполняемый человеком. Визуальные данные, полученные при решении задач захвата и перемещения, отслеживания объекта, метрологии, обнаружения дефектов и т. п., дают возможность улучшить показатели всей системы, предоставляя простую информацию «тест пройден/тест не пройден» или замыкая контуры управления. Использование машинного зрения не ограничивается автоматизацией производства, мы все являемся свидетелями массового внедрения камер в повседневную жизнь: в компьютеры, мобильные устройства и даже автомобили. Автомобильные видеокамеры заднего вида появились всего несколько лет назад, а теперь машины поставляются с многочисленными камерами, предоставляющими водителю обзор в 360°. Но, возможно, самый большой технологический прогресс в области машинного зрения связан с вычислительными мощностями. За счет того что постоянно растет производительность процессоров и развиваются технологии параллельной обработки (с использованием CPU, GPU и FPGA), разработчики систем машинного зрения могут использовать сложные алгоритмы для визуализации данных и создавать более интеллектуальные системы.
Совершенствование технологий открывает новые возможности: например, рассмотрим вариант дополнения промышленного станка системами машинного зрения. Эти системы, показанные на рис. 1, обычно разрабатываются как сеть интеллектуальных подсистем, образующих вместе распределенную систему, которую можно спроектировать на основе модульного принципа. Однако по мере увеличения производительности системы использование подхода, основанного на аппаратных средствах, становится затруднительным, поскольку такие системы часто объединены сочетанием критичных и не критичных ко времени протоколов обмена данными. Применение различных протоколов приводит к появлению узких мест, обусловленных задержками, потерей детерминизма и снижением пропускной способности. Например, если разработчик пытается создать приложение с подобной распределенной архитектурой и тесной интеграцией системы машинного зрения и системы управления движением, необходимой для визуального сервоуправления, он может столкнуться с проблемами недостаточных возможностей обработки данных и производительности. Более того, поскольку у каждой подсистемы есть собственный контроллер, в действительности наблюдается даже снижение эффективности обработки, т. к. ни одна подсистема не нуждается в полной вычислительной мощности всей системы. Наконец, из-за распределенной аппаратно-ориентированной архитектуры разработчикам приходится использовать несовместимые средства разработки для каждой подсистемы — специализированное программное обеспечение (ПО) для системы машинного зрения, специализированное ПО для системы управления движением и т. д. Это особенно сложно для небольших команд проектировщиков, где за много компонентов проекта отвечает небольшая группа или даже один инженер.
Сегодня существует более подходящий способ разработки таких систем для современных станков и оборудования — программно-ориентированный подход, который уменьшает сложность, улучшает интеграцию, снижает риск и сокращает время выхода на рынок. Если использовать программные средства, предоставляющие возможность применения одного инструмента разработки для решения различных задач, разработчики смогут отражать модульность механической системы в ПО (рис. 2).
Объединение задач визуального контроля, управления движением, ввода/вывода и человеко-машинного интерфейса в одной мощной встраиваемой системе позволит упростить структуру системы управления. Такой подход устраняет проблемы, связанные с обменом данными между подсистемами, поскольку теперь все подсистемы работают в одном программном стеке на одном контроллере. Высокопроизводительная встраиваемая система машинного зрения вполне способна сыграть роль такого централизованного контроллера благодаря вычислительным мощностям, уже достигнутым в подобных устройствах.
Остановимся подробнее на некоторых преимуществах архитектуры централизованной обработки. Для этого возьмем приложение управления движением по видеоизображению — например, универсальный загрузчик, в котором система машинного зрения выдает указания системе управления движением. Детали могут находиться в различных положениях и могут быть по-разному ориентированы. Вначале система машинного зрения получает изображение детали для определения ее положения и ориентации и передает эту информацию системе управления движением. Затем с помощью полученных координат система управления движением перемещает актуатор к детали и захватывает ее. Она может также использовать эту информацию для корректировки ориентации детали перед ее размещением. При такой реализации задачи разработчики могут исключить все приспособления, используемые ранее для ориентации и положения деталей. Это уменьшает стоимость решения и позволяет проще адаптировать приложение к конструкции новых деталей — с помощью лишь программной модификации.
Как мы упоминали выше, у аппаратно-ориентированной архитектуры есть важное преимущество — ее масштабируемость, основанная на связи между системами по Ethernet. Но необходимо уделить внимание и обмену данными по этой сети. Как было указано ранее, сложность такого подхода состоит в том, что обмен данными по сети Ethernet недетерминирован, а пропускная способность ограничена. Для большинства задач управления движением, где машинное зрение используется только в начале реализации, это приемлемо, но в других ситуациях изменение задержки может представлять проблему. Применение архитектуры централизованной обработки данных позволяет ее решить. Во-первых, снижается сложность разработки, поскольку и систему управления движением, и систему машинного зрения можно разрабатывать в одной и той же среде программирования и разработчику не нужно знать несколько языков или сред программирования. Во-вторых, потенциальное узкое место производительности системы в сети Ethernet устраняется, так как теперь данные передаются между циклами одного приложения, а не через физический уровень. В результате вся система работает детерминированно за счет того, что она целиком выполняется в одном процессе. Это особенно важно, если машинное зрение необходимо использовать в цикле управления, например в приложениях с визуальным сервоуправлением. В этом случае система машинного зрения в процессе перемещения непрерывно получает изображения актуатора и целевой детали, пока перемещение не завершится. Эти изображения используются для обеспечения обратной связи об успешном выполнении движения, с помощью которой разработчики могут улучшить точность существующей автоматики без необходимости приобретения высокопроизводительного оборудования для управления движением.
Как выглядит такая система? Если разработчики собираются использовать систему, способную выполнять операции вычисления и управления, необходимые для системы машинного зрения, а также обеспечивающую бесшовную стыковку с другими системами — управления движением, HMI, вводом/выводом, — то это должна быть аппаратная архитектура, которая позволяет достичь нужной производительности, а также дает интеллектуальные и управляющие способности, требующиеся каждой из этих систем. Хороший вариант для такой системы — гетерогенная архитектура обработки данных, объединяющая процессор и FPGA с вводом/выводом (рис. 3). Архитектура этого типа пользуется популярностью на современном рынке: стоит вспомнить Xilinx Zynq All-Programmable SoC (системы на кристалле, объединяющие процессор ARM с Xilinx 7-Series FPGA) или многомиллиардное приобретение компанией Intel компании Altera, а также множество систем машинного зрения. Использование FPGA дает особые преимущества системам машинного зрения благодаря присущему ему параллелизму: алгоритмы могут быть разделены так, чтобы выполняться в тысячах совершенно независимых потоков. Такая архитектура также имеет ценность для систем управления движением и ввода/вывода. Процессоры и FPGA можно использовать для выполнения продвинутой обработки, вычислений и принятия решений. У разработчиков есть возможность подключиться практически к любому датчику по любой шине через каналы аналогового и цифрового ввода/вывода, промышленные и пользовательские протоколы, датчики, актуаторы, реле и т. д. Такая архитектура удовлетворяет и другие требования, например таймирования и синхронизации, а также бизнес-задач вроде достижения уровня продуктивности. Также она устраняет необходимость в больших специализированных командах разработчиков, что актуально для всех, кто хочет повысить скорость разработки.
К сожалению, хотя эта архитектура предлагает большие возможности для обеспечения производительности и масштабируемости, традиционный подход к ее реализации требует соответствующего опыта, особенно когда речь заходит об использовании FPGA. Из-за этого применение архитектуры может стать непрактичным или даже невозможным. Однако с помощью интегрированного ПО, например NI LabVIEW, разработчики могут увеличить продуктивность и снизить риски, абстрагируясь от сложностей нижнего уровня и интегрируя все необходимые технологии в одной универсальной среде разработки.
Перейдем от теории к практике. Master Machinery — тайваньская компания, выпускающая установки для обработки полупроводников, одна из которых показана на рис. 4. Конкретно в этой установке используется сочетание машинного зрения, управления движением и промышленного ввода/вывода для извлечения кристаллов из кремниевой подложки и их последующей упаковки. В среднем подобные станки обрабатывают примерно по 2000 элементов в час. Это хороший пример системы, где могла бы использоваться распределенная архитектура, подобная изображенной на рис. 1, когда каждая подсистема разрабатывается отдельно, а потом интегрируется в сеть. Однако в Master Machinery применили другой подход. Они разработали свою установку на основе централизованной, программно-ориентированной архитектуры и встроили контроллеры управления станком, системы машинного зрения и управления движением, ввод/вывода и HMI в один контроллер, ПО которого спроектировано в LabVIEW. Помимо снижения затрат (поскольку им не потребовалось разрабатывать отдельные подсистемы), такой подход значительно повысил производительность установки: теперь она обрабатывает около 20 тыс. элементов в час — в 10 раз больше, чем станки конкурентов.
Ключевым компонентом для достижения такого результата стала возможность объединить несколько подсистем в один программный стек: в частности, системы машинного зрения и управления движением. Это позволило Master Machinery упростить не только проектирование системы машинного зрения, но и проектирование всей системы в целом.
Машинное зрение — сложная технология, требующая значительных вычислительных мощностей. Поскольку производительность обрабатывающих элементов (CPU, GPU, FPGA) растет по закону Мура, разработчики могут использовать эти компоненты для разработки весьма сложных алгоритмов, а также для улучшения производительности всех компонентов проекта, особенно в области управления движением и ввода/вывода. При росте производительности всех этих подсистем используемая при проектировании традиционная распределенная архитектура оказывается перегруженной. Консолидация необходимых задач в одном контроллере с единым программным окружением устраняет узкие места из процесса разработки и позволяет разработчикам сосредоточиться на инновациях, а не их реализации.