Оглавление:

Хокинг-бот: 5 шагов
Хокинг-бот: 5 шагов

Видео: Хокинг-бот: 5 шагов

Видео: Хокинг-бот: 5 шагов
Видео: Жуткое видео от ИИ о будущей эволюции человечества + пасхалка! 2024, Июль
Anonim
Image
Image
Создайте своего бота Hawking
Создайте своего бота Hawking

Бот Hawking - это проект Lego MINDSTORMS EV3, вдохновленный покойным Стивеном Хокингом. У Стивена Хокинга было хорошее чувство юмора, поэтому я уверен, что он одобрил бы этот проект. Бот-Хокинг может обходить препятствия и реагировать на движения, а затем произносить один из знаменитых звуковых фрагментов Стивена Хокинга и двигаться в направлении движущегося объекта. Он использует ультразвуковой датчик, который сканирует окружающую среду быстрым движением головы.

Шаг 1. Создайте своего бота Hawking

Все необходимые детали входят в базовый набор EV3 Lego MINDSTORMS, за исключением ультразвукового датчика (его глаза), который необходимо приобретать отдельно.

Шаг 2:

Изображение
Изображение

Код для Hawking Bot полностью написан на python 3. Загрузочный файл образа для запуска python в среде Debian Linux на Hawking Bot можно загрузить с веб-сайта ev3dev. Код для запуска бота Hawking можно скачать здесь. Весь код содержится в файле класса, поэтому вы можете использовать существующие методы или даже изменить их, если хотите.

Посмотрите это видео с подробными инструкциями по установке Debian Linux и Python3 на вашем роботе. Хотя это специально для настройки Mac, все же будет полезно получить общее представление о процессе. Эта работа в процессе. Ультразвуковой датчик иногда бывает ненадежным, и для этого требуется более умный код для обнаружения «выбросов». Я хотел бы видеть вклад других, чтобы сделать код более эффективным и менее подверженным ошибкам.

Шаг 3. Создайте свой собственный саундбайт Хокинга

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

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

Сохраните звуковой фрагмент в виде монофонического файла wav как SH6, SH7,… SH11, SH12 и так далее.

Ниже вы найдете несколько образцов, которые я создал описанным выше методом.

Шаг 4: Советы и хитрости

Секреты и уловки
Секреты и уловки
Секреты и уловки
Секреты и уловки

Hawking Bot поставляется с модулем самопроверки, чтобы убедиться, что все кабели подключены и заряда батареи достаточно. Легко могут возникнуть ослабленные, отсутствующие или даже поврежденные соединения. Так что этот модуль очень полезен. Метод checkConnection проверяет только наличие электрического соединения. Вы все равно должны убедиться, что двигатели подключены к правильному порту.

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

Hawking Bot лучше всего работает с большими препятствиями и на ровной и гладкой поверхности. Коврики более сложны для двигателей, и вам, возможно, придется изменить настройки, чтобы отрегулировать поведение для разных поверхностей.

Бот Hawking ни в коем случае не идеален, и это прототип, который выиграет от дальнейших улучшений. Код полностью прокомментирован, и вам должно быть легко понять, что делают различные методы. Различные биты были закомментированы с помощью #, если вы удалите # перед словом «печать», запущенная программа покажет вам различные показания датчиков и расчеты.

Шаг 5: Предлагаемые улучшения, обновления и идеи на будущее

Теперь, когда вы успешно построили своего робота, вы хотите перейти на следующий уровень. Вы можете улучшить метод MotionDetector. Прямо сейчас очень часто он получает неправильное прочтение. Вы можете увидеть фактические показания, раскомментировав disA и disB (внизу блока метода). Неправильное чтение обычно отличается от других показаний, поэтому вы можете написать алгоритм, чтобы робот не реагировал на неправильное чтение.

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

Как насчет того, чтобы робот узнал о своей среде? Это может быть выполнено с помощью подхода k-ближайшего соседа или, возможно, нейронной сети. Блок EV3 имеет ограниченную вычислительную мощность, хотя он поддерживает Numpy. Альтернативой может быть BrickPi, который позволит вам запускать библиотеку AI, такую как Tensorflow, но целью этого руководства было использование набора Lego EV3 MINDSTORMS без необходимости покупать много дорогих дополнительных частей, кроме ультразвукового датчика.

Однако подход к обучению повторному инфоцементу k-ближайших соседей должен работать на блоке EV3, и это предлагаемый алгоритм. Я оставляю это на ваше усмотрение, чтобы найти рабочую реализацию или выявить какие-либо проблемы:

Обучение с подкреплением для Hawkings Bot

Идея состоит в том, что 7 показаний USS кодируются в вектор, а последние 10 движений головой используются для создания последовательного вектора из 70 записей. Первые показания неполные, поэтому будут заполнены нулями. Каждая запись содержит значение расстояния от USS. Это вектор состояния s. Система допускает 1000 записей. После этого самая старая запись будет заменена, а записи возраста для каждой пары s-r будут уменьшены на единицу.

Бот не должен приближаться к объекту ближе 10 см. Это создает отрицательную награду. Для простоты; хорошие действия награждаются 1, а плохие - 0. Фактически это создает вероятность вознаграждения для каждой комбинации действие-состояние. Мы будем использовать льготные вознаграждения и жадную политику epsilon.

Это создает 3 больших таблицы состояния-награды (s-r) для всех трех действий справа, прямо и налево - возможно, будет возможно иметь быструю и медленную скорости для каждого действия. Тогда у нас будет 6 действий и 6 поисковых таблиц s-r.

Каждый раз, когда записывается новое состояние s, оно сравнивается с таблицами, евклидово расстояние (или аналогичная мера) используется для поиска ближайшего соседа. Это не будет ранжироваться, а скорее устанавливается порог t, чтобы принять состояние как очень похожее, перезаписать существующее состояние и обновить его для получения наивысшего вознаграждения и выполнить связанное действие a. Если это не похоже (d> t), введите новую пару s-r для каждого действия a. Если есть связь между действиями для s-r (все они имеют одинаковую награду), выберите случайный выбор, но это нечасто и может быть опущено.

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

Таблица выглядит примерно так: Entry No - State vector - награда за действие 1 - награда за действие 2 - награда за действие 3.

Я предполагаю, что реальная реализация будет сложной, но затрачивает меньше усилий. Удачи!

Рекомендуемые: