Статьи

МЕТОД ЧТЕНИЯ КАДРОВ С ВИДЕОКАМЕР И РЕАЛИЗАЦИИ АЛГОРИТМОВ ОБРАБОТКИ ВИДЕОИЗОБРАЖЕНИЙ В ПРОГРАММАХ НА ЯЗЫКАХ СТАНДАРТА IEC 61499

Использование языков, специфицированных в стандарте IEC 61499 является перспективным подходом к построению распределенных систем управления.
Применение данного стандарта позволяет разрабатывать распределенные управляющие программы, с помощью сети функциональных блоков. Функциональные блоки языка IEC 61131 традиционно применяются специалистами в области систем управления при разработке программ для управляющих контроллеров. В стандарте IEC 61499 в синтаксис функциональных блоков добавлена возможность работы с событиями, что облегчает разработку распределенных алгоритмов.
Построение гибких систем управления для роботизированных систем, разрабатываемых для Industry 4.0, часто приводит к появлению необходимости включать алгоритмы для обработки изображений в состав контуров управления. Алгоритмы обработки изображений являются необходимыми при разработке станков с ЧПУ, в составе систем управления для наземных и воздушных автономных подвижных объектов.
Представляется целесообразным расширить возможности, предоставляемые существующими средами разработки, использующими стандарт IEC61499, путем добавления возможности включать функциональные блоки, реализующие алгоритмы обработки изображений в общую управляющую программу системы управления. Предоставление разработчику возможности использования одного языка для разработки всей системы управления, позволит упростить процесс разработки и сопровождения этой системы.
Стандарт IEC 61499 предлагает строить программу из функциональных блоков, используя событийную модель для определения порядка их выполнения. Программа представляет из себя ориентированный граф функциональных блоков, которые могут обмениваться данными и событиями. Функциональные блоки имеют информационные и событийные входы и выходы. В процессе конфигурирования программы функциональные блоки могут назначаться разработчиком на устройства, входящие в состав модели устройств системы, и загружаться на них.
Существуют коммерческие и OpenSource инструментальные средства для разработки на языках IEC 61499. Примерами коммерческих инструментов разработки, поддерживающих IEC61499 являются IsaGrag и продукты компании nxtControl. Наиболее известными OpenSourceрешениями являются FBDK и среда разработки 4diac совместно со средой исполнения Eclipseforte.
Современные инструментальные средства для разработки алгоритмов обработки изображений предоставляют возможность описывать алгоритм обработки в виде цепочек связанных функциональных блоков. Примерами таких средств являются, например, Simulink,OpenVino. К сожалению, эти решения больше сконцентрированы непосредственно на разработке пайплайнов для алгоритмов обработки изображений. Так же, перечисленные средства не обеспечивают бесшовной интеграции алгоритмов обработки изображений в управляющие программы.
В данной работе рассматривается подход, предоставляющий возможность интеграции алгоритмов обработки изображений непосредственно в программу управления IEC 61499 для 4diac/forte. Для работы с изображениями предлагается использовать стандартную нотацию функциональных блоков. Изображения при этом предлагается рассматривать, как еще один тип данных.
Алгоритмы обработки изображения обладают рядом специфичных особенностей, которые отличают их от алгоритмов систем управления. К основным особенностям относятся:
- Необходимость добавления дополнительных устройств ввода-вывода для работы с камерами и видеопотоками;
- Необходимость минимизации затрат на копирование при передаче обрабатываемого изображения между функциональными блоками;
- Поддержка возможности выполнения алгоритмов обработки на нейроускорителях или GPU.
В данной работе описывается архитектура, которая учитывает вышеперечисленные особенности работы с изображениями, как с типом данных.
Устройства ввода-вывода в IEC 61499 могут быть реализованы в виде блоков ввода вывода IX, OX, а также в виде стандартных коммуникационных блоков PIBLISH, SUBSCRIBE, CLIENTи SERVER. Схема взаимодействия коммуникационных блоков с сетевой подсистемой описана в работе. Представляется целесообразным использовать аналогичную архитектуру для работы с камерами и видеопотоками.
Архитектура работы с камерами и видеопотоками для среды исполнения IEC 61131 Eclipse forte.
Для представления камеры в программе IEC 61499 предлагается использоваться стандартный блок SUBSCRIBE. Входными данных для SUBSCRIBE будут выступать параметры камеры, а выходным идентификаторы принятых кадров.
Для минимизации количества операций копирования при передаче кадра между функциональными блоками алгоритма предлагается передавать только дескрипторы кадров, помещая кадры в один или несколько именованных ассоциативных контейнеров. Такой подход позволяет значительно ускорить процесс транспортировки изображения между блоками. Функциональные блоки обработки изображения могут параметризироваться именами входных и выходных контейнеров с которыми они должны работать.
Описанный выше метод интеграции алгоритмов распознавания изображения в программы IEC 61499 был протестирован авторами, путем разработки компонентов для среды разработки Eclipse 4diac и среды исполнения Eclipse forte. Для этого был разработан слой для работы с камерой для среды исполнения forte, разработана реализация ассоциативного контейнера для хранения кадров и функциональные блоки для работы с ним, а также примеры функциональных блоков для типовых алгоритмов разработки изображений.
В качестве примеров для функциональных блоков были выбраны и реализованы алгоритмы выделения объектов с помощью сверточной нейронной сети yolo v3.
Пример программы IEC 61499 для нахождения объектов на кадрах видеопотока при помощи YOLO.
Программа позволяет читать кадры с камеры, выделять на кадре объект при помощи сверточной нейронной сети yolo и публикует информацию о найденном объекте, используя протокол MQTT.
В ходе тестирования разработанных функциональных для работы с камерой и обработкой изображений была выявлена проблема, связанная с возможностью переполнения очереди событий среды исполнения IEC 61499. Проблема связана со тем, что слой камеры работает асинхронно и генерирует события, сигнализирующие о появлении новых кадров с частотой, которая задана в параметрах функционального блока SUBSCRIBE. События помещаются в глобальную очередь событий среды исполнения. В случае, если функциональный блок алгоритма обработки кадров требует значительного времени на обработку кадров, то он может не успевать выбирать события из очереди событий с достаточной скоростью и очередь событий начинает расти. Рост очереди событий в конце концов приводит к неработоспособности системы. Возможным решением является ручное согласование частот генерации кадров и частоты обработки, однако, данный подход является трудоемким и желательно предоставить разработчику более простое для практического применения решение проблемы переполнения буфера событий.