Мастер – класс «Управление роботом с помощью планшета, смартфона».
В последнее время возрастает интерес со стороны государства к проблеме развития научно-технического творчества детей. Поэтому в Концепции развития дополнительного образования, принятой в сентябре 2014 г., дополнительное образование детей рассматривается как одно из приоритетных сфер инновационного развития России и должно соответствовать целям опережающего развития.
Таким требованиям отвечает LEGO-конструирование и робототехника.
Еще Конфуций говорил: «Скажи мне — и я забуду, покажи мне — и я запомню, дай мне сделать — и я пойму». Это наиболее применимо именно к использованию робототехники и теме нашего мастер-класса.
А сейчас немного о нас. В нашем центре реализуются направления: Легоконструирование с 2011 года и Робототехника с января 2016 г. Созданы условия для развития научно-технического творчества учащихся: кабинет оборудован наборами образовательных конструкторов LEGO MINDSTORMS edication EV 3: базовый и ресурсный наборы и программным обеспечением как инструментом для обучения учащихся конструированию, моделированию и компьютерному программированию.
Мы выстраиваем образовательную траекторию учащихся, начиная с 1 по 9 класс. В объединении занимаются более 80 мальчишек.
На уровне начального общего образования учащиеся занимаются легоконструированием по ДОП «Легоконструирование» для детей 7-10 лет.
На занятиях используется игровая и проектная деятельность. Слово «проект» удачно вписалось в систему работы. Дети имеют возможность проявить свою индивидуальность, реализовать свои творческие задумки, фантазию, выразить свое видение мира. Учитывая развитие современного образования, в программу включены занятия с выходом в интернет, мультимедийные презентации. В своей работе использую программу LEGO DigitalDesigner – это удобный виртуальный конструктор, позволяющий создавать различные ЛЕГО объекты как с нуля, так и разбирать или дополнять уже готовые предлагаемые конструкции, что очень нравится детям.
На уровне основного общего образования для детей 10-16 лет усложняется как уровень моделирования, так и уровень программирования роботов.
Безусловно, помимо основных занятий, мы проводим другие различные мероприятия, позволяющие привлечь интерес к данному направлению: соревнования по робототехнике, выставки работ из легоконструктора, викторины, мастер-классы по конструированию и программированию роботов, где юные таланты соревнуются и делятся собственным опытом.
Непосредственными участниками образовательного процесса являются не только учащиеся, но и родители.
Традиционным стало мероприятие совместно с родителями «ЛЕГО — БУМ!», которое вот уже в течение 3 лет проходит в атмосфере заинтересованности и плодотворного сотрудничества.
В прошлом году в рамках творческого отчета ребята 7 класса приняли участие в образовательном Форуме «Радуга творчества», где выступили перед родителями и своими сверстниками на тему: «ПОЧЕМУ Я ЗАНИМАЮСЬ ТЕМ, ЧЕМ ЗАНИМАЮСЬ!». И защитили проект «Робот Центрик», который встречал ребят, родителей, гостей и открывал творческий отчет «Весеннее настроение — 2018!» в конце учебного года.
Мы понимаем, что для развития технической направленности, увеличения охвата детей программами технического творчества недостаточно ресурсов одного нашего учреждения, поэтому на районном форуме ПДО мы предложили расширять партнерство с организациями и учреждениями района по вопросам развития технического творчества и внесли предложение — создать сообщество педагогов по работотехнике для дальнейшего развития этого направления в районе.
Последующим шагом — мы зарегистрировались как участники комплекса учебно-тренировочных и спортивных мероприятий всероссийской программы «Робототехника: инженерно-технические кадры инновационной России».
Одним из основных направлений работы является подготовка к робототехническим соревнованиям и участие в них. Соревнования – это не только подведение промежуточных итогов, но и явный и неявный обмен опытом, выработка вариативности профессиональных навыков, умения работать в команде над общей задачей. Это систематическая подготовка к районным, республиканским и всероссийским соревнованиям, где мы являемся постоянными участниками и призерами.
И сегодня на мастер-классе хочется поделиться опытом по управлению роботом с помощью планшета, смартфона.
Удаленное управление роботом Lego Mindstorms по JMX и IP Video
Основной модуль конструктора Lego Mindstorms EV3 может работать с прошивкой leJOS, позволяющей запускать Java-приложения. Специально для этого Oracle выпустил и поддерживает отдельную версию полноценной Java SE.
Нормальная JVM позволила мне использовать встроенный в нее протокол Java Management Extensions (JMX), чтобы реализовать удаленное управление роботом-манипулятором. Для объединения управляющих элементов, показаний датчиков и картинок с установленных на роботе IP-камер используется мнемосхема, сделанная на платформе AggreGate.
Сам робот состоит из двух основных частей: шасси и руки-манипулятора. Они управляются двумя полностью независимыми компьютерами EV3, вся их координация осуществляется через управляющий сервер. Прямого соединения между компьютерами нет.
Оба компьютера подключены к IP-сети помещения через Wi-Fi адаптеры NETGEAR WNA1100. Робот управляется восемью двигателями Mindstorms — из них 4 «большие» и 4 «маленькие». Также установлены инфракрасный и ультразвуковой датчики для автоматической остановки у препятствия при движении задним ходом, два датчика прикосновения для остановки поворота манипулятора из-за препятствия, и гироскопический датчик, облегчающий ориентировку оператора при помощи визуализации положения плеча.
В шасси установлены два двигателя, каждый из которых передает усилие на пару гусеничных приводов. Еще один двигатель поворачивает всю руку-манипулятор целиком на 360 градусов.
В самом манипуляторе два двигателя отвечают за подъем и опускание «плеча» и «предплечья». Еще три двигателя занимаются подъемом/опусканием кисти, ее поворотом на 360 градусов и сжиманием/разжиманием «пальцев».
Самым сложным механическим узлом является «кисть». Из-за необходимости выноса трех тяжелых двигателей в район «локтя» конструкция получилась достаточно хитрой.
В целом все выглядит так (коробок спичек был с трудом найден для масштаба):
Для передачи картинки установлены две камеры:
- Обычный Android-смартфон с установленным приложением IP Webcam для общего обзора (на снимке HTC One)
- Автономная Wi-Fi микро-камера AI-Ball, установленная прямо на «кисти» манипулятора и помогающая хватать предметы сложной формы
Программирование EV3
ПО самого робота получилось максимально простым. Программы двух компьютеров очень похожи, они запускают JMX сервер, регистрируют MBean’ы, соответствующие двигателям и датчикам, и засыпают в ожидании операций по JMX.
Для каждого типа датчика и мотора создан интерфейс MBean’а и реализующий его класс, которые напрямую делегирует все вызовы классу, входящему в leJOS API.
Как ни странно, на этом программирование закончилось. На стороне сервера и операторского рабочего места не было написано ни одной строчки кода.
Подключение к серверу
Непосредственное управление роботом осуществляет сервер IoT-платформы AggreGate. Установленная бесплатная версия продукта AggreGate Network Manager включает драйвер протокола JMX и позволяет подключить до десяти JMX-хостов. Нам понадобится подключить два — по одному на каждый кирпичик EV3.
Прежде всего, нужно создать аккаунт JMX устройства, указав в настройках URL, заданный при запуске JMX сервера:
После этого выбираем активы (т.е. MBean’ы в данном случае), которые будут добавлены в профиль устройства:
И через несколько секунд смотрим и меняем текущие значения всех опрошенных свойств MBean’ов:
Можно также потестировать различные операции вызывая вручную методы MBean’ов, например forward() и stop().
Далее настраиваем периоды опроса для датчиков. Высокая частота опроса (100 раз в секунду) используется, так как управляющий сервер находится в локальной сети вместе с роботом и именно сервер принимает решения об остановке вращения при упоре в препятствие и т.п. Решение, безусловно, не промышленное, но в хорошо работающей Wi-Fi сети в рамках одной квартиры показало себя вполне адекватным.
Интерфейс оператора
Теперь переходим к созданию интерфейса оператора. Для этого сначала создаем новый виджет и накидываем в него нужные компоненты. В конечном работающем варианте выглядит он так:
По сути, весь интерфейс состоит из нескольких панелей с кнопками, слайдерами и индикаторами, сгруппированными в различные сеточные раскладки, и двух больших видео-плееров, транслирующих картинки с камер.
Вся форма:
Вид с показанными панелями-контейнерами:
Теперь, как говорят АСУТПшники, осталось «оживить мнемосхему». Для этого применяются так называемые привязки связывающие свойства и методы графических компонентов интерфейса со свойствами и методами серверных объектов. Так как компьютеры EV3 уже подключены к серверу, серверными объектами могут быть и MBean’ы нашего робота.
Весь интерфейс оператора содержит около 120 привязок, большая часть из которых однотипна:
Половина однотипных привязок реализует управление при помощи кликов на кнопки, расположенные на мнемосхеме. Это красиво, удобно для тестирования, но совершенно непригодно для реального передвижения робота и перемещения грузов. Активаторами привязок из этой группы являются события mousePressed и mouseReleased различных кнопок.
Вторая половина привязок позволяет управлять роботом с клавиатуры, предварительно нажав на кнопку Keyboard Control. Эти привязки реагируют на события keyPressed и keyReleased, а в условии каждой привязки прописано, на какой именно код кнопки нужно реагировать.
Все управляющие привязки вызывают методы forward(), backward() и stop() различных MBean’ов. Поскольку доставка событий происходит асинхронно, важно, чтобы вызовы функций forward()/backward() и последующие вызовы stop() не перепутались. Для этого привязки, вызывающие методы одного MBean’а, добавлены в одну очередь (Queue).
Две отдельные группы привязок выставляют начальные скорости и ускорения двигателей (сейчас это реализовано на стороне сервера при помощи модели, поэтому эти привязки отключены) и меняют скорости/ускорения при перемещении ползунков Speed и Acceleration.
Все остальные привязки подсвечивают части мнемосхемы при активации сенсоров касания, показывают измеренные сенсорами расстояния до объектов на шкалах и выполняют различные служебные функции.
Помимо аккаунтов JMX-устройств и вышеописанного виджета на сервере есть еще один объект, участвующий в управлении роботом. Это модель, которая останавливает двигатели при срабатывании одного из датчиков прикосновения. Осуществляется это также при помощи привязок, различие их с привязками виджета лишь в том, что привязки модели обрабатываются на сервере и связывают одни свойства серверных объектов с другими.
Закончив настройку виджета и модели можно запускать виджет, активировать клавиатурное управление и развлекаться:
Управление с телефона через Bluetooth моделями Lego EV3 Mindstorm
Во-первых нужно создать подходящего робота на базе двух моторов с рулевым управлением и средним мотором, как на фото выше. Можно сделать гоночный болид с управлением влево-вправо с помощью среднего мотора.
В состав стандартных наборов обычно входят два Больших мотора (сервомотора, серводвигателя) и один Средний мотор. Большой мотор содержит в себе встроенный датчик вращения с разрешением в 1 градус для точного контроля угла вращения. Большой мотор оптимизирован для приводных механизмов роботизированных платформ различных видов и назначений.
- Скорость вращения большого мотора 160 – 170 оборотов в минуту
- Вращающий момент 20 ньютон/метр
- Пусковой момент 40 ньютон/метр, то есть медленнее, но мощнее. Еще вращающий момент называют крутящий момент или момент силы
Большой мотор поддерживает автоматическую идентификацию с программным обеспечением EV3. Двигатели можно соединять с любыми выходными портами A, B, C, D. По умолчанию большие моторы подключаются к портам B и C.
Средний мотор — это достаточно точный мотор, который реагирует на команды более точно и быстро, чем большой мотор. Его размер меньше чем у большого мотора и нет встроенного редуктора, за счет этого его мощность не очень большая. Он также содержит в себе встроенный датчик вращения с разрешением в 1 градус для точного контроля угла вращения. Средний мотор чаще всего используется для каких-либо захватов, различных типов передач.
- Скорость вращения среднего мотора 250 – 260 оборотов в минуту
- Его вращающий момент 8 ньютон/метр
- Пусковой момент 12 ньютон/метр, то есть работает быстрее, но с меньшей мощностью
Средний мотор также поддерживает автоматическую идентификацию с программным обеспечением EV3. Как и большой мотор EV3 его можно соединять с любыми выходными портами A, B, C, D. По умолчанию средний мотор подключаются к порту А.
Основы сборки моделей Lego EV3, по ссылке здесь- https://www.lego.com/ru-ru/service/buildinginstructions. (И, 🙂 смотрите комментарии к статье, приложится pdf — документ, Инструкция). Но часто собрав по инструкции изделие, наши ребята уже импровизируют и собирают нечто свое, но очень прикольное и интересное.
Когда соберете подобного робота, необходимо Программное обеспечение LEGO MINDSTORMS Education EV3. По поиску его не трудно найти, но оно громоздкое, поэтому выкладывать здесь не буду. А дальше подключаете вашего робота-машину через USB к компьютеру и включаете его. Запущенная программа LEGO MINDSTORMS Education EV3, должна его обнаружить.
Прежде чем начинать программировать подключение по Блютуз, вам необходимо скачать на телефон или планшет с Play Market, Microsoft Store или с AppStore следующую программу: EV3 Numeric Pad Plus. Запущенная она выглядит вот так:
Подключение к нашему роботу на базе Lego EV3 Mindstorm в программе происходит следующим образом. Во-первых при запуске спросит разрешение включить Блютуз, необходимо включить. Дальше на роботе в меню, находим опцию Bluetooth и ставим галочку на включение, так же проверьте должна стоять галка на опции Visible. Переходим к телефону и нажимаем кнопку Connect. Ждем, и если все правильно подключаемся к роботу, по умолчанию должно выйти имя робота — EV3 (00:16:53:52:C1:3D — эти символы адрес, он у всех разный).
Принцип работы приложения EV3 Numeric Pad следующий: когда вы касаетесь голубого прямоугольника и водите по нему пальцем, вы тем самым передвигаете по нему красную мишень. В это время приложение постоянно передаёт координаты мишени (по осям X и Y) модулю EV3. Координата по оси X – передаётся в диапазоне от -100 до 100 в почтовый ящик с именем «x», а координата по оси Y – тоже передаётся в диапазоне от -100 до 100, но в почтовый ящик с именем «y» (слева сверху отображаются текущие числа переданные EV3). Такая же ситуация с нижней сине-зеленой полоской, но данный только передаются в почтовый ящик «z». Ну и следуя этой логике начинаем выставлять команды в своей программе для робота. Мы с ребятами ставим блок подключение через Блютуз, а затем бесконечный цикл. Все делаем по минимуму пока, главное чтобы заработало. Совершенству нет предела и программе лоск наводить потом можно так же бесконечно, в зависимости от ваших потребностей.
Продолжить можно с помощью блока на Синей вкладке — «Подключение через Bluetooth».
Мы упростили задачу и сделали движение вперед-назад с помощью блока на Оранжевой вкладке Переключатель. Выбираем условие — Обмен сообщениями → Сравнение → Числовое значение. Обязательно меняем заголовок сообщения с «abc» на «у». Подвигайте на телефоне в программе EV3 Numeric Pad Plus пальцем вверх-вниз по оси, и вы увидите, как меняется значение в левом верхнем углу. Значит когда значение «y» > 0 значит нам следует ехать вперед, ставим блок Рулевое управление с направлением вперед. Если «у»<0 ставим такой же блок в нижнюю часть Переключателя, НО обороты ставим -1, т.е. он едет назад у нас. См.рисунок.
Аналогичная ситуация с поворотами, т.е. передвижением пальца на телефоне по оси «х». Если х<0 то поворот влево, если x>0 то вправо.
Нам осталось прописать команды для среднего мотора, для которого идут данные в ящик «z». Замечу сразу, если вы не рассчитаете обороты мотора, то встретив препятствие и не выполнив до конца команду, робот подвиснет, и пока не остановите его, другие команды выполняться не будут.
Вот у вас получилась самая простенькая программа, которая позволяет управлять моделью Lego EV3 через Bluetooth.
Стандартный робот под управлением блютуз. Можно сделать и другие модельки, гоночного болида.
Удаленное управление роботом Lego Mindstorms по JMX и IP Video. В чем разница между Wi-Fi и Bluetooth? Что такое LEGO® MINDSTORMS®
Ваш ребенок мечтает самостоятельно построить и запрограммировать робота, который бы выполнял все его команды? Тогда настоятельно рекомендуем Вам обратить свое внимание на уникальную серию конструкторов известной во всем мире датской фирмы Лего Роботы.
Серия Лего Mindstorms это особое достижение компании Lego . Все дело в том, что эти конструкторы основаны на электромеханике и робототехнике, а значит, они будут интересны тем, кто имеет оригинальное мышление и хорошую фантазию, а также знание и понимание всех происходящих технических процессов. Именно поэтому очень часто набор Лего Роботы становится любимой игрушкой не только для ребят старшего школьного возраста, но и хобби для их пап и даже дедушек.
Покупая конструктор Лего Mindstorms, Вы получаете:
Интереснейшую игру-конструктор
Лего Роботы — это продукт, при изготовлении которого использовались новейшие технологии в области робототехники. Игрушки серии Лего Mindstorms имеют несколько двигателей, дополнительные датчики-сенсоры и цветной дисплей. Лего Роботы способны поразить воображение всех, кто с ними сталкивается впервые, ведь они ведут себя, как живые существа. Лего Mindstorms реагируют на прикосновение и звук, способны определять температуру объекта и расстояние. Они могут приходить, услышав Ваш хлопок, поднимать предметы, которые находятся рядом, и различать темноту и свет. Все это звучит довольно сложно, но практика показывает, что любой ребенок, который владеет компьютером на пользовательском уровне, может без проблем запрограммировать конструктор из серии Лего Роботы, создав своего личного робота. Отметим, что команды игрушке Лего Mindstorms можно отдавать не только с компьютера, но и с любого мобильного телефона, в котором установлен Bluetooth.
Огромные возможности для развития творчества
Набор Лего Роботы состоит больше, чем из 500 деталей, что дает возможность собрать огромное количество различных модификаций роботов-конструкторов: мифологическое животное, которое живет только в Ваших фантазиях, человекоподобного робота, автомобиль будущего и пр.
Качественный продукт
Перед запуском серийного производства конструкторов все их компоненты проходят проверку на прочность на испытательных стендах. Каждый элемент Лего Роботы рассчитан на более чем 50 000 циклов сцепления. Для производства пластиковых элементов конструктора Лего Mindstorms не применяются тяжелые металлы и другие вредные для здоровья материалы.
О развивающих возможностях конструкторов Лего Mindstorms можно говорить бесконечно. Лего Роботы — это не только знакомство с новейшими технологиями, но и их использование. Юные владельцы Лего Mindstorms будут невероятно гордиться и радоваться, когда напишут и загрузят в робота свою первую компьютерную программу. А уж о гордости родителей за свое любимое чадо, которое запросто справляется с новейшими технологиями, и говорить не приходится!
Взрослая игрушка Лего Роботы уже успела завоевать миллионы поклонников по всей планете и с каждым днем их количество только растет. Сейчас существуют даже целые клубы, посвященные конструкторам Лего Mindstorms, в которых люди обсуждают способы улучшения функций Лего Роботов, делятся своими достижениями, открытиями и пр.
Покупайте у нас набор Лего Mindstorms и создавайте игрушки, которые в Ваших руках непременно оживут!
В статье содержится описание опыта использования конструктора Lego Mindstorms EV3 для создания прототипа робота с его последующим программным и ручным управлением при помощи Robot Control Meta Language (RCML).
- Сборка прототипа робота на базе конструктора Lego Mindstorms EV3
- Быстрая установка и настройка RCML для Windows
- Программное управление роботом на базе контроллера EV3
- Ручное управление периферией робота с помощью клавиатуры и геймпада
1. Для начала из конструктора Lego Mindstorms EV3 был создан прототип робота, который будет использоваться для программирования и ручного пилотирования.
Описание прототипа робота
Робот имеет конструкцию схожую с автомобильным шасси. Два мотора, установленные на раме, имеют одну общую ось вращения, которая соединена с задними колесами через редуктор. Редуктор преобразует крутящий момент путем увеличения угловой скорости задней оси. Рулевое управление собрано на базе конического редуктора.
2. Следующий шаг — подготовка RCML для работы с конструктором Lego Mindstorms EV3.
Следует скачать архивы с исполняемыми файлами и файлами библиотек и .
Скаченные архивы нужно извлечь в каталог с произвольным именем, однако следует избегать русских букв в названии.
Содержимое каталога после распаковки в него архивов
Далее необходимо создать файл конфигурации config.ini, который необходимо расположить в этом же каталоге. Для реализации возможности управления контроллером EV3 при помощи клавиатуры и геймпада, следует подключить модули lego_ev3, keyboard и gamepad.
Листинг конфигурационного файла config.ini для RCML
Module = lego_ev3 module = keyboard module = gamepad
Далее следует произвести сопряжение контроллера EV3 и адаптера.
Инструкция для сопряжения контролера EV3 и Bluetooth адаптера
Инструкция содержит пример сопряжения контроллера Lego Ev3 и ПК под управлением операционной системы Windows 7.
1. Нужно перейти в раздел настроек контроллера Ev3, далее в пункт меню «Bluetooth».
2. Следует убедиться в правильности установки параметров конфигурации. На против пунктов “Visibility”,” Bluetooth” должны быть установлены галочки.
3. Необходимо перейти в «Панель управления», далее «Устройства и принтеры», далее «Устройства Bluetooth».
4. Необходимо нажать кнопку «Добавление устройства». Откроется окно для выбора доступных Bluetooth устройств.
5. Следует выбрать устройство “EV3” и нажать кнопку «Далее».
6. На экране контроллера EV3 отразится диалоговое окно «Connect?». Нужно выбрать вариант галочки, и подтвердить свой выбор нажатием центральной клавиши.
7. Далее отобразиться диалоговое окно «PASSKEY», в строке ввода должны быть указаны цифры «1234», далее следует подтвердить ключевую фразу для сопряжения устройств, путем нажатия центральной клавиши на позиции с изображением галочки.
8. В мастере сопряжения устройства появится форма для ввода ключа для сопряжения устройств. Нужно ввести код «1234» и нажать клавишу «Далее».
10. На ПК необходимо вернуться в «Панель управления», далее «Устройства и принтеры», далее «Устройства Bluetooth». В списке доступных устройств отобразится устройство, с которым было произведено сопряжение.
11. Следует двойным нажатием зайти в свойства подключения “EV3”.
14. Указанный в свойствах индекс COM-порта, следует использовать в конфигурационном файле config.ini модуля lego_ev3. В примере показаны свойства Bluetooth подключения контроллера Lego EV3 с использованием стандартного последовательного порта COM14.
Дальнейшая конфигурация модуля сводится к тому, что необходимо прописать в конфигурационном файле модуля lego_ev3 адрес COM-порта, через который осуществляется коммуникация с роботом Lego.
Листинг конфигурационного файла config.ini для модуля lego_ev3
Connection = COM14 dynamic_connection = 0
Теперь необходимо произвести настройку модуля keyboard. Модуль находится в каталоге control_modules, далее keyboard. Следует создать конфигурационный файл config.ini рядом с файлом keyboard_module.dll. Перед тем, как создать конфигурационный файл, необходимо определить, какие действия должны быть совершены по нажатию клавиш.
Модуль клавиатуры позволяет задействовать клавиши, которые имеют определенный числовой код. Таблицу виртуальных кодов клавиш можно посмотреть .
В качестве примера, буду использовать нажатия следующих клавиш:
- Стрелки вверх/вниз используются для вращения мотора задних колес вперед/назад
- Стрелки влево/вправо поворачивают колеса влево/вправо
Правила описания осей для модуля keyboard
1. При добавлении новой оси, необходимо в секцию добавить свойство, имя которого есть имя оси, и присвоить ему значение кнопки клавиатуры в HEX формате, при этом на каждую кнопку заводится подобная запись, т.е. имя оси может быть использовано несколько раз. В общем случае запись в секцию будет выглядеть следующим образом:
Имя_оси = значение_кнопки_клавиатуры_в_HEX_формате
2. Необходимо установить максимальное и минимальное значение, которое может откладываться по данной оси. Для этого необходимо с новой строки добавить секцию в конфигурационном файле config.ini , одноименную с именем оси, и задать свойства upper_value и lower_value , которые соответствуют максимум и минимуму оси соответственно. В общем виде данная секция выглядит следующим образом:
[имя_оси] upper_value = максимальное_значение_оси lower_value = минимальное_значение_оси
3. Далее следует определить, какое значение будет иметь ось в случае нажатия кнопки на клавиатуре, которая ранее была прикреплена к ней. Определение значений происходит посредством создания секции, название которой состоит из имени оси и значения кнопки клавиатуры в HEX формате, разделенные между собой символом нижнего подчеркивания. Для задания значения по умолчанию (в не нажатом) и нажатом состоянии используются свойства unpressed_value и pressed_value соответственно, в которые передаются значения. Общий вид секции в таком случае выглядит следующим образом:
[имя-оси_значение-кнопки-клавиатуры] pressed_value = значение_оси_при_нажатой_клавише unpressed_value = значение_оси_при_отжатой_клавише
Текст спойлера для удобства просмотра скопирован из документации по RCML .
Для реализации управления прототипом робота был создан конфигурационный файл модуля keyboard, который включает в себя оси go и rotate. Ось go используется для задания направления движения робота. При нажатии клавиши “стрелка вверх” ось получит значение 100, при нажатии клавиши “стрелка вниз” ось примет значение -50. Ось rotate используется для установки угла поворота передних колес. При нажатии клавиши “стрелка влево” значение оси будет равно -5, при нажатии «стрелки вправо» ось примет значение 5.
Листинг конфигурационного файла config.ini для модуля keyboard
;Обязательная секция ;название_оси = код_клавиши (в HEX формате) ;Ось go получает значения от стрелки_вверх go = 0x26 ;Ось go получает значения от стрелки_вниз go = 0x28 ;Ось rotate получает значения от стрелки_влево rotate = 0x25 ;Ось rotate получает значения от стрелки_вправо rotate = 0x27 ;Описание оси go, всегда должно иметь оба ключа ;Верхняя граница значений оси go upper_value = -100 ;Нижняя граница значений оси go lower_value = 100 ;Описание оси rotate, всегда должно иметь оба ключа ;Верхняя граница значений оси rotate upper_value = -100 ;Нижняя граница значений оси rotate lower_value = 100 ;Описание поведения оси go для клавиши *стрелка_вверх* (0x26) ;При нажатии клавиши *стрелка_вверх* значение оси задать равным 50 pressed_value = 100 ;При отпускании клавиши *стрелка_вверх* значение оси задать равным 0 unpressed_value = 0 ;Описание поведения оси go для клавиши *стрелка_вниз* (0x28) ;При нажатии клавиши *стрелка_вниз* значение оси задать равным -50 pressed_value = -50 ;При отпускании клавиши *стрелка_вниз* значение оси задать равным 0 unpressed_value = 0 ;Описание поведения оси rotate для клавиши *стрелка_влево* (0x25) ;При нажатии клавиши *стрелка_влево* значение оси задать равным -5 pressed_value = -5 ;При отпускании клавиши *стрелка_влево* значение оси задать равным 0 unpressed_value = 0 ;Описание поведения оси rotate для клавиши *стрелка_вправо* (0x27) ;При нажатии клавиши *стрелка_вправо* значение оси задать равным 5 pressed_value = 5 ;При отпускании клавиши *стрелка_вправо* значение оси задать равным 0 unpressed_value = 0
Далее для реализации управления при помощи геймпада, необходимо настроить модуль gamepad. Конфигурирование модуля включает в себя создание конфигурационного файла config.ini рядом с gamepad_module.dll, находящего в каталоге control_modules, далее gamepad.
Универсальный файл конфигурации модуля для взаимодействия с геймпадом
;Обязательная секция описания используемых осей ;Ось для завершения режима ручного управления Exit = 9 ; 11 бинарных осей, соответствующих кнопкам геймпада B1 = 1 B2 = 2 B3 = 3 B4 = 4 L1 = 7 L2 = 5 R1 = 8 R2 = 6 start = 10 T1 = 11 T2 = 12 ; 4 оси стиков;Правый стик движение вверх/вниз RTUD = 13 ;Правый стик движение влево/вправо RTLR = 16 ;Левый стик движение вверх/вниз LTUD = 15 ;Левый стик движение влево/вправо LTLR = 14 ; 2 оси крестовины;Движение крестовины вверх/вниз arrowsUD = 17 ;Движение крестовины влево/вправо arrowsLR = 18 ;Описание поведения оси B1 ;При нажатии кнопки B1 значение оси задать равным 1 upper_value = 1 ;При отпускании кнопки B1 значение оси задать равным 0 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 upper_value = 1 lower_value = 0 ;Описание поведения оси правого стика движение вверх/вниз ;Значение оси при перемещении в максимально возможное верхнее положение upper_value = 0 ;Значение оси при перемещении в максимально возможное нижнее положение lower_value = 65535 upper_value = 0 lower_value = 65535 upper_value = 0 lower_value = 65535 upper_value = 0 lower_value = 65535 ;Описание поведения оси крестовины движение вверх/вниз ;Значение оси при нажатии стрелки вверх upper_value = 1 ;Значение оси при нажатии стрелки вниз lower_value = -1 upper_value = 1 lower_value = -1
Дополнительная информация об особенностях настройки модуля gamepad отображена в справочном руководстве по RCML .
3. Следующий шаг — написание программы на языке RCML.
В корне созданного каталога, необходимо создать файл программы. Имя файла программы и его расширение может быть любым, однако следует избегать русских букв в названии. В примере использовано имя файла — hello.rcml.
Для модуля lego_ev3 программный код резервирования робота, имеет следующий вид:
На странице подключения модуля lego_ev3 описано большинство функций, поддерживаемых контроллером. В качестве тестового примера, была создана программа для автоматического вхождения робота в занос.
Алгоритм программы следующий:
После резервирования первого свободного робота, устанавливается связь двух двигателей для последующей работы с ними, как с одним. Затем робот начинает выполнять заносы. Программное описание действий робота позволяет точно устанавливать углы поворота передних колес и скорость вращения задних. Использование этого приёма позволяет добиваться результатов, которые сложно повторить во время ручного пилотирования с клавиатуры или геймпада.
Листинг программы для Lego робота на языке RCML
function main() < @tr = robot_lego_ev3; //Резервирование робота @tr->setTrackVehicle(«B»,»C»,0,0); //Установка синхронизации двигателей @tr->motorMoveTo(«D»,100,0,0); system.sleep(500); @tr->trackVehicleForward(-100); system.sleep(1000); @tr->motorMoveTo(«D»,50,-50,0); system.sleep(4000); @tr->motorMoveTo(«D»,50,50,0); system.sleep(4000); @tr->trackVehicleOff(); system.sleep(1000); >
Для компилирования программы необходимо использовать командную строку window. Сначала следует переместиться в созданный каталог с исполняемыми файлами rcml_compiler.exe и rcml_intepreter.exe. Далее нужно ввести следующие команды.
Команда для компилирования файла hello.rcml:
Rcml_compiler.exe hello.rcml hello.rcml.pc
В результате компилирования, в созданной директории появится новый файл hello.rcml.pc.
Скриншот командой строки после успешного компилирования
Теперь следует убедиться в том, что контроллер EV3 включен, сопряжен с Bluetooth адаптером. Геймпад должен быть подключен к ПК. После этого нужно выполнить команду исполнения программного файла:
Видеоролик демонстрирующий программу движения робота расположен внизу статьи.
4. Следующий шаг – управление роботом в ручном режиме при помощи клавиатуры.
При помощи клавиатуры возможно управление любым двигателем робота. В рамках примера реализовано управление следующими механизмами:
- Углом поворота передних колес
- Направлением вращения задних колес
Листинг программы взаимодействия клавиатуры и робота Lego на базе контроллера EV3
function main() < @tr = robot_lego_ev3; //Резервирование робота @tr->setTrackVehicle(«B»,»C»,0,0); //Установка синхронизации двигателей system.hand_control(@tr,»keyboard», «straight»,»go», «speedMotorD»,»rotate»); >
Далее следует откомпилировать программу и выполнить её. Результат ручного управления Lego роботом при помощи на клавиатуры показан на видео внизу страницы.
5. Помимо клавиатуры доступен модуль gamepad позволяющий манипулировать роботом при помощи геймпада. Для реализации управления робота при помощи геймпада необходимо описать на уровне программы, какие оси робота будут принимать значения осей геймпада.
Листинг программы взаимодействия геймпада и робота Lego
function main() < @tr = robot_lego_ev3; //Резервирование робота @tr->setTrackVehicle(«B»,»C»,0,0); //Установка синхронизации двигателей system.hand_control(@tr,»gamepad», «straight»,» RTUD», «speedMotorD»,» RTLR»); >
Далее следует повторить процесс компилирования программы и затем выполнить её. Далее показан результат ручного управления Lego роботом при помощи на геймпада, и все ранее подключенные способы:
В статье кратко продемонстрированы только лишь некоторые возможности RCML. Наиболее подробное описание находиться в справочном руководстве.
- lego mindstorms
- робототехника
- программирование
Конструктор LEGO Mindstorms представляет собой набор электронных блоков и сопрягаемых деталей, предназначенный для создания программируемого робота. Первый набор Mindstorms компания LEGO представила еще в 1998 году, а спустя 8 лет, в 2006 году, была выпущена в свет первая версия набора LEGO Mindstorms NXT 1.0, еще через 3 года, в 2009 году вышла вторая версия набора — LEGO Mindstorms NXT 2.0, и, наконец, в 2013 году появился в продаже набор LEGO Mindstorms EV3.
Набор LEGO Mindstorms включает в себя как стандартные детали LEGO, такие как оси, шестерни, балки, колеса и сервомоторы, так и двигатели, сенсоры, и программируемый блок. Эти наборы подразделяются на ресурсный и базовый.
Базовый набор LEGO MINDSTORMS NXT есть трех версий:
8527 LEGO MINDSTORMS содержит 577 деталей, 2006 года выпуска. Это — первая версия коммерческого набора;
9797 LEGO MINDSTORMS Education NXT Base Set содержит 431 деталь, 2006 года выпуска. Это — базовый набор для обучения, образовательный набор;
8547 LEGO MINDSTORMS NXT 2.0 содержит 619 деталей, 2009 года выпуска. Это — вторая версия коммерческого набора.
Каждый из трех наборов включает в себя интеллектуальный блок NXT одной и той же версии. Прошивки отличаются, но легко обновляются, поэтому наборы можно считать в принципе равноценными.
Ресурсный набор LEGO MINDSTORMS Education Resource Set есть двух версий:
9648 LEGO MINDSTORMS Education Resource Set;
9695 LEGO MINDSTORMS Education Resource Set.
Ресурсный набор 2010 года выпуска содержит 817 деталей, они более разнообразны.
Базовый набор 2013 года выпуска LEGO MINDSTORMS EV3 3.0 поставляется в одной версии 31313, и содержит 601 деталь. «EV» расшифровывается здесь как Evolution.
Наборы LEGO Mindstorms комплектуются блоками управления на микроконтроллерах нескольких версий RCX, NXT и EV3. На текущий момент их три, кроме того есть модификации 1.0; 2.0 и 3.0.
Огромное количество сенсоров, которыми комплектуются наборы LEGO Mindstorms открывают широкие возможности для творчества. Сенсоры выпускают и сторонние производители, такие как Mindsensors и HiTechnic. Вот лишь несколько примеров стандартных сенсоров для LEGO Mindstorms NXT: сервомотор-тахометр NXT, ультразвуковой сенсор расстояния NXT, сенсор касания NXT, сенсор звука NXT, сенсор освещенности NXT. Вообще, список довольно обширен.
Давайте же рассмотрим, что представляет собой набор LEGO MINDSTORMS EV3.
Что касается начинки EV3, то интеллектуальный блок оснащен процессором Sitara AM1808 (ARM9) частотой 300 МГц от Texas Instruments, имеет 64 Мб оперативной памяти, 16 Мб Flash-памяти, также есть слот для карт памяти microSDHC до 32 Гб. В наличии USB-хост и Bluetooth, возможен Wi-Fi через USB-донгл, поддерживаются устройства Apple. Также блок оснащен монохромным LCD-дисплеем, разрешением 178×128. Все моторы и NXT-сенсоры полностью совместимы с блоком EV3. Кстати, NXT-блок может быть запрограммирован под EV3, но некоторые функции будут недоступны.
Коробка с конструктором может быть развернута в трассу с разноцветными зонами, и сенсоры цвета отлично будут с ними взаимодействовать. Детали, находящиеся в коробке, изначально разложены в несколько отдельных пакетиков. Кроме того, есть в комплекте набор наклеек и инструкция.
Интеллектуальный блок EV3 является сердцем конструктора. Питание осуществляется 6 пальчиковыми батарейками. Для управления служат 6 кнопок, причем подсветка имеет три цветовых режима индикации. Для подключения датчиков имеется 4 порта ввода, также присутствуют 4 порта вывода команд. Для подключения блока к компьютеру — гнездо miniUSB, порт USB-хост для организации соединений, встроенный динамик и, как упоминалось ранее, слот для карты памяти. Программный интерфейс позволяет создавать и настраивать программы непосредственно с блока.
Кроме интеллектуального блока, в комплект включены:
2 больших сервомотора, оснащенные точными датчиками вращения, и могущие развить 170 оборотов в минуту при максимальном крутящем моменте в 40 Нсм.
Также есть один средний сервомотор, крутящий момент здесь меньше — до 12 Нсм, однако обороты могут достигать 250 в минуту.
Датчик цвета и освещенности с возможностью различать 8 цветов с частотой опроса до 1 кГц.
Датчик касания, способный распознавать щелчок, прикосновение, освобождение и считать их количество.
ИК-датчик расстояния, применимый и для ДУ, способный принимать сигнал даже с 2 метров, с диапазоном измерения расстояния в радиусе до 70 см. Доступны 4 канала для индивидуального приема сигналов, управляющих команд.
Инфракрасный маяк для ИК-датчика, может работать как пульт ДУ. На корпусе есть зеленый индикаторный светодиод и переключатель каналов. Может предавать в 4 отдельных канала в радиусе до 2 метров. Автоматически отключается через час простоя. Питается от двух мизинчиковых батареек.
Кроме включенных в комплект датчиков, могут использоваться и другие датчики:
Гироскопический датчик для измерений вращательных движений робота с точностью в 3 градуса, чувствительный к моментам до 440 градусов в секунду. Частота опроса до 1 кГц.
Ультразвуковой датчик, служащий для измерения расстояний посредством передачи и приема отраженных волн. Может работать как сонар и как приемник звуковых волн в качестве управляющих сигналов. Способен измерять расстояния до 2,5 метров с точностью в 1 см.
Поддерживаются не только сенсоры и аксессуары LEGO, но и модели сторонних производителей, например Mindsensors и HiTechnic. Это могут быть джойстики, компасы, акселерометры и т. д. Ассортимент всевозможных решений очень-очень широк.
Для программирования робота можно использовать программное обеспечение LEGO Mindstorms EV3 Home Edition для Windows или OS X, которое легко скачивается на официальном сайте LEGO. Там же есть обилие прошивок, обучающих материалов по программированию, видеороликов, интерактивных инструкций, описаний миссий.
Разумеется, EV3 может управляться со смартфона на Android или iOS, для этого есть отдельные приложения. Программирование возможно и на Java и на множестве других языков: ASM/C/C++/Perl/Python/Ruby/VB/Haskell/Lisp/Matlab/LabVIEW.
На официальном сайте LEGO можно найти 17 моделей с инструкциями для сборки разных роботов из комплекта EV3. Вот эти модели:
TRACK3R — робот на гусеничном ходу высокой проходимости с четырьмя взаимозаменяемыми инструментами.
SPIK3R — робот-скорпион, может резко разворачиваться, хватать клешней-дробилкой предметы, а хвост-молния даст отпор всему, что окажется на его пути.
R3PTAR — робот-кобра высотой 35см, может скользить по полу, атаковать предметы клыками с высокой скоростью.
GRIPP3R — этот робот способен поднимать тяжести, может захватить, поднять и кинуть жестяную банку.
EV3STORM — робот на гусеничном ходу со множеством миссий.
BOBB3E — робот-погрузчик Bobcat® с возможностью дистанционного управления посредством кнопок ИК-маяка, может двигаться или поднимать различные предметы.
BANNER PRINT3R — робот-принтер. Он умеет рисовать обычным маркером, проводя линии. Можно задавать собственный рисунок.
RAC3 TRUCK — гоночный грузовик на дистанционном управлении. Можно добавить прицеп.
DINOR3X — робот-трицератопс ходит и поворачивается на четырех ногах.
KRAZ3 — робот реагирует на ИК-маяк своего друга-жучка. Можно также управлять роботом с помощью настраиваемой программы или запрограммировать так, чтобы он двигался исключительно за жучком;
EV3D4 — созданный по мотивам “Звездных войн”, может следовать за владельцем, перемещаться по ИК-маяку, общаться. Поддерживает обширный набор сценариев, которые можно программировать и расширять, используя новое ПО EV3.
EL3CTRIC GUITAR — Ударяя по одной струне, перебирая пальцами по безладовому грифу, используя тремоло-систему, можно исполнять невероятные соло на этой гитаре!
EV3MEG — робот-помощник, способный перемещаться точно по линиям определенного цвета, благодаря датчику освещенности. Обнаруживает препятствия на пути и реагирует на них. Способен перемещаться как самостоятельно, так и управляться с помощью ИК-маяка.
Игра EV3 — робот умеет прятать мячик под стаканчик, затем менять стаканчики местами, а вам предстоит угадать, где мячик. Используя ИК-маяк можно задавать уровень.
MR.B3AM — измеряет длину балок LEGO® Technic, определяет цвет и размер балок.
ROBODOZ3R — робот-бульдозер. Может двигаться самостоятельно или управляться дистанционно. Расчищает себе путь, отваливая и отодвигая с пути мешающие предметы.
В силу того, что данные наборы заставляют думать, моделировать, изобретать, в общем побуждают к творчеству и развитию, вовсе не удивительно, что во множестве стран весьма широко внедрено обучение в колледжах и школах с использованием наборов LEGO Mindstorms.
Стали довольно популярны соревнования роботов, в которых каждое учебное заведение может выставить свои команды роботостроителей на соревнования. Проводятся такие соревнования и в России, самое известное из таких мероприятий — РобоФест. Лучшие из лучших попадают на Всемирную Олимпиаду Роботов — WRO (World Robot Olympiad).
Где купить LEGO Mindstorms EV3?
Цена LEGO Mindstorms EV3 зависит от комплектации набора. Различные комплектации LEGO Mindstorms, его образовательные версии, можно приобрести у специализированных продавцов LEGO Education.
Конструктор LEGO – это более универсальный материал, чем может показаться на первый взгляд. Ведь с его помощью можно строить не только игрушечные машинки и домики, но и достаточно сложные конструкции, например, роботов под управлением мобильного телефона. Вот подобные наборы с названием Mindstorm EV3 и представила недавно датская компания на выставке 2013 CES в Лас-Вегасе.
В прошлом году четырнадцатилетний американский школьник прославился на весь технический мир тем, что создал из LEGO , умеющий рисовать фломастером заданные пользователем рисунки. А в 2013-м датская компания и сама выпустила продукт с похожим названием – Mindstorm EV3. Но это не принтер, а сборные роботы, собираемые вручную из деталей упомянутого выше конструктора.
Основу Mindstorm EV3 составляет некое подобие системного блока, небольшой компьютер на базе ARM-процессора, работающий под управлением операционной системы Linux. Он имеет 16 мегабайт встроенной флеш-памяти, 64 мегабайта памяти оперативной, слот расширения для SD-карточек, а также Wi-Fi-модуль.
Вот этот системный блок и станет «мозгом» робота, который каждый обладатель комплекта Mindstorm EV3 сможет собрать собственноручно, следуя инструкциям от производителя или руководясь своим инженерным техническим талантом.
Модуль же будет управлять действиями этого робота, в зависимости от выбранной предустановленной программы или алгоритма, написанного самим пользователем.
Более того, компания LEGO обещает, что робот Mindstorm EV3 сможет также взаимодействовать с мобильными телефонами под управлением операционных систем Android и iOS. Достаточно будет лишь установить на них специальное программное обеспечение, чтобы одними лишь движениями пальцев по экрану смартфона управлять действиями собранного только что собственными руками робота.
Комплект LEGO Mindstorm EV3 включает в себя 594 детали, а собрать простейшего робота с его помощью можно будет всего за 20 минут. Производитель обещает начать продажи этого необычного конструктора уже в 2013 году.
Инфракрасный датчик входит домашнюю версию набора Lego mindstorms EV3. Это единственный датчик, который может применяться как самостоятельно, так и в паре с инфракрасным маяком, тоже являющимся частью домашнего набора. Следующие два урока мы посвятим изучению этих двух устройств, а также их взаимодействию между собой.
8.1. Изучаем инфракрасный датчик и инфракрасный маяк
8.2. Инфракрасный датчик. Режим «Приближение»
Этот режим работы инфракрасного датчика похож на режим определения расстояния ультразвуковым датчиком. Разница кроется в природе световых волн: если звуковые волны отражаются от большинства материалов практически без затухания, то на отражение световых волн влияют не только материалы, но и цвет поверхности. Темные цвета в отличие от светлых сильнее поглощают световой поток, что влияет на работу инфракрасного датчика. Диапазон работы инфракрасного датчика также отличается от ультразвукового — датчик показывает значения в пределах от 0 (предмет находится очень близко) до 100 (предмет находится далеко или не обнаружен). Еще раз подчеркнем: инфракрасный датчик нельзя использовать для определения точного расстояния до объекта, так как на его показания в режиме «Приближение» оказывает влияние цвет поверхности исследуемого предмета. В свою очередь это свойство можно использовать для различия светлых и темных объектов, находящихся на равном расстоянии до робота. С задачей же определения препятствия перед собой инфракрасный датчик справляется вполне успешно.
Решим практическую задачу, похожую на Задачу №14 Урока №7 , но, чтобы не повторяться, усложним условие дополнительными требованиями.
Задача №17: написать программу прямолинейно движущегося робота, останавливающегося перед стеной или препятствием, отъезжающего немного назад, поворачивающего на 90 градусов и продолжающего движение до следующего препятствия.
У робота, собранного по инструкции small-robot-31313 , впереди по ходу движения установлен инфракрасный датчик. Соединим его кабелем с портом «3» модуля EV3 и приступим к созданию программы.
Рассмотрим программный блок «Ожидание» Оранжевой палитры, переключив его в Режим: — «Сравнение» — «Приближение» (Рис. 3) . В этом режиме программный блок «Ожидание» имеет два входных параметра: «Тип сравнения» и «Пороговое значение» . Настраивать эти параметры мы уже умеем.
- Начать прямолинейное движение вперед
- Ждать, пока пороговое значение инфракрасного датчика станет меньше 20
- Прекратить движение вперед
- Отъехать назад на 1 оборот двигателей
- Повернуть вправо на 90 градусов (воспользовавшись знаниями Урока №3, рассчитайте необходимый угол поворота моторов)
- Продолжить выполнение пунктов 1 — 5 в бесконечном цикле.
Попробуйте решить Задачу № 17 самостоятельно, не подглядывая в решение.
А теперь для закрепления материала попробуйте адаптировать решение Задачи №15 Урока №7 к использованию инфракрасного датчика! Получилось? Поделитесь впечатлениями в комментарии к уроку.
8.3. Дистанционное управление роботом с помощью инфракрасного маяка
Инфракрасный маяк, входящий в домашнюю версию конструктора Lego mindstorms EV3, в паре с инфракрасным датчиком позволяет реализовать дистанционное управление роботом. Познакомимся с маяком поближе:
- Пользуясь инфракрасным маяком, направляйте передатчик сигнала (Рис. 5 поз. 1) в сторону робота. Между маяком и роботом должны отсутствовать любые препятствия! Благодаря широкому углу обзора инфракрасный датчик уверено принимает сигналы, даже если маяк располагается позади робота!
- На корпусе маяка расположены 5 серых кнопок (Рис. 5 поз. 2) , нажатия которых распознает инфракрасный датчик, и передает коды нажатий в программу, управляющую роботом.
- С помощью специального красного переключателя (Рис. 5 поз. 3) можно выбрать один из четырех каналов для связи маяка и датчика. Сделано это для того, чтобы в непосредственной близости можно было управлять несколькими роботами.
Задача №18: написать программу дистанционного управления роботом с помощью инфракрасного маяка.
Мы уже знаем, что для реализации возможности выбора выполняющихся блоков необходимо воспользоваться программным блоком «Переключатель» Оранжевой палитры. Установим режим работы блока «Переключатель» в — «Измерение» — «Удалённый» (Рис. 6) .
Для активации связи между инфракрасным датчиком и маяком необходимо установить правильное значение параметра «Канал» (Рис. 7 поз. 1) в соответствии с выбранным каналом на маяке! Каждому программному контейнеру блока «Переключатель» необходимо сопоставить один из возможных вариантов нажатия серых клавиш (Рис. 7 поз. 2) . Заметьте: некоторые варианты включают одновременное нажатие двух клавиш (нажатые клавиши помечены красным цветом). Всего в программном блоке «Переключатель» в этом режиме можно обрабатывать до 12 различающихся условий (одно из условий должно быть выбрано условием по умолчанию). Добавляются программные контейнеры в блок «Переключатель» нажатием на «+» (Рис. 7 поз.3) .
Предлагаем реализовать следующий алгоритм управления роботом:
- Нажатие верхней левой кнопки включает вращение левого мотора, робот поворачивает вправо (Рис. 7 поз. 2 значение: 1)
- Нажатие верхней правой кнопки включает вращение правого мотора, робот поворачивает влево (Рис. 7 поз. 2 значение: 3)
- Одновременное нажатие верхних левой и правой кнопок включает одновременное вращение вперед левого и правого мотора, робот двигается вперед прямолинейно (Рис. 7 поз. 2 значение: 5)
- Одновременное нажатие нижних левой и правой кнопок включает одновременное вращение назад левого и правого мотора, робот двигается назад прямолинейно (Рис. 7 поз. 2 значение: 8)
- Если не нажата ни одна кнопка маяка — робот останавливается (Рис. 7 поз. 2 значение: 0) .
При разработке алгоритма дистанционного управления вы должны знать следующее: когда нажата одна из комбинаций серых кнопок — инфракрасный маяк непрерывно посылает соответствующий сигнал, если кнопки отпущены, то отправка сигнала прекращается. Исключение составляет отдельная горизонтальная серая кнопка (Рис. 7 поз 2 значение: 9) . Эта кнопка имеет два состояния: «ВКЛ» — «ВЫКЛ» . Во включенном состоянии маяк продолжает посылать сигнал, даже если вы отпустите кнопку (о чём сигнализирует загорающийся зеленый светодиод), чтобы выключить отправку сигнала в этом режиме — нажмите горизонтальную серую кнопку еще раз.
Приступим к реализации программы:
Наш алгоритм дистанционного управления предусматривает 5 вариантов поведения, соответственно наш программный блок «Переключатель» будет состоять из пяти программных контейнеров. Займемся их настройкой.
- Вариантом по умолчанию назначим вариант, когда не нажата ни одна кнопка (Рис. 7 поз. 2 значение: 0) . Установим в контейнер программный блок , выключающий моторы «B» и «C» .
- В контейнер варианта нажатия верхней левой кнопки (Рис. 7 поз. 2 значение: 1) установим программный блок «Большой мотор» , включающий мотор «B» .
- В контейнер варианта нажатия верхней правой кнопки (Рис. 7 поз. 2 значение: 3) установим программный блок «Большой мотор» , включающий мотор «C» .
- В контейнер варианта одновременного нажатия верхних левой и правой кнопок (Рис. 7 поз. 2 значение: 5) установим программный блок «Независимое управление моторами»«B» и «C» вперед.
- В контейнер варианта одновременного нажатия нижних левой и правой кнопок (Рис. 7 поз. 2 значение: 8) установим программный блок «Независимое управление моторами» , включающий вращение моторов «B» и «C» назад.
- Поместим наш настроенный программный блок «Переключатель» внутрь программного блока «Цикл» .
По предложенной схеме попробуйте создать программу самостоятельно, не подглядывая в решение!
Загрузите получившуюся программу в робота и запустите её на выполнение. Попробуйте управлять роботом с помощью инфракрасного маяка. Всё ли у вас получилось? Понятен ли вам принцип реализации дистанционного управления? Попробуйте реализовать дополнительные варианты управления. Напишите свои впечатления в комментарии к этому уроку.
* Хотите увидеть невидимые волны? Включите режим фотосъемки в мобильном телефоне и поднесите излучающий элемент дистанционного пульта от телевизора к объективу мобильного телефона. Нажимайте кнопки пульта дистанционного управления и на экране телефона наблюдайте свечение инфракрасных волн.