Робот на языке python
Программируем роботов на Python
Приветствую тебя, мой друг. На этой странице ты сможешь найти примеры скриптов на языке Python для управления своим роботом, просто бери их и адаптируй под свой проект. Также ты сможешь найти здесь ряд команд для командной стоки в Linux. Они тебе пригодятся, так как наши роботы используют именно эту операционную систему.
Содержание:
Дисплей
Вывод картинки на экран блока EV3:
Вывод текста на экран блока EV3:
Кнопки блока EV3
Выход из программы при нажатии на любую кнопку:
Ультразвуковой датчик ( Ultrasonic Sensor )
Программа выводит расстояние от ультразвукового датчика до препятствия на экран дисплея. Прекращение программы осуществляется нажатием на кнопку датчика касания.
Датчик касания EV3 (touch sensor)
Следующий скрипт заставляет зажигаться красным цветом левый светодиод блока EV3 при нажатии на датчик касания, подключенный к порту №1
Теперь давайте напишем скрипт который выполняет выход из цикла по нажатию на датчик касания:
Гироскопический датчик (Gyro Sensor)
Гироскопический датчик предназначен для измерения угла вращения робота или скорости вращения. Сверху на корпусе датчика нанесены две стрелки, обозначающие плоскость, в которой работает датчик. Поэтому важно правильно установить датчик на робота. Также для более точного измерения крепление гироскопического датчика должно исключать его подвижность относительно корпуса робота. Даже во время прямолинейного движения робота гироскопический датчик может накапливать погрешность измерения угла и скорости вращения, поэтому непосредственно перед измерением следует осуществить сброс в 0 текущего показания датчика. Вращение робота против часовой стрелки формирует отрицательные значения измерений, а вращение по часовой стрелке — положительные.
Приведенный ниже скрипт выполняет измерение угла наклона датчика и выводит результат на дисплей EV3. Завершение программы происходит при нажатии на датчик касания:
Датчик цвета (Color sensor)
Датчик цвета может работать в трех различных режимах:
В режиме «Цвет» датчик может определить цвет поднесенного к нему предмета
В режиме «Яркость отраженного света» датчик направляет световой луч на близко расположенный предмет и по отраженному пучку определяет яркость предмета;
в режиме «Яркость внешнего освещения» датчик может определить — насколько ярко освещено пространство вокруг.
В следующем скрипте датчик цвета излучает свет и измеряет интенсивность отраженного света, возвращая дважды в секунду значение, которое находится между 0 и 100. Для достижения наилучших результатов поместите датчик примерно в 3 мм от отражающей поверхности. Запустив скрипт мы получим значение около 80 с обычной белой бумагой и около 5 с черной поверхностью.
Чтобы перевести датчик цвета в режим измерения яркости внешнего освещения достаточно в скрипте поменять строчку:
следующий скрипт — это пример работы датчика цвета в режиме определения цвета поднесённого к нему предмета. Для достижения максимальной точности предмет необходимо подносить на расстояние от 3 до 6 мм:
Большой мотор (large motor)
Программа запускает большой мотор, который подключен к порту «B», на максимальную скорость. Вал мотора провернется на 360 градусов и резко остановится (не накатом!). После остановки мотора через 5 секунд, выполнится выход из программы.
Следующий скрипт запустит большой мотор на постоянную работу. Остановка мотора в данном случае происходит по команде m.stop(stop_action=» coast «)
Средний мотор (Medium motor)
Для работы со средним мотором можно смело пользоваться скриптами из примеров для большого мотора, за одним маленьким исключением: вместо объявления переменной LargeMotor (большой мотор), мы объявляем MediumMotor(средний мотор).
Звуки (Sound)
Следующий скрипт воспроизводит звуковой файл «music.mp3», который находится по тому же адресу, что и скрипт:
Следующий скрипт воспроизводит звук определенной тональности и частоты:
Следующий скрипт воспроизведёт текст, который вы укажите в кавычках второй строки:
обратите внимание, что в кавычках можно писать не только текст, но и цифры, их блок EV3 прочитает на английском языке.
Также, вместо текста и цифр можно указать имя переменной, в этом случае EV3 произнесет значение переменной, которое хранится в ней в данный момент:
Рандом (Random)
Рассмотрим использование модуля Random на примере с запуском мотора. Скрипт заставит мотор сделать случайное число оборотов в диапазоне от 1 до 10:
Как создать чат-бота с нуля на Python: подробная инструкция
Аналитики Gartner утверждают, что к 2020 году 85% взаимодействий клиентов с сервисами сведется к общению с чат-ботами. В 2018 году они уже обрабатывают около 30% операций. В этой статье мы расскажем, как создать своего чат-бота на Python.
Возможно, вы слышали о Duolingo: популярном приложении для изучения иностранных языков, в котором обучение проходит в форме игры. Duolingo популярен благодаря инновационному стилю обучения. Концепция проста: от пяти до десяти минут интерактивного обучения в день достаточно, чтобы выучить язык.
Н есмотря на то что Duolingo позволяет изучить новый язык, у пользователей сервиса возникла проблема. Они почувствовали, что не развивают разговорные навыки, так как обучаются самостоятельно. Пользователи неохотно обучались в парах из-за смущения. Эта проблема не осталась незамеченной для разработчиков.
Команда сервиса решила проблему, создав чат-бота в приложении, чтобы помочь пользователям получать разговорные навыки и применять их на практике.
Поскольку боты разрабатывались так, чтобы быть разговорчивыми и дружелюбными, пользователи Duolingo практикуются в общении в удобное им время, выбирая «собеседника» из набора, пока не поборят смущение в достаточной степени, чтобы перейти к общению с другими пользователями. Это решило проблему пользователей и ускорило обучение через приложение.
Итак, что такое чат-бот?
Чат-бот — это программа, которая выясняет потребности пользователей, а затем помогает удовлетворить их (денежная транзакция, бронирование отелей, составление документов). Сегодня почти каждая компания имеет чат-бота для взаимодействия с пользователями. Некоторые способы использования чат-ботов:
История чат-ботов восходит к 1966 году, когда Джозеф Вейценбаум разработал компьютерную программу ELIZA. Программа подражает манере речи психотерапевта и состоит лишь из 200 строк кода. Пообщаться с Элизой можно до сих пор на сайте.
Как работает чат-бот?
Существует два типа ботов: работающие по правилам и самообучающиеся.
В поисковых ботах используются эвристические методы для выбора ответа из библиотеки предопределенных реплик. Такие чат-боты используют текст сообщения и контекст диалога для выбора ответа из предопределенного списка. Контекст включает в себя текущее положение в древе диалога, все предыдущие сообщения и сохраненные ранее переменные (например, имя пользователя). Эвристика для выбора ответа может быть спроектирована по-разному : от условной логики «или-или» до машинных классификаторов.
Генеративные боты могут самостоятельно создавать ответы и не всегда отвечают одним из предопределенных вариантов. Это делает их интеллектуальными, так как такие боты изучают каждое слово в запросе и генерируют ответ.
В этой статье мы научимся писать код простых поисковых чат-ботов на основе библиотеки NLTK.
Создание бота на Python
Предполагается, что вы умеете пользоваться библиотеками scikit и NLTK. Однако, если вы новичок в обработке естественного языка (NLP), вы все равно можете прочитать статью, а затем изучить соответствующую литературу.
Обработка естественного языка (NLP)
Обработка естественного языка — это область исследований, в которой изучается взаимодействие между человеческим языком и компьютером. NLP основана на синтезе компьютерных наук, искусственного интеллекта и вычислительной лингвистики. NLP — это способ для компьютеров анализировать, понимать и извлекать смысл из человеческого языка разумным и полезным образом.
Краткое введение в NLKT
NLTK (Natural Language Toolkit) — платформа для создания программ на Python для работы с естественной речью. NLKT предоставляет простые в использовании интерфейсы для более чем 50 корпораций и лингвистических ресурсов, таких как WordNet, а также набор библиотек для обработки текста в целях классификации, токенизации, генерации, тегирования, синтаксического анализа и понимания семантики, создания оболочки библиотек NLP для коммерческого применения.
Книга Natural Language Processing with Python — практическое введение в программирование для обработки языка. Рекомендуем ее прочитать, если вы владеете английским языком.
Загрузка и установка NLTK
Инструкции для конкретных платформ смотрите здесь.
Установка пакетов NLTK
Импортируйте NLTK и запустите nltk.download(). Это откроет загрузчик NLTK, где вы сможете выбрать версию кода и модели для загрузки. Вы также можете загрузить все пакеты сразу.
Предварительная обработка текста с помощью NLTK
Основная проблема с данными заключается в том, что они представлены в текстовом формате. Для решения задач алгоритмами машинного обучения требуется некий вектор свойств. Поэтому прежде чем начать создавать проект по NLP, нужно предварительно обработать его. Предварительная обработка текста включает в себя:
Пакет NLTK включает в себя предварительно обученный токенизатор Punkt для английского языка.
Набор слов
После первого этапа предварительной обработки нужно преобразовать текст в вектор (или массив) чисел. «Набор слов» — это представление текста, описывающего наличие слов в тексте. «Набор слов» состоит из:
Почему используется слово «набор»? Это связано с тем, что информация о порядке или структуре слов в тексте отбрасывается, и модель учитывает только то, как часто определенные слова встречаются в тексте, но не то, где именно они находятся.
Идея «набора слов» состоит в том, что тексты похожи по содержанию, если включают в себя похожие слова. Кроме того, кое-что узнать о содержании текста можно лишь по набору слов.
Например, если словарь содержит слова
Метод TF-IDF
Проблема «набора слов» заключается в том, что в тексте могут доминировать часто встречающиеся слова, которые не содержат ценную для нас информацию. Также «набор слов» присваивает большую важность длинным текстам по сравнению с короткими.
Один из подходов к решению этих проблем состоит в том, чтобы вычислять частоту появления слова не в одном тексте, а во всех сразу. За счет этого вклад, например, артиклей «a» и «the» будет нивелирован. Такой подход называется TF-IDF (Term Frequency-Inverse Document Frequency) и состоит из двух этапов:
Коэффициент TF-IDF — это вес, часто используемый для обработки информации и интеллектуального анализа текста. Он является статистической мерой, используемой для оценки важности слова для текста в некотором наборе текстов.
Пример
Рассмотрим текст, содержащий 100 слов, в котором слово «телефон» появляется 5 раз. Параметр TF для слова «телефон» равен (5/100) = 0,05.
Теперь предположим, что у нас 10 миллионов документов, и слово телефон появляется в тысяче из них. Коэффициент вычисляется как 1+log(10 000 000/1000) = 4. Таким образом, TD-IDF равен 0,05 * 4 = 0,20.
TF-IDF может быть реализован в scikit так:
Коэффициент Отиаи
TF-IDF — это преобразование, применяемое к текстам для получения двух вещественных векторов в векторном пространстве. Тогда мы можем получить коэффициент Отиаи любой пары векторов, вычислив их поэлементное произведение и разделив его на произведение их норм. Таким образом, получается косинус угла между векторами. Коэффициент Отиаи является мерой сходства между двумя ненулевыми векторами. Используя эту формулу, можно вычислить схожесть между любыми двумя текстами d1 и d2.
Здесь d1, d2 — два ненулевых вектора.
Подробное объяснение и практический пример TF-IDF и коэффициента Отиаи приведены в посте по ссылке.
Пришло время перейти к решению нашей задачи, то есть созданию чат-бота. Назовем его «ROBO».
Обучение чат-бота
В нашем примере мы будем использовать страницу Википедии в качестве текста. Скопируйте содержимое страницы и поместите его в текстовый файл под названием «chatbot.txt». Можете сразу использовать другой текст.
Импорт необходимых библиотек
Чтение данных
Выполним чтение файла corpus.txt и преобразуем весь текст в список предложений и список слов для дальнейшей предварительной обработки.
Давайте рассмотрим пример файлов sent_tokens и word_tokens
Предварительная обработка исходного текста
Теперь определим функцию LemTokens, которая примет в качестве входных параметров токены и выдаст нормированные токены.
Подбор ключевых слов
Определим реплику-приветствие бота. Если пользователь приветствует бота, бот поздоровается в ответ. В ELIZA используется простое сопоставление ключевых слов для приветствий. Будем использовать ту же идею.
Генерация ответа
Чтобы сгенерировать ответ нашего бота для ввода вопросов, будет использоваться концепция схожести текстов. Поэтому мы начинаем с импорта необходимых модулей.
Этот модуль будет использоваться для поиска в запросе пользователя ключевых слов. Это самый простой способ создать чат-бота.
Определим функцию отклика, которая возвращает один из нескольких возможных ответов. Если запрос не соответствует ни одному ключевому слову, бот выдает ответ «Извините! Я вас не понимаю».
Наконец, мы задаем реплики бота в начале и конце переписки, в зависимости от реплик пользователя.
Вот и все. Мы написали код нашего первого бота в NLTK. Здесь вы можете найти весь код вместе с текстом. Теперь давайте посмотрим, как он взаимодействует с людьми:
Получилось не так уж плохо. Даже если чат-бот не смог дать удовлетворительного ответа на некоторые вопросы, он хорошо справился с другими.
Заключение
Хотя наш примитивный бот едва ли обладает когнитивными навыками, это был неплохой способ разобраться с NLP и узнать о работе чат-ботов. «ROBO», по крайней мере, отвечает на запросы пользователя. Он, конечно, не обманет ваших друзей, и для коммерческой системы вы захотите рассмотреть одну из существующих бот-платформ или фреймворки, но этот пример поможет вам продумать архитектуру бота.
ОСНОВЫ ЯЗЫКА PYTHON ДЛЯ УПРАВЛЕНИЯ МОБИЛЬНЫМИ РОБОТАМИ
При работе с реальными роботами программное обеспечение, которое создает контролирующие сигналы, должно функционировать на высокой скорости и делать сложные вычисления. Поэтому чаще всего для программирования роботов используется язык C++. Но при работе с более простыми роботами Python становится хорошим вариантом: он обеспечивает довольно высокую скорость выполнения программы при относительной простоте написания кода.
Python — универсальный язык пригодный для создания самых разных программ, от текстовых диалогов, до серьезных веб серверов и 3d игр. При этом Python — простой и удобный язык. По сравнению с другими языками читать и составлять программы на Python совсем не сложно. В Python есть библиотеки готовых процедур, которые можно использовать в своих программах. Это позволяет создавать сложные программы быстро. Python мощный язык и подходит для создания серьезных программ. В функционал языка Python входит следующее:
работа с xml/html файлами;
работа с http запросами ;
GUI (графический интерфейс) ;
работа с изображениями, аудио и видео файлами;
программирование математических и научных вычислений.
В данном случае нас интересует применение Python в управлении мобильными роботами. Среда EV3 построена на базе процессора ARM9, и разработчики специально оставили архитектуру открытой. Это решение позволило устанавливать альтернативные прошивки, одной из которых стал образ для работы с MicroPython. Он позволяет использовать Python для программирования EV3, что делает работу с набором еще ближе к задачам из реальной жизни.
Чтобы подготовить и установить все необходимые инструменты для начала программирования в среде MicroPython, следующее оборудование:
компьютер под управлением ОС Windows 10 или MacOS;
доступ в Интернет и права доступа администратора Они необходимы только в процессе установки. Для записи и воспроизведения программ специальных прав доступа не требуется;
карта памяти microSD Вам потребуется карта ёмкостью от 4 до 32 Гбайт. Карты памяти microSD этого типа также известны как microSDHC. Рекомендуется использовать карты с Application Performance Class A1;
слот для карт памяти microSD в вашем ПК или устройство чтения карт памяти microSD Если ваш компьютер не оснащён слотом (micro) SD, вы можете использовать внешнее USBустройство чтения карт microSD;
кабель mini-USB, аналогичный тому, который входит в комплект поставки Базового набора LME EV3 Стандартная конфигурация данного оборудования изображена на рисунке 1.
Рис. 1. Оборудование для установки прошивки MicroPython
Подготовка компьютера. Для создания программ на языке MicroPython вы будете использовать редактор кода Visual Studio Code.
Выполняем следующие шаги в данной последовательности, чтобы загрузить, установить и настроить данное приложение.
загрузитередактор Visual Studio Code4
следуйте инструкциям на экране, чтобы установить приложение4
запустите V isual S tudio C ode 4;
откройте вкладку расширений (extensions tab);
установите расширение ev3 micropython, как показано на рисунке 2.
Рис. 2. Установка прошивки MicroPython
Для запуска программ MicroPython на микрокомпьютере EV3 необходимо устанавливать специальные инструменты на карту microSD. Если карта microSD содержит файлы, которые вы хотите сохранить, сначала создайте резервную копию её содержимого. В процессе установки всё содержимое карты microSD, в том числе предыдущие программы MicroPython, будет удалено.
Для установки инструментов MicroPython на карту памяти microSD выполните следующие действия:
загрузите образ EV3 MicroPython на карту microSD и сохраните его в удобном месте. Размер файла — приблизительно 360 Мбайт. Распаковывать файл не требуется;
скачайте и установите на карту microSD приложение для создания образов дисков, например Etcher;
вставьте карту microSD в соответствующий слот компьютера или устройство чтения карт.
запустите инструмент для создания образов дисков и следуйте инструкциям на экране, чтобы установить только что загруженный файл с изображением EV3 MicroPython.
После того как вы установили образ Ev 3 MicroPython на карту, ее можно вставить в слот блока Ev 3.
Рис. 3. Установка карты micro SD в слот микрокомпьютера Е V 3
Включите микрокомпьютер EV3, нажав тёмно-серую кнопку в центре. Процесс загрузки может занять несколько минут. Во время загрузки подсветка микрокомпьютера EV3 будет мигать оранжевым цветом, а на экране будет отображаться текстовое сообщение. Микрокомпьютер EV3 будет готов к работе, когда подсветка его клавиш станет зелёной. Чтобы отключить микрокомпьютер EV3, откройте раскрывающееся меню с помощью кнопки «Назад», нажав на центральную кнопку микрокомпьютера, затем выберите пункт Power Off, как показано на рисунке 4.
Рис. 4. Выключение микрокомпьютера Е V 3
Вы можете вернуться к встроенному ПО по умолчанию, восстановив предустановленные программы LEGO® в любое время. Для этого выполните следующие действия.
выключите микрокомпьютер EV3, следуя инструкциям выше.
подождите, пока экран и подсветка микрокомпьютера отключатся.
извлеките карту microSD.
включите микрокомпьютер EV3.
Теперь, когда компьютер и микрокомпьютер EV3 готовы, можно приступать к созданию программ. Для упрощения процесса создания и управления программами давайте рассмотрим, каким образом организованы проекты и программы MicroPython для роботов EV3. Программы хранятся в папках проекта, как показано на рисунке 2.1. Папка проекта — директория вашего компьютера, в которой содержится основная программа (main.py), а также дополнительные скрипты и файлы. Эта папка проекта, а также всё её содержимое, будет скопирована на микрокомпьютер EV3, на котором будет запущена основная программа. На следующем рисунке показано, как создать такой проект и как перенести его в микрокомпьютер EV3 (рис. 5).
Рис. 5. Создание нового проекта
Папка проекта содержит программу main.py и дополнительные ресурсы, такие как файлы звуков или модули MicroPython.
Чтобы перенести свою программу на модуль EV3, сначала нужно подключить его к компьютеру с помощью кабеля mini-USB и настроить подключение в редакторе Visual Studio Code.
Для этого выполните следующие действия:
включите микрокомпьютер ev3 ;
подключите микрокомпьютер ev3 к своему компьютеру с помощью кабеля mini-usb;
настройте usb-подключение, как показано на рисунке 6.
Рис. 6. Настройка USB-подключения микрокомпьютера EV3 к компьютеру
Чтобы запустить программу, нажмите клавишу F5. Вы также можете запустить программу вручную. Для этого перейдите на вкладку отладки и нажмите зеленую стрелку запуска. При необходимости после запуска программы вы можете остановить ее с помощью всплывающей панели инструментов. Вы также можете в любой момент остановить программу, нажав кнопку «Назад» на блоке EV3. Если во время выполнения программы какая-либо информация печатается с помощью команды печати, она будет отображаться в окне вывода.
Разберем пример небольшого программного кода. Для начала подключимся к нашему роботу Lego Ev 3.
Рис. 7. Подключение к мобильному роботу
Сначала инициализируем библиотеку модулей EV3 (листинг 1).
from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor, GyroSensor) from pybricks.parameters import Port, Stop, Direction, Color, ImageFile
from pybricks.tools import wait
from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import (Port, Stop, Direction, Button, Color,
SoundFile, ImageFile, Align)
from pybricks.tools import print, wait, StopWatch
from pybricks.robotics import DriveBase
# Основная программа пишется здесь
# Печатаем « Hello » в координате (60,50)
brick.display.text(«Hello», (60, 50))
# Выводим текущее значение зарядки аккумулятора
brick.display.text(«Voltage is: <>«.format(brick.battery.voltage()))
# Ждем пока не будет нажата любая кнопка
while not brick.buttons():
После запуска программного кода на дисплее робота будет отображаться: « Hello Word Voltage is 704».
Поддержка MicroPython делает платформу EV3 подходящей для обучения. Наборы EV3 показывают, что программирование – сложное, но интересное занятие, готовят к серьезным инженерным задачам и помогают сделать первый шаг к освоению технических специальностей.