ПРИМЕНЕНИЕ НЕЙРОННЫХ СЕТЕЙ ДЛЯ ОБЕСПЕЧЕНИЯ АВТОНОМНОЙ НАВИГАЦИИ МОБИЛЬНОГО РОБОТА - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

ПРИМЕНЕНИЕ НЕЙРОННЫХ СЕТЕЙ ДЛЯ ОБЕСПЕЧЕНИЯ АВТОНОМНОЙ НАВИГАЦИИ МОБИЛЬНОГО РОБОТА

Вовик А.Г. 1, Воронов В.И. 1
1МТУСИ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

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

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

Для решения этой задачи авторами создано приложение на языке Python [7], содержащее нейронную сеть прямого распространения. Разработка приложение произведена в соответствии со следующими этапами:

Формируется исходный набор данных (обучающий набор), содержащий показания ультразвуковых датчиков, установленных на корпусе робота.

Производится «случайная инициализация» весов нейронной сети для входного и скрытых слоев.

Выбирается условие остановки обучения, в приведенном в статье примере будет взято 15000 итераций методом обратного распространения ошибки.

Исходный набор данных разбивается на тренировочный, содержащий 72% от исходного набора, и тестовый наборы, содержащий оставшиеся 28%.

С использованием тренировочного набора получают значения весов, обеспечивающих наилучшую точность алгоритма.

Для проверки полученных весов, на вход нейронной сети подается тестовый набор.

Делаются выводы о точности нейронной сети.

Описание исходного набора данных

Исходный набор данных, зарегистрированный с показаний датчиков, установленных на роботе SCITOS G5, был взят с сайта www.kaggle.com[6]в виде файла с расширением csv. Данные были собраны, когда SCITOS G5 проходил по комнате вдоль стены по часовой стрелке. Часть исходных данных изображена на рисунке 1а

Рисунок 1аНабор данных до обработки

Первые 4 колонки отображают минимальное показание ультразвуковых датчиков в пределах 60-градусной дуги, расположенных в передней, левой, правой и задней частях робота. Последняя колонка показывает направление движения робота.

Поскольку нейронные сети оперируют только числовыми данными,то последняя колонка,показывающая направление движения робота, была разбита на четыре дополнительные, где стоят нули, а единица в той колонке, порядковый номер которой соответствует предыдущему значению этого показателя (робот двигался вперед, незначительно поворачивал налево или направо, или резко поворачивал направо). То есть первые четыре колонки с показаниями датчиков являются признаками, а колонки 5, 6, 7 и 8 - это прогнозируемая величина. Часть набора данных после обработки изображена на рисунке 1б

Рисунок1б Набор данных после обработки

Считывание данных из файла реализуется с использованием готовой библиотеки для Python -«pandas» [2]. После считывания данные разбиваются на две части. Первая часть используется для обучения нейронной сети и содержит 72% данных от исходного набора, а вторая часть необходима для тестирования полученной нейронной сети, туда входят оставшиеся 28%.

Архитектура нейронной сети

Для решения задачи навигации был выбран персептрон с 4 нейронами на входе, 4 на выходе и 4 скрытыми слоямис 16, 12, 8 и 6 нейронами в каждом соответственно.

Далее создаются матрицы весов, заполненные случайными числами, которые необходимо умножить на входные данные для перехода к следующему слою нейронной сети. Выходные данные из скрытого слоя передаются через нелинейную функцию (функцию активации), для получения выходного значения.

Применение методов прямого и обратного распространения для обучения нейронной сети

Следующим этапом описываются методы прямого и обратного распространения. Для этого создается сигмоидная функция от входящего параметра. Функция принимает массив и возвращает его, преобразовав входящие данные с помощью сигмоиды. При написании функции для метода прямого распространения использовалась библиотека для Python – «numpy» [1]. Программная реализация метода прямого распространения представлена на рисунке 2.

Рисунок 2 Метод прямого распространения

Выходные данные из скрытого слоя передаются через нелинейную функцию (функцию активации), для получения выхода сети.

Программная реализация метода обратного распространения представлена на рисунке 3.

Рисунок 3 Метод обратного распространения

Суммарная ошибка (o_error) вычисляется как разность между ожидаемым значением «y» (из обучающего набора) и полученным значением «о» (посчитанное на этапе прямого распространения), проходящих через функцию потерь (cost function). Затем эти дифференциалы умножаются на число, называемое скорость обучения или learning rate (lr).Полученный результат затем вычитается из соответствующих весов. В результате получатся обновленные весаW1, W2, W3,W4 и W5. Переменная lr необходима для того, чтобы по мере обучения сети функция двигалась к глобальному минимуму.

Для обучения нейронной сетиисходные данные разделяются на входные и данные на выходе. Входные данные - минимальные показание ультразвуковых датчиков в пределах 60-градусной дуги, расположенных в передней, левой, правой и задней частях робота, на основе которых мы должны получить наше выходное значение, а данные на выходе – непосредственно сам выходной ответ. Если выходное значение не соответствует требуемому, тогда мы изменяем значение весов и повторяем это изменение заданное количество раз. Наилучшая точность была достигнута при коэффициенте обучения равным 0.01 и количестве итераций - 15000.

Тестирование нейронной сети

После обучения производится тестированию нейронной сети с использованием второй части исходных данных.

Вторая часть исходных данных составляет 28% и представляет собой 1455 наблюдений. Если выходное значение не соответствует требуемому, тогда прогноз определяется как неправильный.

После обработки тестируемых данных вычисляется точность и процент ошибок нейронной сети.

На рисунке 4 представлен пример тестирования на последней итерации и вывод точности нейронной сети.

Рисунок 4Вывод точности нейронной сети

Полученный в результате тестирования нейронной сети процент верных предсказаний направления движения мобильного робота составил 71%.

Заключение

Авторами разработаноприложение на языке Python[7]с применением нейронной сети прямого распространения, решающее задачу автономной навигации мобильного робота, используя данные, собранные с ультразвуковых датчиков, установленных на корпусе мобильного робота.

Обученная нейронная сеть предсказывает направление движения мобильного робота, основываясь наданные, взятые с установленных на нем ультразвуковых датчиков, с точностью 71%.

Список источников и литературы

NumPy (NumericPython). Открытая библиотека для работы большими массивами и матрицами [Электронный ресурс]. – Режим доступа:http://www.numpy.org/

Pandas. Открытая библиотека для анализа и обработки данных. [Электронный ресурс]. – Режим доступа:http://pandas.pydata.org/

Л.И. Воронова, В.И. Воронов. Machine Learning: Регрессионные методы интеллектуального анализа данных: учебное пособие – МТУСИ, 2018 – 81 с.

Воронов В.И., Воронова Л.И. О повышении результативности магистерских программ в условиях инновационной экономики Инновационные подходы в науке и образовании: теория, методология, практика. - Изд-во: "Наука и Просвещение, 2017, с.35-44

Andrew Ng Machine Learning – обучающий курс по дисциплине Machine Learning от Stanford University [Электронный ресурс]. – Режим доступа: https://www.coursera.org/learn/machinelearning

«Kaggle». Sensor readings from a wall-following robot. [Электронный ресурс]. - Режим доступа: https://www.kaggle.com/uciml/wall-following-robot

Python. Высокоуровневый язык программирования [Электронный ресурс]. – Режим доступа: https://www.python.org/

Просмотров работы: 268