Курс программирования робота ev3 pdf. Курс программирования робота EV3 в среде Lego Mindstorms EV3
Задача данного курса - познакомить вас с конструктором Lego mindstorms. Научить собирать базовые конструкции роботов, программировать их под определенные задачи, разобрать с вами базовые решения наиболее распространенных задач-соревнований.
Курс рассчитан на делающих первые шаги в мир робототехники с помощью конструктора Lego mindstorms. Хотя все примеры роботов в этом курсе сделаны с помощью конструктора Lego mindstorms EV3, программирование роботов объясняется на примере среды разработки Lego mindstorms EV3, тем не менее, владельцы Lego mindstorms NXT тоже могут присоединиться к изучению данного курса, и, надеемся, найдут для себя тоже полезное...
1.1. Что в наборе? Классификация деталей, крепление деталей между собой, главный блок, моторы, датчики
Давайте начнем знакомиться с конструктором Lego mindstorms EV3. Распечатав конструктор, мы найдем в нем множество разнообразных деталей. Если вы знакомы с традиционными кирпичиками Lego, но раньше вам не приходилось сталкиваться с наборами Lego серии Technic, ты, возможно, вы будете слегка обескуражены видом непривычных деталей. Однако, разобраться с ними совсем несложно. Итак, условно разделим все детали на несколько категорий. На рисунке представлены детали, называемые балками (иногда для этих деталей можно встретить название - бим (beam)) Балки исполняют роль каркаса (скелета вашего робота),
Рис. 1
Следующая группа деталей служит для соединения балок между собой, с блоком и датчиками. Детали, имеющие крестообразное сечение, называются осями (иногда штифтами) и служат для передачи вращения от моторов к колесам и шестерням. Детали, похожие на цилиндры (имеющие в сечении окружность) называются пинами (от англ. pin - шпилька),
Рис. 2
Представленный ниже рисунок демонстрирует вам различные варианты соединения балок с помощью пинов.
Рис. 3
Следующую группу деталей называют коннекторами. Их главная задача - соединение балок в различных плоскостях, изменение угла соединения деталей и подсоединение датчиков к роботу.
Рис. 4
Переходим к следующей группе деталей. Шестерни предназначены для передачи вращения от моторов к другим элементам конструкции робота. Как правило, это колеса, но в тоже время шестерни могут широко применяться и в различных конструкциях роботов, не предполагающих вращение. С ними мы непременно еще не раз встретимся при конструировании сложных механизмов.
Рис. 5
Ну и, конечно же, движение в пространстве нашему роботу обеспечивают различные колеса и гусеницы, представленные в наборе.
Рис. 6
Следующая группа деталей несет в себе декоративные функции. С их помощью мы можем украсить нашего робота, придать ему неповторимый вид.
Рис. 7
В набор Lego mindstorms EV3 входят два больших мотора. Моторы выполняют роль мышц или силовых элементов нашего робота. Большие моторы, наиболее часто используются для передачи вращения на колеса, тем самым, обеспечивая движение робота. Можно сказать, что эти моторы выполняют ту же роль, что и ноги человека.
Рис. 8
Один средний мотор, который также входит в набор Lego mindstorms EV3 выполняет роль движущей силы для различного навесного оборудования робота (клешни, модули захвата, различные манипуляторы) По аналогии с большими моторами отведем среднему мотору ту же роль, которую у нас выполняют руки.
Рис. 9
Датчики, входящие в набор Lego mindstorms, представляют роботу необходимую информацию из внешней среды. Главная задача программиста - научиться извлекать и анализировать информацию, поступающую с датчиков, а затем подавать верные команды на моторы для выполнения определенных действий.
Рис. 10
Ну и основным элементом нашего конструктора является главный блок EV3. В этом корпусе заключен мозг нашего робота. Именно здесь выполняется программа, получающая информацию с датчиков, обрабатывающая её и передающая команды моторам.
Рис. 11
1.2. Собираем робота, с помощью которого будем изучать данный курс
Настало время - собрать нашего первого робота.
На первом этапе конструкция нашего робота будет следующей:
- Два больших мотора, для того чтобы мы смогли научить нашего робота поворачивать
- Два ведущих колеса, на которые будут передаваться усилия моторов.
- Одно свободно вращающееся колесо или шаровая опора, которая будет придавать устойчивость нашему роботу.
- Один главный блок EV3, который будет хранить и выполнять нашу программу.
- Некоторое количество деталей для придания конструкции законченного вида.
Такой простейший робот называется роботом-тележкой.
Вы можете попробовать поэкспериментировать или собрать робота по предложенной инструкции в зависимости от версии вашего набора EV3:
Как только наш робот будет готов - начнем изучение среды программирования.
1.3. Знакомство со средой программирования
Первым делом загружаем среду программирования Lego mindstorms EV3. В главном меню программы выбираем: "Файл" - "Новый проект" или нажимаем "+" , показанный на рисунке стрелкой.
Рис. 12
В одном проекте может находиться множество программ. Для того, чтобы проект корректно загружался в нашего робота необходимо в названии проекта и программ использовать только буквы латинского алфавита! Давайте назовем наш проект lessons (уроки), а первую программу - lesson-1 (урок-1). Для того, чтобы дать название проекту, воспользуемся главным меню программы: "Файл" - "Сохранить проект как..." Чтобы изменить название программы - следует сделать двойной щелчок мышью на её названии (program) и вписать свое название.
Включим центральный блок нашего робота. Для этого нажмем на центральную (самую темную) кнопку блока. С помощью USB-кабеля, идущего в комплекте с конструктором, подключим робота к компьютеру. Успешное подключение робота отразится на вкладке аппаратных средств программного обеспечения EV3 в правом нижнем углу программы.
Рис. 13
Если подключение робота прошло успешно, то приступим к программированию и создадим нашу первую программу.
1.4. Наша первая программа!
Давайте научим нашего робота двигаться вперед на определенное расстояние. В нижней части экрана находится палитра программирования, каждому цвету палитры соответствуют различные группы программных блоков. Выберем зеленую палитру "Действие" . Она содержит блоки управления моторами, блок вывода информации на экран, блок управления звуком и кнопками контроллера EV3 (главного блока). Выберем блок "Рулевое управление и перетащим его в область программирования (центральная область программы).
Рис. 14
Каждая программа состоит из цепочки блоков, задающих определенное действие или проверяющих различные условия. Каждый блок имеет множество различных параметров. Первый, оранжевый блок с зеленым треугольником внутри называется - "Начало" . Именно с него начинается любая программа для нашего робота. Второй блок установили мы. Повторю - он называется "Рулевое управление" . Его назначение - одновременное управление двумя моторами.
Рис. 15
Но, если вы собирали робота по инструкции, предложенной выше, то, наверное, обратили внимание, что в ней отсутствует схема подключения моторов и датчиков. Настало время с этим разобраться. Блок EV3 имеет 4 порта, обозначенных цифрами: 1 , 2 , 3 , и 4 . Эти порты служат для подключения только датчиков. Для подключения моторов служат порты, обозначенные буквами: A , B , C и D . Можно подключать моторы в любые свободные порты, предназначенные для них. Но в случае управляемой тележки рекомендовано подключать моторы в порты: B и C . Давайте сейчас возьмем два соединительных кабеля длиной 25 см, левый мотор подключим к порту B , а правый - к порту C . Именно это подключение выбрано по умолчанию в блоке "Рулевое управление". Специальная кнопка, обозначенная стрелкой, отвечает за режим работы блока. Для первой программы выберем режим: "Включить на количество оборотов" . Значение 0 под черной стрелочкой на блоке означает прямолинейное движение, когда оба мотора крутятся с одинаковой скоростью. Число 75 задает мощность моторов, чем больше это значение, тем быстрее поедет наш робот. Цифра 2 задает количество оборотов каждого из моторов, на которое они должны провернуться.
Итак, наша первая программа готова. Загружаем ее в нашего робота. Для этого нажимаем кнопку "Загрузить" на вкладке аппаратных средств и отсоединяем USB-кабель от робота.
Рис. 16
Устанавливаем робота на ровную поверхность. С помощью стрелок на блоке EV3 заходим в папку нашего проекта, выбираем программу lesson-1 и центральной кнопкой блока EV3 запускаем ее на выполнение.
Вершиной творения компании Lego стал выпуск программируемых конструкторов LEGO Mindstorms Ev3. Игрушка предназначена для детей возрастом более десяти лет.
Сейчас mindstorms ev3 купить можно без особых проблем в специальных магазинах или в Интернете. Они легко программируются на выполнение определенных действий.
Установка среды программирования
Перед тем как начать писать команды для робота, нужно установить программное обеспечение.
Системные требования ПК для работы с lego mindstorms ev3:
- ОС Windows XP, 7, 8 или MacOs (10.6-10.8);
- 2Гб оперативки и 750 Мб на диске.
Устанавливая среду с помощью USB, выбираем версию для учителя или учащегося.
После установки создаем проект, который отображается в виде папки. В панели управления выбираем, что мы хотим создавать, программы или провести эксперимент. Эксперимент рекомендуют создавать для изучения работоспособности датчиков.
Программа управления роботом состоит из блоков, последовательных операций которые он исполняет, в свою очередь каждый отдельный блок имеет свой режим. Например, у блока управления мотором режимом является возможность останавливаться. Детально изучите все обозначения, которые нанесены на экран.
На экране размещено меню, в которое входят вкладки:
- действие;
- управление операторами;
- датчик;
- операции с данными;
- мои блоки и др.
С помощью данного меню можно запрограммировать робота на разные действия. Например, во вкладке, которая отвечает за действие разных механизмов, можно настроить режим мотора на движение, остановку или включение. Там можно задать время, количество и угол поворота.
В блоке «звук» можно запрограммировать робота на воспроизведение звуковых сигналов. Эти сигналы можно закачать или записать с помощью микрофона. Важным элементом управления программой является часть меню, которое управляет операторами. В нем вы можете управлять действием самой программы.
Здесь вы можете дать такие команды программе:
- начать ожидать;
- повторение цикла;
- переключиться между блоками;
- закончить цикл.
Lego mindstorms ev3 многозадачный, он вмещает несколько последовательностей команд. Вы можете запрограммировать не только свои действия в программу, но и их последовательность выполнения.
Комбинируя все возможные команды соответственного меню, вы можете создавать сложные траектории и типы поведения конструктора.
LEGO Education Mindstorms EV3: Программирование Роборуки (Robohand H25):
Программные блоки панели "Действия" были рассмотрены в предыдущих частях обзора, а в данной статье я расскажу о блоках со вкладки "Управление операторами".
Эти блоки можно представить в качестве "регулировщиков" программы: они прикажут остановиться и продолжить движение программы, перейти на соседнюю ветку или идти по кругу.
По сравнению с NXT было добавлено 2 новых блока:
- Начало - в NXT начало программы было единым и задавалось сразу при открытии программы.
- Прерывание цикла - в NXT такого блока просто не было. Если требовалось реализовать похожий функционал, то приходилось использовать переменные.
- Начало
- Ожидание
- Переключатель
- Прерывание цикла
Блок "Начало"
Возможно, вы обратили внимание на то, что первый блок всех EV3 программ - блок с зеленой стрелкой. Этот блок - "Начало". Без него не обойдется ни одна программа - именно с него и начинается выполнение команд. Если перед последовательностью блоков не поставить "Начало", то такая программа выполняться не будет.
Например, по программе, представленной ниже, робот будет кружится вокруг оси (будет выполняться верхняя последовательность действий), но не будет проигрывать аудио файлы и зажигать подсветку кнопок (нижняя последовательность без блока "Начало" не активна):
EV3 поддерживает многозадачность, т.е. программа может содержать больше одной последовательности команд. Причем эти последовательности могут иметь свой собственный блок "Начало" или выходить из одного "Начала":
Все такие последовательности будут выполняться одновременно.
Замечу, что зеленая стрелка на блоке - это не декоративный элемент. Если блок подключен к компьютеру (неважно как: через usb, wi-fi или bluetooth), то нажатие на стрелку запустит данную последовательность на выполнение.
Блок "Ожидание"
Этот блок тоже является одним из самых используемых. На нем программа "зависает" - последующие блоки программы не выполняются - и ждет определенное количество времени или определенного значения датчика.
У "Ожидание" большое число режимов, которое может испугать:
Но, на самом деле, все довольно просто. Все режимы можно разделить на категории:
- по времени - блок ждет указанное количество секунд, прежде чем начнет выполнять следующие блоки
- по показанию датчика:
- сравнение - блок ожидает конкретное показание датчика, указанное в блоке
- изменить - блок ожидает, когда показание датчика изменится на указанную величину, по сравнению с начальным значением. Причем, можно выбрать не только размер величины, но и ее направление - убывание значения, его увеличение или в любую сторону.
В первой программе изменяется подсветка кнопок. Одну секунду подсветка будет гореть зеленым, затем 1 секунду красным и после этого переключится на стандартный режим - мигающий зеленый:
Вторая программа представляет из себя начало классического решения в соревновании "Кегельринг": робот кружится вокруг своей оси до тех пор, пока не увидит перед собой банку:
Следующая программа включает мотор А, и после того, как он сделает 5 оборотов, выключает его:
Работа этого блока с bluetooth ничем не отличается от работы с любым сенсором. Например, следующая программа ожидает сообщения "HI" и после этого зажигает подсветку зеленым и проигрывает звуковой файл:
Это особый блок - внутрь его можно вставлять другие блоки. Блоки, находящиеся внутри, будут повторяться. Режимы блока "Цикл" задают способ, который определяет, когда цикл должен завершиться. Большинство этих режимов мы уже знаем по предыдущему блоку ожидания, однако добавилось несколько новых:
- Неограниченный - такой цикл будет выполняться, пока не будет принудительно завершена программа
- Подсчет - цикл будет повторяться заданное число раз
- Логическое значение - цикл будет повторяться, пока заданное значение не будет истиной
- Время - цикл будет повторяться заданное время
- Показание датчика:
- сравнение - цикл будет повторяться, пока датчик не примет заданное значение
- изменить - цикл будет повторяться, пока показание датчика не изменится на указанную величину, по сравнению с начальным значением.
Рассмотрим примеры. По этой программе робот будет ехать прямо и поворачивать, до тех пор, пока программу не остановят (используется бесконечный цикл):
Следующая программа использует датчик касания. Пока он не нажат, робот вращает средним мотором сначала по часовой, потом против часовой стрелки. После нажатия на датчик мотор останавливается:
Цикл со счетчиком позволяет проиграть ноту 10 раз:
С режимом логического значения придется использовать еще не изученные блоки опроса датчиков. Данная программа заставляет робота ехать вперед до тех пор, пока он не увидит предмет на расстоянии, меньше 20 см (первый блок цикла) или не наткнется на препятствие датчиком касания (второй блок цикла). Результат логической операции "ИЛИ" дает третий блок цикла:
Блок "Переключатель"
Аналогичный блок есть и в NXT, он позволяет в зависимости от значения переменной или показания датчика выполнять разные последовательности действий.
После выполнения данной последовательности действий, программа выполняет блоки, идущие за "Переключателем".
Режим данного блока определяет, значение какого датчика или переменной будет использоваться. Используются все те же режимы, что и блок "Цикл": можно использовать любой датчик (цвета, гироскопический, инфракрасный, ультразвуковой, вращения мотора и другие), числовое или текстовое значение, сообщение bluetooth.
Например, по данной программе робот сначала будет вращаться вокруг своей оси 5 оборотов мотора, а затем, в зависимости от показаний датчика гироскопа, ехать вперед или назад. Если угол, определяемый гироскопом, будет меньше 90 градусов, тогда робот поедет вперед. Если же угол меньше 90 градусов - тогда робот поедет назад.
Следующая программа представляет собой реализацию простейшего релейного регулятора для движения по черной линии:
В обоих предыдущих примерах блок "Переключатель" содержал только 2 варианта развития событий. Но на самом деле, данный блок может иметь и больше вариантов. Например, если робот будет определять цвет предмета, то он может выбирать из куда большего числа вариантов:
В этой программе робот определяет красный, синий, зеленый и отсутствие цвета. Он будет называть цвета, а также для красного и зеленых цветов включать подсветку кнопок, а по синему цвету поедет вперед. Можно добавить оставшиеся цвета, которые может определить датчик - черный, желтый, белый, коричневый - с помощью маленькой кнопки "+", расположенной у верхнего варианта (она обведена красным).
При большом количестве вариантов (как в примере выше) блок "Переключатель" становится довольно громоздким и работать с ним не удобно. В этом случае блок можно переключить в "плоский режим":
Кнопка, переключающая режимы "плоский / подробный", обведена красным.
Блок "Прерывание цикла"
Этот блок новый, в NXT подобного блока не было. Он позволяет выходить из цикла - оставшиеся блоки цикла выполняться не будут, и программа перейдет к блокам после цикла. В "шапке" блока задается имя цикла, который должен быть завершен.
Например, цикл в программе должен повториться 5 раз, но если расстояние до предмета станет больше 50 сантиметров, то произойдет досрочный выход из цикла и робот проиграет звуковой тон:
Особенностью данного блока является то, что он не обязательно должен находится внутри прерываемого цикла. Например, следующая программа выводит число повторений цикла до тех пор, пока яркость отраженного света больше 50. Но если в процессе выполнения программы будет нажат датчик касания, то цикл прекратится и программа остановится:
На втором занятии мы детальнее познакомимся со средой программирования и подробно изучим команды, задающие движение нашему роботу-тележке, собранному на первом занятии. Итак, давайте запустим среду программирования Lego mindstorms EV3, загрузим наш проект lessons.ev3, созданный ранее и добавим в проект новую программу - lesson-2-1. Программу можно добавить двумя способами:
- Выбрать команду "Файл"-"Добавить программу" (Ctrl+N) .
- Нажать "+" на вкладке программ.
Рис. 1
2.1. Палитры программирования и программные блоки
Давайте теперь обратим свой взгляд в нижний раздел среды программирования. Из материала первого занятия мы уже знаем, что здесь находятся команды для программирования робота. Разработчики применили оригинальный прием и, сгруппировав программные блоки, присвоили каждой группе свой цвет, назвав группы палитрами.
Зеленая палитра называется: "Действие" :
Рис. 2
На данной палитре расположены программные блоки управления моторами, блок вывода на экран, блок управления индикатором состояния модуля. Сейчас мы начнем изучение этих программных блоков.
2.2. Зеленая палитра - блоки действия
Первый программный блок зеленой палитры предназначен для управления средним мотором, второй блок - для управления большим мотором. Так как параметры этих блоков идентичны - рассмотрим настройку на примере блока - большой мотор.
Рис. 3
Для правильной настройки блока управления большим мотором мы должны:
- Выбрать порт, к которому подключен мотор (A, B, C или D) (Рис. 3 поз. 1)
- Выбрать режим работы мотора (Рис. 3 поз. 2)
- Настроить параметры выбранного режима (Рис. 3 поз. 3)
Чем же отличаются режимы? Режим: "Включить" включает мотор с заданным параметром "Мощность" и после этого управление передается следующему программному блоку программы. Мотор будет продолжать вращаться, пока не будет остановлен следующим блоком "Большой мотор" с режимом "Выключить" или следующий блок "Большой мотор" не будет содержать другие параметры выполнения. Режим "Включить на количество секунд" включает большой мотор с установленной мощностью на указанное количество секунд, и только по завершению времени мотор остановится, а управление в программе перейдет к следующему программному блоку. Аналогично поведет мотор себя в режимах "Включить на количество градусов" и "Включить на количество оборотов" : только после выполнения установленного вращения мотора, он остановится и управление в программе перейдет к следующему блоку.
Параметр мощность (на Рис. 3 мощность установлена в 75) может принимать значения от -100 до 100. Положительные значения мощности задают вращение мотора по часовой стрелке, отрицательные - против часовой. При значении мощности равном 0 мотор вращаться не будет, чем "выше" значение мощности, тем быстрее вращается мотор.
Параметр мощность задается только целыми значениями, параметры: секунды, градусы, обороты могут принимать значения с десятичной дробью. Но следует помнить, что минимальный шаг вращения мотора равен одному градусу.
Отдельно следует сказать о параметре "Тормозить в конце" . Данный параметр, если установлен в значение "Тормозить" заставляет мотор тормозить после выполнения команды, а если установлен в значение "Двигаться накатом" , то мотор будет вращаться по инерции, пока сам не остановится.
Следующие два программных блока "Рулевое управление" и реализуют управление парой больших моторов. По умолчанию левый большой мотор подключается к порту "В" , а правый - к порту "С" . Но вы можете в настройках блока поменять порты подключения в соответствии с требованиями вашей конструкции (Рис. 4 поз. 1 ).
Рис. 4
Параметр "Рулевое управление" (Рис. 4 поз. 2 ) может принимать значения от -100 до 100. Отрицательные значения параметра заставляют робота поворачивать налево, при значении равном 0 робот движется прямо, а положительные значения заставляют робота поворачивать направо. Стрелка над числовым параметром меняет свою ориентацию в зависимости от значения, подсказывая тем самым направление движения робота (Рис. 5 ).
Рис. 5
Программный блок "Независимое управление моторами" похож на программный блок "Рулевое управление" . Он также управляет двумя большими моторами, только вместо параметра "Рулевое управление" появляется возможность независимого управления мощностью каждого мотора. При равном значении параметра "Мощность" для левого и правого мотора робот будет двигаться прямолинейно. Если на один мотор подать отрицательное значение мощности (например -50), а на второй - положительное значение (например 50), то робот будет разворачиваться на месте (Рис. 6 ).
Рис. 6
Режимы работы этих блоков аналогичны режимам блока управления одним мотором, поэтому дополнительного описания не требуют...
2.3. Прямолинейное движение, повороты, разворот на месте остановка
Итак, теперь мы можем написать программу движения робота по какому-либо маршруту.
Задача 1: Проехать прямолинейно вперед на 4 оборота двигателя. Развернуться. Проехать на 720 градусов.
Решение (Рис. 7 ):
- Используя программный блок "Рулевое управление" проехать вперед на 4 оборота.
- Используя программный блок "Независимое управление моторами" развернуться на месте (значение градусов придется подобрать экспериментально).
- Используя программный блок "Рулевое управление" проехать вперед на 720 градусов.
Примечание: Почему при развороте пришлось подбирать значение градусов в блоке 2 ?. Разве не 360 градусов - искомая величина? Нет, если мы зададим значение параметра "Градусы" равным 360 , то тем самым заставим на искомую величину провернуться валы левого и правого моторов нашего робота. На какой угол провернется робот вокруг своей оси - зависит от размера (диаметра) колес и расстояния между ними. На Рис. 7 значение параметра "Градусы" равно 385 . Данное значение позволяет роботу, собранному по инструкции small-robot 45544 развернуться вокруг своей оси. Если у вас другой робот, то вам придется подобрать другое значение. Можно ли это значение найти математически? Можно, но об этом мы поговорим позднее.
Рис. 7
Задача 2: Установите на ровной поверхности какое-либо препятствие (банку, кубик, небольшую коробку), отметьте место старта вашего робота. Создайте в проекте новую программу: lesson-2-2, позволяющую роботу объехать вокруг препятствия и вернуться к месту старта.
Сколько программных блоков вы использовали? Поделитесь своим успехом в комментарии к уроку...
2.4. Экран, звук, индикатор состояния модуля
Программный блок "Экран" позволяет выводить текстовую или графическую информацию на жидкокристаллический экран блока EV3. Какое это может иметь практическое применение? Во-первых, на этапе программирования и отладки программы можно выводить на экран текущие показания датчиков во время работы робота. Во-вторых, можно выводить на экран название промежуточных этапов выполнения программы. Ну а в-третьих, с помощью графических изображений можно "оживить" экран робота, например с помощью мультипликации.
Рис. 8
Программный блок "Экран" имеет четыре режима работы: режим "Текст" позволяет выводить текстовую строку на экран, режим "Фигуры" позволяет отображать на экране одну из четырех геометрических фигур (прямая, круг, прямоугольник, точка), режим "Изображение" может вывести на экран одно изображение. Изображение можно выбрать из богатой коллекции изображений или нарисовать свое, используя редактор изображений. Режим "Окно сброса настроек" сбрасывает экран модуля EV3 к стандартному информационному экрану, показываемому во время работы программы.
Рис. 9
Рассмотрим параметры программного блока "Экран" в режиме "Текст" (Рис. 9 поз.1) . Строка, предназначенная для вывода на экран, вводится в специальное поле (Рис. 9 поз. 2) . К сожалению, в поле ввода текста можно вводить только буквы латинского алфавита, цифры и знаки препинания. Если режим "Очистить экран" установлен в значение "Истина" , то экран перед выводом информации будет очищен. Поэтому, если вам требуется объединить текущий вывод с информацией уже находящейся на экране, то установите этот режим в значение "Ложь" . Режимы "X" и "Y" определяют точку на экране, с которой начинается вывод информации. Экран блока EV3 имеет 178 пикселей (точек) в ширину и 128 пикселей в высоту. Режим "X" может принимать значения от 0 до 177, режим "Y" может принимать значения от 0 до 127. Верхняя левая точка имеет координаты (0, 0), правая нижняя (177, 127)
Рис. 10
Во время настройки программного блока "Экран" можно включить режим предварительного просмотра (Рис. 9 поз. 3) и визуально оценить результат настроек вывода информации.
В режиме "Фигуры" (Рис. 11 поз. 1 ) настройки программного блока меняются в зависимости от типа фигуры. Так при отображении круга необходимо будет задать координаты "X" и "Y" центра окружности, а также значение "Радиуса" . Параметр "Заполнить" (Рис. 11 поз. 2) отвечает за то, что будет отображен либо контур фигуры, либо внутренняя область фигуры будет заполнена цветом, заданным в параметре "Цвет" (Рис. 11 поз. 3) .
Рис. 11
Для отображения прямой необходимо задать координаты двух крайних точек, между которыми располагается прямая.
Рис. 12
Чтобы отобразить прямоугольник следует задать координаты "X" и "Y" левого верхнего угла прямоугольника, а также его "Ширину" и "Высоту" .
Рис. 13
Отобразить точку проще всего! Укажите лишь её координаты "X" и "Y".
Режим "Изображение" , наверное, самый интересный и самый используемый режим. Он позволяет выводить на экран изображения. Среда программирования содержит огромную библиотеку изображений, отсортированную по категориям. В дополнение к имеющимся изображениям вы всегда можете создать свой рисунок и, вставив его в проект, вывести на экран. ("Главное меню среды программирования" - "Инструменты" - "Редактор изображения") . Создавая своё изображение, вы можете также вывести на экран символы русского алфавита.
Рис. 14
Как вы видите - отображению информации на экране главного модуля EV3 среда программирования придает огромное значение. Давайте рассмотрим следующий важный программный блок "Звук" . С помощью этого блока мы можем выводить на встроенный динамик блока EV3 звуковые файлы, тона произвольной длительности и частоты, а также музыкальные ноты. Давайте рассмотрим настройки программного блока в режиме "Воспроизвести тон" (Рис. 15) . В этом режиме необходимо задать "Частоту" тона (Рис. 15 поз. 1) , "Продолжительность" звучания в секундах (Рис. 15 поз. 2) , а также громкость звучания (Рис. 15 поз. 3) .
Рис. 15
В режиме "Воспроизвести ноту" вам вместо частоты тона необходимо выбрать ноту на виртуальной клавиатуре, а также установить длительность звучания и громкость (Рис. 16) .
Рис. 16
В режиме "Воспроизвести файл" вы можете выбрать один из звуковых файлов из библиотеки (Рис. 17 поз. 1) , либо, подключив к компьютеру микрофон, с помощью Редактора звука ("Главное меню среды программирования" - "Инструменты" - "Редактор звука") записать собственный звуковой файл и включить его в проект.
Рис. 17
Давайте отдельно рассмотрим параметр "Тип воспроизведения" (Рис. 17 поз. 2) , общий для всех режимов программного блока "Звук" . Если данный параметр установлен в значение "Ожидать завершения" , то управление следующему программному блоку будет передано только после полного воспроизведения звука или звукового файла. В случае установки одного из двух следующих значений начнется воспроизведение звука и управление в программе перейдет к следующему программному блоку, только звук или звуковой файл будет воспроизведен один раз или будет повторяться, пока не его не остановит другой программный блок "Звук" .
Нам осталось познакомиться с последним программным блоком зеленой палитры - блоком . Вокруг кнопок управления модулем EV3 смонтирована цветовая индикация, которая может светиться одним из трех цветов: зеленым , оранжевым или красным . За включение - выключение цветовой индикации отвечает соответствующий режим (Рис. 18 поз. 1) . Параметр "Цвет" задает цветовое оформление индикации (Рис. 18 поз. 2) . Параметр "Импульсный" отвечает за включение - отключение режима мерцания цветовой индикации (Рис. 18 поз. 3) . Как можно использовать цветовую индикацию? Например, можно во время различных режимов работы робота использовать различные цветовые сигналы. Это поможет понять: так ли выполняется программа, как мы запланировали.
Рис. 18
Давайте используем полученные знания на практике и немного "раскрасим" нашу программу из Задачи 1.
Задача 3:
- Воспроизвести сигнал "Start"
- Включить зеленую немигающую цветовую индикацию
- "Forward"
- Проехать прямолинейно вперед на 4 оборота двигателя.
- Включить оранжевую мигающую цветовую индикацию
- Развернуться
- Включить зеленую мигающую цветовую индикацию
- Отобразить на экране изображение "Backward"
- Проехать на 720 градусов
- Воспроизвести сигнал "Stop"
Попробуйте решить задачу 3 самостоятельно, не подглядывая в решение! Удачи!
Л.Ю. Овсяницкая, Д.Н. Овсяницкий, А.Д. Овсяницкий
Курс программирования робота EV3
в среде Lego Mindstorms EV3
Издание второе, переработанное и дополненное
УДК 004.42+004.896
Овсяницкая, Л.Ю. Курс программирования робота Lego
Mindstorms EV3 в среде EV3: изд. второе, перераб. и допол. /
Л.Ю. Овсяницкая, Д.Н. Овсяницкий, А.Д. Овсяницкий. – М.:
«Перо», 2016. – 296 с.
ISBN 978-5-906862-76-1
Книга посвящена программированию робота EV3 в среде Lego Mindstorms EV3. Работа является результатом многолетнего опыта непосредственного участия авторов в региональных, всероссийских и международных состязаниях по робототехнике и педагогической деятельности, направленной на подготовку учителей, преподавателей и тренеров по данной тематике.
Книга будет полезна педагогам начального, среднего, высшего и дополнительного образования, учащимся, студентам и всем, интересующимся вопросами робототехники.
Рецензент:
доктор физико-математических наук, профессор А.Ф. Шориков.
ISBN 978-5-906862-76-1 © Л.Ю. Овсяницкая, Д.Н. Овсяницкий, А.Д. Овсяницкий, 2016 Оглавление Введение
Глава 1. Характеристики робота.
Создание и запуск первого проекта 7
1.1. Краткая характеристика роботизированных платформ. Обзор среды программирования Lego Mindstorms EV3
1.2. Способы подключения робота к компьютеру. Обновление прошивки блока EV3. Загрузка программ в блок EV3
Глава 2. Программирование робота
2.1. Моторы. Программирование движений по различным траекториям
2.2. Работа с подсветкой, экраном и звуком
2.2.1. Работа с экраном
2.2.2. Работа с подсветкой кнопок на блоке EV3
2.2.3. Работа со звуком
2.3. Программные структуры
2.3.1. Структура Ожидание
2.3.2. Структура Цикл
2.3.3. Структура Переключатель
2.4. Работа с данными
2.4.1. Типы данных. Проводники
2.4.2. Переменные и константы
2.4.3. Математические операции с данными
2.4.5. Работа с массивами
2.4.6. Логические операции с данными
2.5. Работа с датчиками
2.5.1. Датчик касания
2.5.2. Датчик цвета
2.5.3 Гироскопический датчик
2.5.4. Ультразвуковой датчик
2.5.5. Инфракрасный датчик и маяк
2.5.6. Датчик Вращение мотора (определение угла/количества оборотов и мощности мотора)
2.5.7. Кнопки управления модулем
2.6. Работа с файлами
Курс программирования робота Lego Mindstorms EV3 в среде EV3
2.7. Совместная работа нескольких роботов
2.7.1. Соединение роботов кабелем USB
2.7.2. Связь роботов с помощью Bluetooth-соединения............. 207
2.8. Полезные блоки и инструменты
2.8.1. Блок «Поддерживать в активном состоянии»
2.8.2. Блок «Остановить программу»
2.8.3. Создание подпрограмм
2.8.4. Запись комментариев
2.8.5. Использование проводного ввода порта
Глава 3. Основные виды соревнований и элементы заданий.
3.1. Соревнования Сумо
3.2. Кегельринг
3.3. Слалом (объезд препятствий)
3.4. Программирование движения по линии
3.4.1. Алгоритм движения по линии «Зигзаг» с одним и двумя датчиками цвета
3.4.2. Алгоритм «Волна»
3.4.3. Алгоритм автоматической калибровки датчика цвета..... 258
3.5. Пропорциональное линейное управление
3.5.1. Движение по линии на основе пропорционального управления
3.5.2. Поиск и подсчёт перекрёстков при пропорциональном управлении движением по линии
3.5.3. Проезд инверсии
3.5.4. Движение робота вдоль стены
3.6. Поиск цели в лабиринте
Глава 4. Обновление встроенного ПО и перезапуск блока EV3.
286 Глава 5. Использование сторонних датчиков
5.1. Работа с HiTech датчиком цвета
5.2. Использование других датчиков
Заключение
Перечень проектов Проект «Верная собачка» 90 Проект «Спортивное табло» 98 Проект «Автофиниш» 102 Проект «60 секунд» 109 Проект «Запись и считывание цветного штрих-кода» 120 Проект «Сортировка массива методом пузырька» 123 Проект «Умный дом» 153 Проект «Упрямый робот» 160 Проект «Робот с дистанционным управлением» 182 Проект Мультипликационная игра на экране блока EV3 «Поймай снежок» 191 Проект «Построение 3D карты поверхности» 197 Проект «EV3 – музыкальный синтезатор» 203 Курс программирования робота Lego Mindstorms EV3 в среде EV3 изображение катушки (рис. 1.1.11б). Блок станет активным (ярким) (рис. 1.1.11в).
–  –  –
Рисунок 1.1.
12. Параллельные программы Для масштабирования изображений (рис. 1.1.13 а,б) используются стандартные для MSWindows сочетания клавиши Ctrl и колеса прокрутки мыши или значки в правом верхнем углу окна:. Масштабирование используется при навигации в больших программах, копировании определённых блоков и многом другом.
Курс программирования робота Lego Mindstorms EV3 в среде EV3 Блоки Большой мотор и Средний мотор Первый блок палитры называется Средний мотор, второй – Большой мотор. Блоки служат для управления одним мотором и имеют одинаковый функционал.
Рассмотрим структуру блоков на примере блока большого мотора (рис. 2.1.4).
–  –  –
Рисунок 2.1.
4. Блок управления большим мотором Прежде всего щёлкните по букве, обозначающей название порта, и выберите название порта, к которому подключён мотор.
Рассмотрим подробнее каждый управляющий элемент.
1. Выбор режима работы:
а) включить (рис. 2.1.5);
–  –  –
Рисунок 2.4.
3.4. Программа реализации проекта «60 секунд»
Задания для самостоятельной работы Добавьте на экран изображение циферблата часов.
Добавьте по аналогии минутную и часовую стрелки.
2.4.4. Другие блоки работы с данными
–  –  –
Прежде чем начать работу с массивами, необходимо их инициализировать, т.е. указать тип (числовой или логический) и присвоить имя.
Данные в массив можно вносить в ручном или автоматическом режиме (считывая показания с датчиков). Для создания массива необходимо использовать блок Переменная.
Создание массива. Запись массива в переменную
Для того чтобы создать и заполнить массив, необходимо:
(а) перенести на рабочее поле блок Переменная и определить её режим (Записать) и тип (числовой или логический массив);
Формирование Формирование числового массива логического массива
–  –  –
Рисунок 2.5.
3.3. Режимы работы гироскопического датчика Важно!
Иногда (достаточно часто!) при работе с гироскопическим датчиком можно наблюдать следующее: при запущенной программе робот находится в неподвижном состоянии, а значение угла постоянно увеличивается (дрифт), скорость увеличения может составить более 1 градуса в секунду!
Нарастание значений датчика Глава 2. Программирование робота 177 Если маяк находится очень далеко (дальше 1 м), значение измерения будет 100, если очень близко (минимум 1 см) – 0. Промежуточные результаты также не соответствуют сантиметрам.
В том случае, когда маяк расположен прямо перед датчиком, относительный результат измерения угла будет равен 0, максимальное расположение маяка слева, против часовой стрелки -25 (максимальный определяемый угол отклонения приблизительно 100 градусов), справа, по часовой стрелке 25 (рис. 2.5.5.5).
Рисунок 2.5.
5.5. Положение ИК-маяка относительно ИКдатчика Рассмотрим примеры программ. Расположите маяк перед роботом, включите его и направьте в сторону робота.
Светодиодный индикатор включится и будет гореть. Маяк будет непрерывно передавать сигнал. На блоке инфракрасного датчика установите тот же канал, который установили на маяке. Датчик будет обнаруживать маяк только на том канале, который вы укажите в своей программе.
Маяк выключается, если не используется в течение часа.
На рис. 2.5.5.6 показан выбор режима работы с маяком.
Курс программирования робота Lego Mindstorms EV3 в среде EV3 использованием программы MS Excel.
Робот вращается и в каждый момент времени записывает значение угла поворота и расстояние до поверхности.
Решение:
1. Производим сброс значений датчика гироскопа.
Вставляем цикл 01, условие завершения – время (3 сек.).
2. В цикле робот вращается и считывает информацию с ультразвукового и гироскопического датчиков. Показания объединяются в программном блоке Текст, разделяясь запятой.
3. Результат измерений в каждом шаге цикла записывается в файл Map.
4. Устанавливаем паузу 0,25 сек. После окончания цикла закрываем файл.
Внимание! Используя гироскопический датчик, при включении обращайте внимание на наличие дрейфа показаний (см.
п. 2.5.3 для удаления дрейфа).
Глава 2. Программирование робота 213 движения и остановке подавайте последовательно каждому вагончику.
2. «Вокально-инструментальный ансамбль»
Задача – исполнение музыкального произведения c ансамблем. Первый робот EV3 – дирижёр, который раздаёт команды по Bluetooth остальным роботам-музыкантам и роботам-певцам, когда воспроизводить их музыкальные партии. Робота-дирижёра можно оснастить дирижёрской палочкой, двигающейся вверх-вниз и поворачивающейся в сторону робота, который начинает воспроизведение. Роботдирижёр по совместительству может, например, солировать.
3. «Танцевальный ансамбль»
Задача – создание робо-ансамбля. Первый робот, раздающий команды по Bluetooth – солист. Остальные роботы отрабатывают команды. Программируйте различные виды танцев – хоровод роботов («Паровозик»), медленные и быстрые танцы.
4. «Утренняя гимнастика»
Задача – одновременное выполнение по команде первого робота гимнастических упражнений.
2.8. Полезные блоки и инструменты 2.8.1. Блок «Поддерживать в активном состоянии»
По истечении определённого времени и в случае, когда мы не обращаемся к роботу, а робот не выполняет никаких операций, он выключается (в терминах EV3 – переходит в спящий режим). Это вызывает неудобство при работе с программами, рассчитанными на длительные ожидания каких-либо процессов. Мы можем установить время перехода в спящий режим непосредственно на блоке (существует возможность установить время до выключения: 2 мин, Курс программирования робота Lego Mindstorms EV3 в среде EV3 создать несколько вариантов программ и выбирать тактику поединка. Например, если перед нами мощный, но медленный робот, можно запустить программу, по которой наш робот будет атаковать соперника быстро и сбоку; если робот соперника в поисках нашего робота всегда поворачивается направо, нужно запускать программу, объезжающую и атакующую его слева.
Робот может иметь один или два датчика ультразвука, чтобы определять положение противника без лишних поворотов. Особенно интересными получаются раунды, в которых соревнуются примерно равные по силе или скорости роботы, в этом случае исход решают миллиметры и секунды!
Победителем становится тот участник, который смог собрать крепкую и надёжную конструкцию, написал грамотную программу (или программы) и выбрал правильную стратегию. Именно сочетание этих факторов делают процесс подготовки к состязаниям увлекательным, а сами соревнования очень зрелищными и захватывающими!
Приведём пример алгоритма программы для роботасумоиста.
Остановка робота.
2. Робот поворачивается до тех пор, пока не увидит датчиком ультразвука робота соперника (пока значение датчика не станет меньше 100 см), что соответствует углу поворота 120-180 градусов. Остановка робота.
3. Создаём цикл условие завершения 01, – Неограниченный.
4. В цикл 01 вставляем цикл 02, условие завершения которого – логическое значение: цикл будет выполняться, пока на вход Условие завершения не будет подано значение Истина.
Глава 3. Основные виды соревнований и элементы заданий 245 100 25 + 18 =.
Найдём скорость левого колеса: V1=58.
Для реализации алгоритма установите впереди робота по центру ультразвуковой датчик и подключите его в порт 4.
Вниз направьте датчик цвета, расположите его слева от линии и подключите в порт 2. На рис. 3.3.3 представлена программа объезда препятствия. Обратите внимание, что после обнаружения препятствия робот останавливается и резко поворачивает направо для того, чтобы съехать с линии, перпендикулярной препятствию, и объехать предмет по заданному радиусу.
Задания для самостоятельной работы
Запрограммируйте траектории:
а) объезд нескольких препятствий с одним радиусом;
б) объезд препятствий с разными радиусами;
в) езда «восьмёркой».
Глава 3. Основные виды соревнований и элементы заданий 275 Рисунок 3.
5.3.2. Программа проезда инверсной траектории движения Глава 3. Основные виды соревнований и элементы заданий 285 Рисунок 3.6.5. Программа поиска цели в лабиринте Курс программирования робота Lego Mindstorms EV3 в среде EV3
ГЛАВА 5. ИСПОЛЬЗОВАНИЕ СТОРОННИХ
ДАТЧИКОВ
Помимо датчиков, входящих в домашний или образовательный комплекты Lego Mindstorms EV3, существует возможность дополнительного приобретения датчиков Lego и сертифицированных Lego датчиков компании HiTechnic.Компания HiTechnic производит большое количество датчиков для LEGO Mindstorms, большинство из них сертифицированы компании LEGO, подтверждая полную совместимость, высокие стандарты качества и безопасности.
Также немаловажным фактором, позволяющим использовать эти датчики при работе с детьми, является наличие сертификата RoHS (Restriction of Hazardous Substances), подтверждающего отсутствие использования в электрическом и электронном оборудовании веществ: свинец, ртуть, кадмий, олово, шестивалентный хром, некоторые бромидные соединения. Актуальный список сертифицированных для Lego датчиков можно найти на сайте www.hitechnic.com/sensors.
В настоящее время доступны: датчик угла поворота;
силы, приложенной поперечно к оси; компас; акселерометр;
гироскоп; детектор магнитных полей; инфракрасный датчик;
инфракрасный датчик движения, позволяющий определять наличие в помещении людей или животных аналогично датчикам, используемым в охранных системах; барометр, определяющий атмосферное давление и температуру;
электрооптический датчик расстояния, точно определяющий небольшие объекты и малые изменения в дальности до них, но на расстоянии не более ~20 см; датчик цвета.