
Существующие решения для перемещения роботов в помещениях часто сталкиваются с рядом проблем, включающие ограничения в навигации, сложности в управлении, неэффективное использование пространства, а также проблемы безопасности и аварийной защиты. Это создает препятствия для повышения производительности и эффективности работы предприятий, а также для обеспечения безопасности персонала и окружающей среды.
Разработан программный комплекс в виде библиотеки для глубокого обучения интеллектуальных агентов для 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

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

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

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

Шершаков Денис Владимирович
Старший разработчик
segment
Это заметка для внутреннего журнала университета? Где статья то?