
Существующие решения для перемещения роботов в помещениях часто сталкиваются с рядом проблем, включающие ограничения в навигации, сложности в управлении, неэффективное использование пространства, а также проблемы безопасности и аварийной защиты. Это создает препятствия для повышения производительности и эффективности работы предприятий, а также для обеспечения безопасности персонала и окружающей среды.
Разработан программный комплекс в виде библиотеки для глубокого обучения интеллектуальных агентов для ARM процессоров. Интеллектуальные агенты должны будут «научиться» перемещаться в заранее неизвестной для них среде, модель которой изначально не будет строго детерминированной для агентов, накапливая опыт в процессе множества итераций, получая за свои действия положительные или отрицательные вознаграждения от среды, коммуницировать между собой путем передачи сообщений о своих перемещениях другим агентам группы, с целью оптимизации своих траекторий для достижения целевого состояния заданного оператором.
Для иллюстрации работы программного кода библиотеки выбрано семейство процессоров STM32 серии STM32F4 на базе архитектуры ARM Cortex-M4 модель STM32F407 (или плата с STM32F429) разрядностью 32bit.

Принцип работы
При реализации интеллектуальных агентов используется библиотека RoboAICore, а также модуль мониторинга и визуализации NeuralInterface. На аппаратной части используются функции библиотеки RoboAICore, модуль NeuralInterface запускается в виде веб-сервера на ПК. Данные о процессе работы алгоритмов и сигналы управления передаются с помощью протокола HTTP между серверной частью и агентами.
Связь между агентами и сервером осуществляется по TCP/IP протоколам. На каждом из агентов работают:
-
HTTP клиент для отправки запросов на другие сервера
-
WEB сервер для обработки входящих запросов от других клиентов.
При работе с stm32 клиент-серверная часть реализована при помощи внешнего модуля ESP8266. На raspberry pi работа web сервера и клиента реализована при помощи сокетов.
Обмен сообщениями осуществляется посредством HTTP запросов. Сообщения представляют собой POST запросы с наборами данных. Данные в теле POST запроса представляют собой строку в формате JSON. Обмен сообщениями может осуществляться как между сервером и агентом, так и между самими агентами. Так как на каждом из агентов запущен свой web сервер, агент может обрабатывать входящие запросы и отправлять ответ отправителю. Чтобы агент мог отправить запрос другому агенту, ему нужно знать его адрес. Адреса других агентов хранятся у каждого агента и синхронизируются при помощи сервера при включении агента или по запросу.
Обучение с подкреплением

Окружение – это среда или объект, на который воздействует Агент (например игра), в то время, как Агент представляет собой алгоритм ОП. Процесс начинается с того, что Окружение отправляет свое начальное состояние (state = s) Агенту, который затем, на основании своих значений, предпринимает действие (action = a) в ответ на это состояние. После чего Окружение отправляет Агенту новое состояние (state = s) и награду (reward = r) Агент обновит свои знания наградой, возвращенной окружением, за последнее действие и цикл повторится. Цикл повторяется до тех пор, пока Окружение не отправит признак конца эпизода.
Обучение агентов можно производить как напрямую на аппаратной части, так и на локальном ПК, собирая данные о состояниях среды и действиях агентов в виде сообщений, при помощи NeuralInterface.
Библиотека состоит из следующих модулей:
RoboAICore
RoboAICore - это кроссплатформенная библиотека глубокого обучения, для мобильных роботов и ПК. Библиотека может применяться в направлениях, где требуется разработка систем, использующих нейронные сети, модели глубокого машинного обучения, обучение с подкреплением интеллектуальных агентов.
Функции библиотеки:
-
Создание основных нейросетевых структур (разные типы слоев, сетей и алгоритмов их обучения) на аппаратной части и ПК
-
Реализация алгоритмов самообучения интеллектуальных агентов
-
Реализация алгоритмов глубокого обучения с подкреплением
-
Формирование сообщений для передачи между серверной частью (модулем мониторинга NeuralInterface) и агентами.
В библиотеке использовались:
-
Нейронные сети прямого распространения
-
Свёрточные нейронные сети
-
Алгоритмы обучения с подкреплением (deep RL)
Алгоритмы оптимизации:
-
SGD - метод простого стохастического градиентного спуска (stochastic gradient descent)
-
Adagrad - метод адаптивного градиентного спуска (adaptive gradient algorithm)
-
RMSProp - метод модифицированного адаптивного градиентного спуска (root mean square propagation)
-
Nesterov - алгоритм Нестерова, метод накопления импульса (Nesterov Accelerated Gradient)
-
Adam - метод адаптивной оценки момента (Adaptive Moment Estimation)
-
Adan - адаптивный алгоритм импульса Нестерова (Adaptive Nesterov Momentum Algorithm)
Алгоритмы обучения с подкреплением:
-
DQN
-
Actor Critic
-
DDPG
Ядро библиотеки разработано на языке С и поддерживает компиляцию как для CPU так и для GPU (CUDA).
NeuralInterface
NeuralInterface - это модуль мониторинга и визуализации, используемый для отображения работы агентов (мобильных роботов). Данный модуль представляет собой веб-приложение с несколькими страницами, отображающими текущий статус агентов, их принадлежность к определенным группам. Также реализован функционал прямого управления агентами. Можно задать направление их перемещения, загрузить и выгрузить данные их состояния, начать или прекратить их обучение.
Функции библиотеки:
-
Визуализации и удаленный мониторинг процессов, происходящих на аппаратной части
-
Веб интерфейс для управления и мониторинга процессами работы нейросетевых алгоритмов на аппаратной части (взаимодействие с RoboAICore)
-
Реализация обмена сообщениями между интеллектуальными агентами при работе в группах
В библиотеке использовались:
-
Python Django
-
Django REST framework
-
Apache ECharts

Команда проекта

Дубенко Юрий Владимирович
Руководитель проекта

Тимченко Николай Николаевич
Старший разработчик

Шершаков Денис Владимирович
Старший разработчик
Автор: DenisSher