Введение. Обеспечение мониторинга качества пищевой продукции и создание единой информационной системы отслеживания пищевой продукции - важнейшие задачи, которые ставит Правительство РФ перед разработчиками новых технологических процессов и технических средств, их реализующих [1].
В настоящее время средства автоматизации и робототехника всё глубже проникают в самые различные сферы человеческой деятельности. Это происходит из-за постоянного роста населения планеты, при этом роста размеров пахотных земель не наблюдается [2].
Так, например, группа компаний «Русагро» в сентябрьском отчёте 2021 года, не раскрывая объемов инвестиций, сообщила об окончании процедуры внедрения автоматизации операционных процессов с использованием передовых методов в сельском хозяйстве. Сами новшества делятся на две группы. Первая группа — это внедрение инноваций в биотехнологиях, селекции в растениеводстве и повышении урожайности. Вторая группа — это цифровая трансформация. Сюда входят: внедрение технологии точного земледелия, искусственный интеллект, оптимизация логистики и человеческого фактора, эффективное потребление водных и энергетических ресурсов [3].
Сегодня развитие средств механизации достигает такого технического уровня, при котором машины успешно могут вести селективный сбор ягод, в частности, классифицировать их по внешнему виду или зрелости. Однако нерешёнными остается ряд проблем, например, проблема перемещения робота по грядке, которая,
во-первых, заключается в том, что робот не должен повреждать почву под собой, корни растений, а также листву при перемещении для сбора плодов,
а во-вторых, робот должен быть достаточно проходимым, чтобы не увязнуть в грунте.
Цель исследования. Целью данной исследовательской работы является разработка информационной части манипулятора для сбора огуречных культур. Во время работы необходимо решить задачи определения плода огурца на фоне листьев в видеопотоке, позиционирования манипулятора относительно плода и определения места надреза плодоножки для последующего сбора.
Методы и средства. Использована среда программирования PyCharm Community; для обучения алгоритма использован обширный набор данных и проведены соответствующие испытания. Использованный набор данных создавался на основе принципов статистического анализа, применённых к выборке изображений по заданной тематике (овощные культуры). [4] Актуальность исследования основана на библиографическом анализе научной литературы в названной области (компьютерное зрение в сельском хозяйстве).
В качестве среды программирования выбран сервис Google Colab. Это бесплатная интерактивная облачная среда для работы с кодом от Google. Принцип у нее такой же, как у остальных онлайн-офисов компании: она позволяет одновременно с коллегами работать с данными. В основе лежит блокнот Jupyter для работы на Python, но с базой на Google Диске, а не на компьютере.
Для создания наборов данных используется сервис Roboflow. Он поддерживает обширный ряд форматов для импорта, включая JSON, XML, CSV и TXT. Поддерживаемые форматы изображений: JPG, PNG, BMP и TIF. Про-грамма позволяет создавать наборы данных для систем технического зрения путём использования уже имеющихся алгоритмов плюс настраиваемого обучения своих собственных нейросетей.
Результаты. Обобщённый алгоритм работы, представленный на рисунке 1, отражает необходимые комплектующие и структурные схемы устройства.
Рисунок 1 - Обобщённый алгоритм работы разрабатываемого манипулятора
Основой алгоритма является система технического зрения. Изображение, полученное с камеры, преобразуется в 3D массив. Через библиотеку OpenCV подгружается драйвер видеокамеры. Функция, вызывающая объект видеокамеры, возвращает покадрово изображения в формате библиотеки PIL. Библиотека numpy позволяет преобразовать трёхцветное изображение размером 416 на 416 пикселей в массив 416х416х3. Этот массив далее подаётся на вход нейронной сети, где попадает на свёрточные слои. На данный момент, свёрточный слой Cond2d является самой эффективной структурой для работы с изображениями. Его принцип работы таков: алгоритм анализирует определённо заданную часть изображения, и исходя из значений, записанных в ячейках этой части строит окно свёртки – массив меньшей размерности.
Камера, размещённая над схватом, передаёт изображения на микроконтроллер, где они обрабатываются и преобразуются в команды управления. Манипулятор стремится достичь цели, ориентируясь по координатам объекта и стремясь разместить камеру так, чтобы объект был в центре изображения, когда датчик расстояния подтвердит приближение к цели, привод срежет плод дисковым ножом.
После завершения цикла среза звено с камерой, датчиком-дальномером и ножом возвращается в исходное положение, в котором камера видит весь куст. Если новые цели найти не получается, манипулятор на подвижной платформе продвигается на 3 см по рельсам вперёд.
Основываясь на схеме подключения, изображённой на рисунке 2, стоит отметить, что система управления разделена на 2 части из-за недостаточного количества входов на плате Raspberry Pi (на рисунке обозначена как J1: микрокомпьютер). В данном случае микрокомпьютер выполняет задачу обработки изображения, а также получает данные с датчиков-энкодеров, концевых датчиков и лазерного дальномера. Дополняющий микроконтроллер Arduino Nano управляет двигателями через драйверы L298N, получая данные о управлении через ШИМ входы с Raspberry Pi.
В соответствии с рассчитанным временем работы двигателя из компьютера по соответствующему выводу, привязанному к конкретному двигателю, на микроконтроллер Arduino Nano отправляются данные о направлении работы двигателя. В свою очередь, микроконтроллер сообщает драйверу L298N необходимость включить нужный двигатель. В этой системе таже существует обратная связь. На двигателях постоянного тока установлены датчики-энкодеры. Они считывают количество оборотов для контроля пройдённого пути. Эти датчики подключены к компьютеру Raspberry Pi. После выполнения первого движения компьютер сравнивает величину рассчитанного и реально пройденного пути, после чего происходит корректировка положения привода, и плод срезается.
Рисунок 2 - Схема управления манипулятором
Нейросеть реализована на языке программирования Python. Остановимся на нём подробнее.
Python является мультипарадигмальным языком программирования, поддерживающим императивное, процедурное, структурное, объектно-ориентированное программирование, метапрограммирование и функциональное программирование. Задачи обобщённого программирования решаются за счёт динамической типизации.
Структура нейронной сети такова, что она использует самые разные виды слоёв для превращения массива 413х413х3 в массив 6х1, где каждое значение представляет данные в следующем порядке: класс определённого объекта, вероятность с которой он был распознан, х-координата нижней левой вершины рамки, у-координата той же вершины, высота рамки, ширина рамки. Таких рамок может быть множество вокруг одного объекта, для выбора одной истинной рамки используется алгоритм NonMaxSuppression.
NonMaxSuppression выполняется следующим образом: из списка предсказаний, полученного на выходе из нейронной сети, удаляются предсказания с самым высоким уровнем точности. Эти предсказания сравниваются с общим списком всех обнаруженных объектов. Вычисляется суммарная разница между ними, и если она больше некоторого порогового значения для любого из предсказаний, представленных в общем списке, то оно удаляется из него. Так повторяется до тех пор, пока в общем списке не останется одно единственное предсказание. Оно и является истинным. Полученная рамка может быть наложена на исходное изображение при помощи библиотеки PIL в целях демонстрации работы.
Чтобы узнать расстояние, на которое выдвигается привод горизонтального движения, используется лазерный дальномер. Данные с него приходят при помощи протокола I2C. В то же время у одноплатного компьютера Raspberry Pi имеется 2 вывода для работы и этим протоколом, а также вшитые драйверы. Это позволяет легко соединить датчик и компьютер. Данные с датчика отправляются на функцию работы с приводом.
Согласно электрической схеме подключения на рисунке 2, данные с лазерного дальномера отправляются на Raspberry Pi. Исходя из известной скорости двигателя и расстояния до объекта, высчитывается время работы привода по известной формуле – время равно отношению расстояния к скорости.
Тестирование программного обеспечения - проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая при конечном наборе тестов, выбранном определённым образом. [5, 6] В более широком смысле, тестирование — это одна из техник контроля качества, включающая в себя действия по планированию работ, проектированию тестов, выполнению тестирования и анализу полученных результатов. [7]
Системное тестирование работоспособности системы технического зрения было проведено в различных условиях освещённости и с различными объектами. Сперва была проведена проверка с стандартными объектами, такими как созревший огурец с цветком на рисунках 24-25 можно увидеть результаты распознавания при разных углах поворота огурца.
Рисунок 3 - Определение огурца, расположенного вертикально
Рисунок 4 - Определение огурца, расположенного горизонтально
Здесь можно заметить падение точности распознавания огурцов, расположенных горизонтально, хотя на определение цветка расположение не повлияло. Также были проверены нестандартные тесты. На рисунке 5 можно увидеть распознавание системой нарисованного огурца, на рисунке 6 нейронная сеть находит плоды в комнатном растении, а на рисунке 7 система технического зрения обнаружила цветок в предметах быта.
Рисунок 5 - Определение нарисованного огурца
Рисунок 6 - Несуществующие объекты на комнатном растении
Рисунок 7 - Цветок, увиденный в бытовых принадлежностях
Заключение. В результате процесса разработки получена система управления, способная различать плоды огуречных культур, их плодоножки, соцветия, а также незрелые плоды. Система использует манипулятор для сбора огурцов в тепличных условиях. Проведённый анализ на актуальность показал целесообразность создания проекта с учётом текущих условий и тенденций в агромехатронике, о чём свидетельствует ряд исследований, посвящённых проблемам технического зрения и его использованию в сельском хозяйстве. Тестирование системы было успешным, отладка кода позволила устранить все ошибки.
Список литературы
Мартынов В.В., Белозеров В.В. Метод и переносной автоматизированный комплекс экспресс-анализа бутилированной воды//European journal of Natural History. 2021. №1. С. 66- 71;
Alexander Bogomolov, Victor Nevezhin, Margarita Larionova, Elena Piskun, Review of digital technologies in agriculture as a factor that removes the growth limits to human civilization E3S Web Conf. 247 01074 (2021) DOI:10.1051/e3sconf/202124701074;
Презентация для инвесторов Ros Agro RLC [Электронный ресурс] URL: https://www.rusagrogroup.ru/fileadmin/files/presentations/Ros_Agro_-_CMD_Presentation__RUS__F.pdf . (Дата обращения 18.11.23)
Набор данных, использованных для исследования [Электронный ресурс] URL: https://github.com/olegogogo/GreenhouseRobotPicker (Дата обращения 22.11.23)
Данилов А.Д., Фёдоров А.И. Иерархическая структура процесса тестирования сложного программного обеспечения // Вестник ВГТУ. 2014. C. 3-7;
Хасанов А. С., Шишкин В. В. Автоматизация интеграционного тестирования программного обеспечения с повышенными требованиями к критичности // Вестник УлГТУ. 2021. №2 (94). С. 61-67;
Panesar-Walawege, Rajwinder & Sabetzadeh, Mehrdad & Briand, Lionel & Coq, Thierry. (2010). Characterizing the Chain of Evidence for Software Safety Cases: A Conceptual Model Based on the IEC 61508 Standard. 335-344. 10.1109/ICST.2010.12.