Лего майндстормс ev3 уроки программирования

Обновлено: 25.04.2024

Движение по кривой

Используйте блок «Рулевое управление» для управления приводной платформой.

Переместить объект

Переместить объект

Запрограммируйте приводную базу таким образом, чтобы переместить и освободить кубоид.

Движение по кривой

Движение по кривой

Используйте блок «Рулевое управление» для управления приводной платформой.

Перемещение по прямой

Перемещение по прямой

Изучите различные способы управления движением приводной платформы по прямой линии.

Что дальше?

Что дальше?

Используйте блок переключения для принятия решений в динамическом процессе на основании информации датчика.

Остались вопросы?

Свяжитесь с нами

Быстрые ссылки

LEGO, the LEGO logo, the Minifigure, DUPLO, the SPIKE logo, MINDSTORMS and the MINDSTORMS logo are trademarks and/or copyrights of the LEGO Group. ©2022 The LEGO Group. All rights reserved. Use of this site signifies your agreement to the terms of use.

Звезда активна
Звезда активна
Звезда активна
Звезда активна
Звезда не активна

Введение:

На втором занятии мы детальнее познакомимся со средой программирования и подробно изучим команды, задающие движение нашему роботу-тележке, собранному на первом занятии. Итак, давайте запустим среду программирования Lego mindstorms EV3, загрузим наш проект lessons.ev3, созданный ранее и добавим в проект новую программу - lesson-2-1. Программу можно добавить двумя способами:

  • Выбрать команду "Файл"-"Добавить программу" (Ctrl+N).
  • Нажать "+" на вкладке программ.

Добавить программу в проект

Рис. 1

2.1. Палитры программирования и программные блоки

Давайте теперь обратим свой взгляд в нижний раздел среды программирования. Из материала первого занятия мы уже знаем, что здесь находятся команды для программирования робота. Разработчики применили оригинальный прием и, сгруппировав программные блоки, присвоили каждой группе свой цвет, назвав группы палитрами.

Зеленая палитра называется: "Действие":

Палитра Действие

Рис. 2

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

2.2. Зеленая палитра – блоки действия

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

Программный блок - Большой мотор

Рис. 3

Для правильной настройки блока управления большим мотором мы должны:

  1. Выбрать порт, к которому подключен мотор (A, B, C или D) (Рис. 3 поз. 1)
  2. Выбрать режим работы мотора (Рис. 3 поз. 2)
  3. Настроить параметры выбранного режима (Рис. 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):

  1. Используя программный блок "Рулевое управление" проехать вперед на 4 оборота.
  2. Используя программный блок "Независимое управление моторами" развернуться на месте (значение градусов придется подобрать экспериментально).
  3. Используя программный блок "Рулевое управление" проехать вперед на 720 градусов.

Примечание: Почему при развороте пришлось подбирать значение градусов в блоке 2?. Разве не 360 градусов - искомая величина? Нет, если мы зададим значение параметра "Градусы" равным 360, то тем самым заставим на искомую величину провернуться валы левого и правого моторов нашего робота. На какой угол провернется робот вокруг своей оси - зависит от размера (диаметра) колес и расстояния между ними. На Рис. 7 значение параметра "Градусы" равно 385. Данное значение позволяет роботу, собранному по инструкции small-robot 45544 развернуться вокруг своей оси. Если у вас другой робот, то вам придется подобрать другое значение. Можно ли это значение найти математически? Можно, но об этом мы поговорим позднее.

Решение задачи 1

Рис. 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)

Координаты экрана блока EV3

Рис. 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:

  1. Воспроизвести сигнал "Start"
  2. Включить зеленую немигающую цветовую индикацию
  3. Отобразить на экране изображение "Forward"
  4. Проехать прямолинейно вперед на 4 оборота двигателя.
  5. Включить оранжевую мигающую цветовую индикацию
  6. Развернуться
  7. Включить зеленую мигающую цветовую индикацию
  8. Отобразить на экране изображение "Backward"
  9. Проехать на 720 градусов
  10. Воспроизвести сигнал "Stop"

Попробуйте решить задачу 3 самостоятельно, не подглядывая в решение! Удачи!

Привет, Хабр! Мы уже рассказывали о платформе LEGO MINDSTORMS Education EV3. Основные задачи этой платформы — обучение на практических примерах, развитие навыков STEAM и формирование инженерного мышления. В ней можно проводить лабораторные работы по изучению механики и динамики. Лабораторные стенды из кубиков LEGO и утилиты по регистрации и обработке данных делают опыты еще интереснее и нагляднее и помогают детям лучше понять физику. Например, школьники могут собрать данные о температуре плавления и с помощью приложения систематизировать их и представить в виде графика. Но это только начало: сегодня мы расскажем, как дополнить этот набор средой программирования MicroPython и использовать его для обучения робототехнике.




Учим программированию с помощью EV3

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

Базовая среда программирования EV3 создана на основе графического языка LabVIEW и позволяет задавать алгоритмы для робота визуально: команды представлены в виде блоков, которые можно перетаскивать и соединять.


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

Здесь есть несколько хитростей, одна из которых — показать, что код выполняет те же задачи, что и блоки. В среде EV3 это можно сделать благодаря интеграции с MicroPython: дети создают одну и ту же программу в базовой среде программирования с помощью блоков и на языке Python в Visual Studio Code от Microsoft. Они видят, что оба способа работают одинаково, но кодом решать сложные задачи удобнее.

Переходим на MicroPython

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

Чтобы начать работать, нужно скачать образ EV3 MicroPython на любую microSD-карту, установить ее в микрокомпьютер EV3 и включить его. Затем нужно установить бесплатное расширение для Visual Studio. И можно приступить к работе.

Программируем первого робота на MycroPython


На нашем сайте есть несколько уроков для освоения базовых понятий робототехники. Модели на EV3 знакомят детей с азами, которые используются в самоуправляемых автомобилях, заводских роботах-сборщиках, станках с ЧПУ.

Мы возьмем для примера чертежную машину, которую можно научить рисовать узоры и геометрические фигуры. Данный кейс является упрощенным вариантом взрослых роботов-сварщиков или фрезеровщиков и показывает, как можно использовать EV3 совместно с MicroPython для обучения школьников. А еще чертежная машина может разметить отверстия в печатной плате для папы, но это уже другой уровень, требующий математических расчетов.

Для работы нам понадобятся:

  • базовый набор LEGO MINDSTORMS Education EV3;
  • большой лист клетчатой бумаги;
  • цветные маркеры.

Сначала инициализируем библиотеку модулей EV3:


Настраиваем платформу, которая вращает ручку как мотор в порте B. Задаем передаточное отношение двухступенчатой зубчатой передачи с количеством зубьев 20-12-28 соответственно.


Настраиваем подъемный механизм для ручки как мотор в порте C:


Настраиваем гироскоп, измеряющий угол наклона ручки, в порте 2:


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


Настраиваем датчик касания в порте 4. Робот начинает рисовать, когда датчик нажат:


Определяем функции, которые поднимают и опускают ручку:


Определяем функцию для поворота ручки на заданный угол или до определенного угла:


Если целевой угол больше, чем текущий угол гироскопического датчика, продолжаем движение по часовой стрелке с положительной скоростью:


Если целевой угол меньше, чем текущий гироскопического датчика, то двигаемся против часовой стрелки:


Останавливаем вращающуюся платформу, когда целевой угол будет достигнут:


Устанавливаем начальное положение ручки в верхнем положении:


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

Когда устройство не готово, светодиоды на контроллере принимают красный цвет, и на ЖК-экране отображается изображение «палец вниз»:


Дожидаемся, когда датчик цвета считает синий или белый цвет, устанавливаем цвет светодиодов зеленым, отображаем на ЖК-экране изображение «палец вверх» и сообщаем, что устройство готово к работе:


Дожидаемся нажатия датчика касания, присваиваем гироскопическому датчику значение угла 0 и начинаем рисовать:


Поднимаем держатель ручки и возвращаем его в исходное положение:


Вот такая несложная программа у нас получилась. И теперь запускаем ее и смотрим на робота-чертежника в деле.

Что дают такие примеры


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

Поддержка MicroPython делает платформу EV3 подходящей для обучения в старших классах. Ученики могут попробовать себя в роли программистов на одном из самых популярных современных языков, познакомиться с профессиями, связанными с программированием и инженерным проектированием. Наборы EV3 показывают, что писать код — это не страшно, готовят к серьезным инженерным задачам и помогают сделать первый шаг к освоению технических специальностей. А для тех, кто работает в школе и связан с образованием, у нас подготовлены программы занятий и учебные материалы. В них детально расписано, какие навыки формируются при выполнении тех или иных задач, и как полученные навыки соотносятся со стандартами обучения.

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


Осторожно! Публикация может вызвать непреодолимое желание завести сына.

Урок истории

Компания LEGO (название произошло от датской фразы «leg godt», «Играй с удовольствием») не нуждается в представлении – она была основана в далёком 1932 году, хотя первые знакомые всем пластиковые кубики появились значительно позже, в 1947. Примечательно, что кубики LEGO, выпускаемые в те годы, полностью совместимы с теми, что выпускаются сейчас.

История создания компании, выпущенная компанией Pixar к 80-летнему юбилею LEGO:

Сейчас компания производит около 20 миллиардов деталек в год, то есть более 630 штук в секунду. В текущем модельном ряду более 600 различных конструкторов и так уж получилось, что серия Mindstorms является своего рода вершиной технической мысли, самым-самым навороченным конструктором. Если вкратце, то она позволяет делать вполне себе полноценных роботов.

Как гласит википедия, серия LEGO Mindstorms была впервые представлена в 1998 году. Через 8 лет (в 2006) на свет появился набор LEGO Mindstorms NXT 1.0, а уже в 2009 — набор LEGO Mindstorms NXT 2.0. Сегодня речь пойдёт о LEGO Mindstorms EV3 – последнем (третьем) поколении терминатора конструктора, который был представлен почти год назад, 4 января 2013 года (в продаже появился только спустя полгода).

Отличия EV3 от NXT 2.0

В принципе, главная идея осталась прежней – серия предназначена для сборки программируемых роботов. Поэтому первым встаёт вопрос, а что же поменялось с момента выхода предыдущего конструктора и стоит ли покупать новый? Основное отличие заключается в обновленных датчиках/моторах и, самое главное, в интеллектуальном блоке EV3 (EV означает EVolution):

EV3 NXT
Дисплей Монохромный LCD, 178x128 Монохромный LCD, 100x64
Процессор 300 МГц
Texas Instruments
Sitara AM1808 (ARM9)
48 МГц Atmel
AT91SAM7S256
(ARM7TDMI)
Память 64 Мб RAM
16 Мб Flash
Слот microSDHC (до 32 Гб)
64 Кб RAM
256 Кб Flash
USB-хост Есть Нет
Wi-Fi Опционально, через USB-донгл Нет
Bluetooth Есть Есть
Поддержка Apple-устройств Есть Нет
Как видите, разница довольно существенна – было бы странным, если бы за 4 года поменяли только разрешение экрана и набор наклеек.

Ещё одно отличие заключается в том, что серия NXT продавалась в нескольких версиях (в разные годы) и представляла собой разные наборы, базовые и ресурсные. У нового EV3 с этим попроще – пока он продаётся в основном варианте – 31313 (601 деталь), из которого можно наделать кучу всего. Но при желании можно докупить базовый набор 45544 (541 деталь) с дополнительными сенсорами и детальками (использовать детали от обычных конструкторов также никто не мешает). Кстати, обратите внимание на пятизначные артикулы – на такую нумерацию компания перешла в 2013 году.

Что касается совместимости, то тут было проделано всё возможное. Все NXT-сенсоры и моторы совместимы с EV3 и распознаются как NXT. EV3-сенсоры не работают с NXT, но EV3-моторы вроде как совместимы. NXT-кирпичик может быть запрограммирован софтом от EV3, но некоторые функции могут быть недоступны, а вот запрограммировать EV3-кирпичик NXT-софтом без сторонних решений не получится.

Внутри коробки

Ещё когда я сам был маленький и ездил с родителями в центральный Детский Мир (когда он ещё был), на Лубянку – уже тогда я не мог оторвать глаз от коробок с LEGO. Тогда не было ни Гиктаймс, ни даже Хабра, но с тех пор коробки остались всё такими же яркими и сочными, даже во взрослом возрасте активируют процесс слюновыделения ) В этом плане другим производителям есть чему поучиться.


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

Все детальки аккуратно разложены по пакетикам, в комплекте – инструкция и набор наклеек. Давайте вкратце пройдёмся по тому, что положили в комплект.



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


– Многофункциональный монохромный дисплей с разрешением 178х128
– Шестикнопочный интерфейс управления с функцией изменения подсветки (3 цвета) для индикации режима работы
– 4 порта ввода (1, 2, 3, 4) для подключения датчиков
– 4 порта вывода (A, B, C, D) для выполнения команд
– 1 разъём miniUSB для подключения EV3 к компьютеру
– 1 порт USB–хост (для соединения нескольких EV3 в одну цепь, например)
– 1 слот для карт памяти формата microSD (до 32Гб) – для увеличения объёма доступной памяти EV3
– Встроенный динамик




Кубик EV3 также поддерживает Bluetooth, WiFi (через USB-адаптер NETGEAR WNA1100 Wireless-N 150), для связи с компьютерами имеет программный интерфейс, позволяющий создавать программы и настраивать регистрации данных непосредственно на микрокомпьютере EV3.

» Большой EV3-сервомотор (2 штуки). Cоздан для работы с микрокомпьютером EV3 и имеет встроенный датчик вращения с точностью измерений до 1 градуса. Используя этот датчик, мотор может соединяться другими моторами, позволяя роботу двигаться с постоянной скоростью. Кроме того, датчик вращения может использоваться и при проведении различных экспериментов для точного считывания данных о расстоянии и скорости.


– Встроенный датчик вращения с точностью измерений до 1 град
– Максимальные обороты до 160-170 об/мин
– Максимальный крутящий момент в 40 Нсм
– Автоматическая идентификация программным обеспечением EV3

» Средний EV3-сервомотор. Идеален для задач, когда скорость и быстрота отклика, а также размер робота важнее его грузоподъёмности.


– Встроенный датчик вращения с точностью измерений до 1 градуса
– Максимальные обороты до 240-250 об/мин
– Максимальный крутящий момент в 12 Нсм
– Автоматическая идентификация программным обеспечением EV3

» Датчик цвета (EV3). Способен определить 8 различных цветов, хотя также может использоваться как датчик освещённости.


– Измеряет отраженный красный свет и внешнее рассеянное освещение, от полной темноты до яркого солнечного света
– Фиксирует и определяет 8 цветов
– Частота опроса до 1 кГц
– Автоматическая идентификация программным обеспечением EV3

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

» Цифровой ИК-датчик (EV3). Для определения приближения робота. Также способен улавливать ИК-сигналы от ИК-маяка, позволяя создавать дистанционно управляемых роботов, навигационные системы для преодоления препятствий.


– Измерения приближения/удаления в радиусе 50-70 см
– Радиус улавливания ИК-сигналов до 2 метров
– До 4 индивидуальных каналов приёма сигнала
– Получение удаленных ИК-команд управления
– Автоматическая идентификация программным обеспечением EV3

» Удалённый инфракрасный маяк. Разработан для использования с ИК-датчиком EV3. Маяк излучает ИК-сигнал, улавливаемый датчиком – может использоваться в качестве пульта дистанционного управления микрокомпьютера EV3, передавая сигналы на ИК-датчик.

– До 4 индивидуальных каналов передачи сигнала (переключатель прямо на корпусе)
– Имеет кнопку и тумблер для включения/выключения
– При работе ИК-маяка горит зелёный светодиод
– Автоматическое отключение при простое более 1 часа
– Радиус действия до 2 метров

В отдельном пакетике смотаны провода для подключения датчиков и моторов к кубику, а также USB-шнур для подключения кубика к компьютеру.


Стоит отметить два важных момента. Во-первых, существуют другие датчики Lego, такие как:

» Гироскопический датчик (EV3). Цифровой гироскопический датчик EV3 позволяет измерять движение вращения робота, а также улавливать изменения в его движении и положении. Режим измерения углов с точностью до ± 3 градуса; встроенный гироскоп улавливает вращения с моментом до 440 град/с; частота опроса до 1 кГц.

» Ультразвуковой датчик (EV3). Генерирует звуковые волны и фиксируюет их отражения от объектов, тем самым измеряя расстояние до объектов. Также может использоваться в режиме сонара, испуская одиночные волны. Может улавливать звуковые волны, которые будут являться триггерами для запуска программ. Измеряет расстояния в пределах от 1 до 250 см, а точность измерений составляет ± 1 см.

А во-вторых, поддерживаются сенсоры и прочие аксессуары от сторонних производителей, таких как HiTechnic и Mindsensors – они предлагают всевозможные джойстики, инфракрасные датчики расстояний, магнитные датчики, компасы, гироскопы, акселерометры, таймеры, мультиплексоры, шаровые опоры, и т.д. Так что, если задаться вопросом, можно найти много всего интересного.


В общем, как вы уже поняли, LEGO – это для реальных пацанов!

Первая модель

В комплекте с конструктором идёт бумажная инструкция, по которой можно собрать одну-единственную модель – некое подобие гусеничной самоходной машины.


Сначала я удивился, ведь даже в самых простых наборах (серии типа LEGO Creator) всегда идёт несколько инструкций, а тут вдруг бумаги пожалели или места в коробке не нашли. Оказалось… что только на официальном сайте из набора деталей предлагается собрать 17 разных роботов! Поэтому 17 инструкций в коробке были бы действительно лишними (и для логистики, и для лесов природы). Вот названия роботов: EV3RSTORM, GRIPP3R, R3PTAR, SPIK3R, and TRACK3R. ROBODOZ3R, BANNER PRINT3R, EV3MEG, BOBB3, MR-B3AM, RAC3 TRUCK, KRAZ3, EV3D4, EL3CTRIC GUITAR, DINOR3X, WACK3M, и EV3GAME – инструкции для них придётся качать из инета, равно как и софт для подключения EV3 к компьютеру.


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


Кубик EV3 необходимо запитать, для чего можно использовать аккумулятор (нет в комплекте) или 6 пальчиковых батареек. Забегая вперёд – ещё 2 батарейки (но уже мизинчиковых) понадобятся для питания ИК-маяка (он же пульт ДУ).


Первую модель ребёнок (7 лет) собрал примерно минут за 30.


Процесс оказался не таким увлекательным, как, например, сборка моделей LEGO Technics – в инструкции предлагается собрать далеко не самого интересного робота: в нём лишь крупные детали, среди которых были практически все датчики и двигатели – видимо, чтобы продемонстрировать работу каждого из них.



Но вот результат превзошёл все детские ожидания – впервые он собрал модель, которая могла двигаться сама: вперёд-назад, поворот, разворот на месте, крутила щупальцами…



Запуск осуществляется с кубика EV3, для чего следует нажать пару кнопок на лицевой панели. Некоторые действия можно запрограммировать прямо на кубике: выбрать количество итераций, настроить подачу звукового сигнала и так далее – в одной статье всего не рассказать, курите мануалы.



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

Ребёнку проще всего будет начать с предлагаемого производителем софта, который есть как под Windows, так и под OS X. Во втором случае дистрибутив весит 666 Мб, а установленное приложение займёт гигабайт. Оно называется LEGO Mindstorms EV3 Home Edition и разработано совместно с небезызвестной компанией LabView. На сайте LEGO довольно много обучающих программированию материалов.

Сразу после запуска перед нами возникает интерактивный «гараж» из роботов, которых можно собрать из набора:


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




Не вижу смысла описывать всё в деталях: вы быстрее скачаете приложение сами и увидите, что там есть и на каком уровне. Разве что упомяну один из недостатков, который мне больше всего запомнился: не самый дружелюбный (особенно для детей) интерфейс – от приложения попахивает каким–то банк-клиентом.

Нельзя ещё раз не отметить, что кубиком EV3 можно управлять со смартфона на операционных системах Android или iOS, для чего есть отдельные приложения.

Если всего этого оказалось мало, можете повысить градус хардкора. Для кубика EV3 существуют различные прошивки, которые позволяют расширить его возможности, скорость работы и т.д. Вот, например, альтернативная прошивка leJOS EV3 – прошивка с jvm, позволяющая программировать EV3 на языке Java. Хотите на другом языке? Окей, гугл – в вашем распоряжении почти 60 вариантов на выбор: ASM/C/C++/Perl/Python/Ruby/VB/Haskell/Lisp/Matlab/LabVIEW и многое-многое другое.

Более подробно об этом я рассказывать не буду по нескольким причинам: во-первых, программист из меня полный false (все надежды на сына), во-вторых, пока мы успели собрать только одну модель (и на выходных возьмёмся за вторую), а в-третьих – вы уже и так оформили заказ на этот конструктор и скоро сами всё узнаете ;) Ну а если серьёзно, то статья и так уже огромная – вот лучше две ссылочки изучите: раз и два.

Ну и ещё большой плюс – это LEGO-сообщества, которых полно по всему миру. Можете быть уверены, что на любом из этапов экспериментов с роботами вы всегда сможете найти единомышленников и тех, кто сможет помочь с решением проблемы. Помимо дружелюбных сообществ, на просторах сети выложено огромное множество различных инструкций, моделей, исходников, видеороликов и обучающих материалов. Всё это означает одно: с Mindstorms вы не соскучитесь.

В статье содержится описание опыта использования конструктора Lego Mindstorms EV3 для создания прототипа робота с его последующим программным и ручным управлением при помощи Robot Control Meta Language (RCML).

Далее будут рассмотрены следующие ключевые моменты:

  • Сборка прототипа робота на базе конструктора Lego Mindstorms EV3
  • Быстрая установка и настройка RCML для Windows
  • Программное управление роботом на базе контроллера EV3
  • Ручное управление периферией робота с помощью клавиатуры и геймпада

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








2. Следующий шаг — подготовка RCML для работы с конструктором Lego Mindstorms EV3.

Следует скачать архивы с исполняемыми файлами и файлами библиотек rcml_build_1.0.6.zip и rcml_modules_build_1.0.6.zip.

Далее описан процесс выполнения быстрого старта для взаимодействия RCML и Lego робота, управляемого контроллером EV3.

Скаченные архивы нужно извлечь в каталог с произвольным именем, однако следует избегать русских букв в названии.



Далее необходимо создать файл конфигурации config.ini, который необходимо расположить в этом же каталоге. Для реализации возможности управления контроллером EV3 при помощи клавиатуры и геймпада, следует подключить модули lego_ev3, keyboard и gamepad.

Далее следует произвести сопряжение контроллера EV3 и адаптера.

Инструкция содержит пример сопряжения контроллера Lego Ev3 и ПК под управлением операционной системы Windows 7.

1. Нужно перейти в раздел настроек контроллера Ev3, далее в пункт меню «Bluetooth».

2. Следует убедиться в правильности установки параметров конфигурации. На против пунктов “Visibility”,” Bluetooth” должны быть установлены галочки.


3. Необходимо перейти в «Панель управления», далее «Устройства и принтеры», далее «Устройства Bluetooth».


4. Необходимо нажать кнопку «Добавление устройства». Откроется окно для выбора доступных Bluetooth устройств.


5. Следует выбрать устройство “EV3” и нажать кнопку «Далее».

6. На экране контроллера EV3 отразится диалоговое окно «Connect?». Нужно выбрать вариант галочки, и подтвердить свой выбор нажатием центральной клавиши.


7. Далее отобразиться диалоговое окно «PASSKEY», в строке ввода должны быть указаны цифры «1234», далее следует подтвердить ключевую фразу для сопряжения устройств, путем нажатия центральной клавиши на позиции с изображением галочки.


8. В мастере сопряжения устройства появится форма для ввода ключа для сопряжения устройств. Нужно ввести код «1234» и нажать клавишу «Далее».


9. Далее отобразиться окно, с успешным подключением устройства. Следует нажать клавишу «Закрыть».


10. На ПК необходимо вернуться в «Панель управления», далее «Устройства и принтеры», далее «Устройства Bluetooth». В списке доступных устройств отобразится устройство, с которым было произведено сопряжение.


11. Следует двойным нажатием зайти в свойства подключения “EV3”.


12. Далее необходимо перейти во вкладку «Оборудование».


13. Далее следует двойным нажатием перейти в свойства подключения «Стандартный последовательный порт по соединению Bluetooth».


14. Указанный в свойствах индекс COM-порта, следует использовать в конфигурационном файле config.ini модуля lego_ev3. В примере показаны свойства Bluetooth подключения контроллера Lego EV3 с использованием стандартного последовательного порта COM14.

Дальнейшая конфигурация модуля сводится к тому, что необходимо прописать в конфигурационном файле модуля lego_ev3 адрес COM-порта, через который осуществляется коммуникация с роботом Lego.

Теперь необходимо произвести настройку модуля keyboard. Модуль находится в каталоге control_modules, далее keyboard. Следует создать конфигурационный файл config.ini рядом с файлом keyboard_module.dll. Перед тем, как создать конфигурационный файл, необходимо определить, какие действия должны быть совершены по нажатию клавиш.

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

В качестве примера, буду использовать нажатия следующих клавиш:

  • Стрелки вверх/вниз используются для вращения мотора задних колес вперед/назад
  • Стрелки влево/вправо поворачивают колеса влево/вправо

1. При добавлении новой оси, необходимо в секцию [mapped_axis] добавить свойство, имя которого есть имя оси, и присвоить ему значение кнопки клавиатуры в HEX формате, при этом на каждую кнопку заводится подобная запись, т.е. имя оси может быть использовано несколько раз. В общем случае запись в секцию [mapped_axis] будет выглядеть следующим образом:


2. Необходимо установить максимальное и минимальное значение, которое может откладываться по данной оси. Для этого необходимо с новой строки добавить секцию в конфигурационном файле config.ini, одноименную с именем оси, и задать свойства upper_value и lower_value, которые соответствуют максимум и минимуму оси соответственно. В общем виде данная секция выглядит следующим образом:


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


Текст спойлера для удобства просмотра скопирован из документации по RCML.

Для реализации управления прототипом робота был создан конфигурационный файл модуля keyboard, который включает в себя оси go и rotate. Ось go используется для задания направления движения робота. При нажатии клавиши “стрелка вверх” ось получит значение 100, при нажатии клавиши “стрелка вниз” ось примет значение -50. Ось rotate используется для установки угла поворота передних колес. При нажатии клавиши “стрелка влево” значение оси будет равно -5, при нажатии «стрелки вправо» ось примет значение 5.

Далее для реализации управления при помощи геймпада, необходимо настроить модуль gamepad. Конфигурирование модуля включает в себя создание конфигурационного файла config.ini рядом с gamepad_module.dll, находящего в каталоге control_modules, далее gamepad.

Дополнительная информация об особенностях настройки модуля gamepad отображена в справочном руководстве по RCML.

3. Следующий шаг — написание программы на языке RCML.

В корне созданного каталога, необходимо создать файл программы. Имя файла программы и его расширение может быть любым, однако следует избегать русских букв в названии. В примере использовано имя файла — hello.rcml.

Для модуля lego_ev3 программный код резервирования робота, имеет следующий вид:

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

Алгоритм программы следующий:

После резервирования первого свободного робота, устанавливается связь двух двигателей для последующей работы с ними, как с одним. Затем робот начинает выполнять заносы. Программное описание действий робота позволяет точно устанавливать углы поворота передних колес и скорость вращения задних. Использование этого приёма позволяет добиваться результатов, которые сложно повторить во время ручного пилотирования с клавиатуры или геймпада.

Для компилирования программы необходимо использовать командную строку window. Сначала следует переместиться в созданный каталог с исполняемыми файлами rcml_compiler.exe и rcml_intepreter.exe. Далее нужно ввести следующие команды.

Команда для компилирования файла hello.rcml:


В результате компилирования, в созданной директории появится новый файл hello.rcml.pc.



Теперь следует убедиться в том, что контроллер EV3 включен, сопряжен с Bluetooth адаптером. Геймпад должен быть подключен к ПК. После этого нужно выполнить команду исполнения программного файла:



Видеоролик демонстрирующий программу движения робота расположен внизу статьи.

4. Следующий шаг – управление роботом в ручном режиме при помощи клавиатуры.

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

При помощи клавиатуры возможно управление любым двигателем робота. В рамках примера реализовано управление следующими механизмами:

  • Углом поворота передних колес
  • Направлением вращения задних колес

Далее следует откомпилировать программу и выполнить её. Результат ручного управления Lego роботом при помощи на клавиатуры показан на видео внизу страницы.

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

Далее следует повторить процесс компилирования программы и затем выполнить её. Далее показан результат ручного управления Lego роботом при помощи на геймпада, и все ранее подключенные способы:

В статье кратко продемонстрированы только лишь некоторые возможности RCML. Наиболее подробное описание находиться в справочном руководстве.

Читайте также: