Разработка библиотеки для навигации групп мобильных роботов на транспортной платформе в заранее неизвестной среде

в 13:15, , рубрики: нейронные сети, обучение с подкреплением, сверточные нейронные сети
Обучение робота

Обучение робота

Существующие решения для перемещения роботов в помещениях часто сталкиваются с рядом проблем, включающие ограничения в навигации, сложности в управлении, неэффективное использование пространства, а также проблемы безопасности и аварийной защиты. Это создает препятствия для повышения производительности и эффективности работы предприятий, а также для обеспечения безопасности персонала и окружающей среды.

Разработан программный комплекс в виде библиотеки для глубокого обучения интеллектуальных агентов для 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

Интерфейс модуля NeuralInterface

Интерфейс модуля NeuralInterface

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

Разработка библиотеки для навигации групп мобильных роботов на транспортной платформе в заранее неизвестной среде - 5

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

Руководитель проекта

Разработка библиотеки для навигации групп мобильных роботов на транспортной платформе в заранее неизвестной среде - 6

Тимченко Николай Николаевич

Старший разработчик

Разработка библиотеки для навигации групп мобильных роботов на транспортной платформе в заранее неизвестной среде - 7

Шершаков Денис Владимирович

Старший разработчик

Автор: DenisSher

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js