Лет эдак в 10-11, после долгих и беззаботных лет игры с контрукторами Lego, я узнал о существовании великолепного набора Mindstorms, который позволял создавать самых настоящих роботов без специализованных знаний электроники, электротехники и даже программирования. Я сразу же заинтересовался данной серией, но тогда моим мечтам обладать Mindstorms по различным (в основном - финансовым) причинам не суждено было сбыться.
Сейчас мне 20 и в честь юбилея друзья (спасибо им!) решили окунуть меня назад в детство и таки дать возможность полепить собственных роботов. Правда, в этот раз всё будет серьёзнее, чем в моих детских мыслях - мы будем действительно программировать
Mindstorms под Debian GNU/Linux.
Неплохо, да?
Собственно, данный робот и будет нашей основной тестовой моделью. Но мы попробуем немного усовершенствовать его навыки. И для этого мы напишем небольшой кусочек кода.
- task music()
- int lastTone=5000;
- while (true )
- int tone=Random (5000)+500;
- int duration=Random (500);
- PlayTone(tone,duration);
- Wait(duration);
- task main()
- start music;
- while (true )
- /* Determine Next Action */
- unsigned int duration=Random (5000);
- unsigned int motorSpeed=Random (100);
- unsigned int syncMode=Random (3);
- /* Display Next Action */
- ClearScreen();
- NumOut(0,LCD_LINE1,duration);
- NumOut(0,LCD_LINE2,motorSpeed);
- NumOut(0,LCD_LINE3,syncMode);
- /* Perform Next Action */
- switch (syncMode)
- case 0:
- OnFwdReg(OUT_AC,motorSpeed,OUT_REGMODE_SYNC);
- break ;
- case 1:
- OnRevReg(OUT_AC,motorSpeed,OUT_REGMODE_SYNC);
- break ;
- case 2:
- OnFwdSync(OUT_AC,motorSpeed,-100);
- break ;
- case 3:
- OnRevSync(OUT_AC,motorSpeed,-100);
- break ;
- Wait(duration);
Не буду спорить, программа совсем не сложна для понимания, но достаточно громоздка. И её можно заметно упросить, используя вместо написания кода на NXC специальный конвертер PyNXC . Иначе говоря, мы будем писать код на Python"е, а PyNXC будет преобразовывать его в NXC-код и загружать на устройство, избавив нас от необходимости писать громоздкий код на подобии Си.
* This source code was highlighted with Source Code Highlighter .
- # in cm
- DEFINE NEAR = 7
- def main():
- DefineSensors(None, None, None, EYES)
- while True:
- OnFwd(OUT_BC, 50)
- while SensorVal(4) > NEAR:
- Off(OUT_BC)
- while SensorVal(4) < NEAR:
- OnFwd(OUT_B, 50)
- Wait(100)
Как вы уже, наверное, заметили, программировать Mindstorms очень просто. Стоит также сказать, что помимо NXC и Python с использованием PyNXC, можно писать код на Java, Lua, Ruby, Ассемблере, а также, что логично, использовать ассемблерные вставки в других языках.
Благодаря всему этому Mindstorms из детской игрушки превращается в весьма мощную штуку, позволяющую создавать сложные и «умные» механизмы, как например вот эта гитара:
Или этот сортировщик цветных шариков:
А самое приятное во всём этом - в комплект поставки Mindstorms NXT 2.0 уже включено большинство необходимых деталей. Единственное, что действительно может понадобится - дополнительные сенсоры, которые можно купить, например, в официальном магазине Lego.
Аннотация: Проводится поверхностный обзор робототехнического комплекса, включающего конструктор Lego Mindstorms NXT 2.0 и среду программирования NXT-G. Цель: познакомиться с основными компонентами конструктора Lego Mindstorms NXT 2.0, интерфейсом среды NXT-G и научиться создавать простейшую программу "Hello, world!".
Изучение робототехники сегодня начинается уже со школьной скамьи. Однако не всем школам так повезло, и тому есть ряд объективных причин. Во-первых, стоимость одного робототехнического комплекса (здесь и далее имеется в виду Lego Mindstorms NXT 2.0) превышает стоимость средней компьютерной системы. Во-вторых, руководить занятиями робототехники должен высококвалифицированный педагог, одинаково хорошо разбирающийся и в техническом конструировании, и в микроэлектронике, и в программировании. Подготовка таких специалистов-педагогов сегодня только начинается. Ну и в-третьих, русскоязычные учебники, вышедшие из печати на сегодняшний день, можно пересчитать, по -видимому, на пальцах одной руки.
Настоящее пособие было подготовлено по результатам работы со студентами, получающими специальность учителя информатики. Авторы ставили перед собой задачу дать начальные понятия программирования роботов Lego Mindstorms NXT 2.0 на языке NXT-G. Кроме того, отдельные главы пособия были использованы на курсах по повышению квалификации и переподготовке учителей информатики на кафедре информатики и методики преподавания информатики Оренбургского государственного педагогического университета.
Не так давно появилась более новая версия робототехнического комплекса LegoMindstorms EV3. Однако имеющийся в российских школах и центрах технического творчества парк роботов Mindstorms NXT 2.0 так велик, что было бы неправильным сбрасывать его со счетов.
Программирование сегодня уже не так привлекательно для школьников как 15-20 лет назад. Это замечают многие школьные и вузовские преподаватели информатики. Нужны новые средства для мотивации учеников в этой области. По нашему мнению, робототехника сегодня как раз и является таким средством. Поэтому в пособии упор делается на алгоритмической составляющей робототехники.
Обращаем внимание студентов на то - и это очень важно! - что при работе с пособием следует не только выполнять задания, но и обязательно набирать и проверять задачи из примеров. Это поможет лучше понять язык и особенности программирования роботов.
Мы рассматриваем программирование роботов в англоязычной версии среды NXT-G, так как она распространяется свободно.
Идеи многих заданий были почерпнуты в [ , , ], авторам которых мы выражаем глубокую признательность.
В этом разделе приводятся краткие сведения о составе конструктора Lego Mindstorms NXT 2.0 и NXT-технологии, основанные на руководстве пользователя, входящем в комплект 8547. Если у Вас имеется указанное руководство, и Вы уже ознакомились с ним, то можно сразу перейти к разделу 1.2.
NXT является интеллектуальным, управляемым компьютером роботом на базе элементов LEGO и системы MINDSTORMS.
Система MINDSTORMS получила своё название благодаря книге Сеймура Пейперта "Переворот в сознании: Дети, компьютеры и плодотворные идеи", в которой автор анализирует способы формирования мышления детей и роль компьютеров в этом процессе.
Основа конструктора Lego Mindstorms NXT 2.0 - программируемый блок NXT (его ещё называют "кирпичом"), интерактивные сервомоторы и несколько датчиков. В состав комплекта 8547 входят:
В образовательной версии конструктора имеется также датчик звука, который измеряет уровень громкости звука, а вместо RGB-датчика присутствует датчик освещённости. Существуют и другие датчики, которые выпускаются отдельно от комплекта, например, для измерения температуры, pH среды, гироскопический датчик, компас и др.
Все датчики и моторы подсоединяются к NXT-блоку через порты входа и выхода посредством чёрных шестипроводных кабелей. Сенсоры подключаются к входным портам под номерами 1 - 4, а моторы - к выходным портам, имеющим на блоке NXT названия A, B, C.
В нашем учебном курсе мы придерживаемся этих рекомендаций. На самом деле можно подключать сенсоры в произвольные порты. Соблюдать стандартные порты обязательно при работе с меню Try Me (см. ниже).
Блок NXT работает от шести батарей типа AA. В образовательную версию набора входит аккумуляторная батарея.
Работа с меню NXT происходит при помощи четырёх кнопок (Рис. 1.1):
Задание 1.1. Научитесь включать и выключать свой NXT. Попробуйте выключить NXT двумя способами, описанными выше.
Вся информация на дисплее NXT отображается на английском языке. При включении экран NXT выглядит как на Рис. 1.3 :
Если NXT работает нормально, то иконка рабочего состояния крутится. Если вращение иконки прекратилось, значит NXT завис и требует перезагрузки.
По умолчанию роботу присвоено имя NXT . Имя можно изменить. Как это сделать см. в п. 1.2.
Задание 1.2. Включите NXT. Изучите информацию, которая отображается на экране NXT. Перемещайтесь по главному меню NXT при помощи стрелок. Выключите NXT.
Рассмотрим структуру меню NXT.
Пример 1.1. Настроим NXT так, чтобы он автоматически выключался через две минуты простоя. Для этого выберем из главного меню Settings\Sleep . Затем при помощи стрелок выбираем нужное значение (текущее значение отображается на экране) и нажимаем на ввод (оранжевая кнопка). Если теперь не работать с NXT в течении двух минут, то он выключится сам. Обратите внимание на вариант Never (Никогда): в этом режиме NXT не будет выключен, пока Вы сами этого не сделаете. Но это может привести к более быстрому разряду батарей.
Пример 1.2. Попробуем проиграть звуковые файлы на блоке NXT. Главное меню\My Files\Sound files\Good Job . В окне отображается имя выбранного файла и варианты работы с ним, которые можно пролистать при помощи стрелок:
Задание 1.3. Установите максимальную громкость динамиков. Проверьте громкость, проиграв произвольный звуковой файл NXT. Установите комфортную для себя громкость.
Задание 1.4. Изучите различные варианты автоотключения NXT. Установите таймер автоотключения на 10 минут.
Задание 1.5. Протестируйте датчики касания, ультразвука, мотор при помощи меню Try Me (не забудьте про стандартные порты подключения сенсоров).
Работу с другими пунктами меню будем рассматривать по мере необходимости.
Базовый набор Mindstorms NXT подходит для начинающих исследователей Мира Роботов в возрасте от 8-ми лет. В основе - база LEGO Techniс.
На ней «построены» развивающие технологические конструкторы для юных физиков, механиков и инженеров.
При помощи Mindstorms NXT 2.0 ребенок сможет:
Конструктор «LEGO Mindstorms NXT 2.0 - умный друг для юных техников, которые уже освоили Education WeDo!
В образовательную версию конструктора входит:
Характеристики:
Производитель:
LEGO Education
Артикул:
9797
Страна:
Дания
Вес:
3 кг.
Тип:
Конструктор
Возраст:
8+
Датчики и моторы
Этот датчик напоминает кнопку любого устройства – телефона, пульта или клавиатуры. Датчик способен определить, когда кнопка нажата или отпущена, также он может подсчитывать одиночные и многократные нажатия.
Он позволяет роботу различать яркость объектов и определять освещенность помещения.
Способен работать в 2 режимах – измерение отраженного света и окружающего освещения
В режиме определения яркости можно различать цвета – например, у желтого цвета яркость ниже, чем у синего
Датчик звука (микрофон) позволяет определить уровень шума.
Может измерять шум в dB (децибелах) и dBA
С помощью этого датчика робот может «видеть» предметы перед собой и определять расстояние до них.
Может измерять расстояние в диапазоне 3 — 250 см.
Дискретность результата измерений: +/- 1 см.
Все три мотора в наборе одинаковые. Стоит отметить, что в каждом моторе присутствует датчик оборотов – энкодер. Он позволяет контролировать движение мотора с высокой точностью. Характеристики мотора:
Максимальные обороты — 160- 170 об/мин.
Крутящий момент — 20 Н/см
Встроенный датчик угла поворота (энкодер) мотора с точностью 1 градус
NXT датчики, моторы и кабели совместимы с EV3, поэтому оба набора – NXT и EV3 можно комбинировать.
Программируемый блок NXT представляет собой «мозг» робота. К «мозгу» можно подключить 3 мотора и 4 сенсора, и именно в нем хранятся программы робота. Когда программа запущена блок NXT читает программу и в соответствии с ней дает команды моторам и сенсорам. Робота можно подключить к компьютеру через USB или Bluetooth. Между собой роботы могут «общаться» по Bluetooth
Xарактеристики программируемого блока NXT:
Базовые роботы
В образовательный набор включена инструкция для сборки базового робота.
Для NXT набора был выпущен ресурсный набор, позволяющий собирать другие модели, используя новые детали.
Робототехнические конструкторы NXT и EV3 являются отличным средством для изучения информатики, физики, математики, программирования.
1 Января. Раннее Утро. Мой 9 летний сын обнаружил под ёлкой подарок от Деда Мороза. Это оказалась огромная коробка с Lego Mindstorms NXT 2.0.
Итак, что мы имеем в коробке:
Это уже вторая версия набора Mindstorms. И он немного вырос по сравнению со своей первой версии. Добавились детали, появился новый датчик - Сенсор Цвета.
Кирпич может проигрывать заранее записанные звуки и отображать на своем экране подготовленные картинки и текст.
Интересная особенность кирпича это встроенный bluetooth, который можно использовать как для связи с другим кирпичом, так и для управления роботом с помочью телефона. В сети без проблем нашел софт для простых телефонов, Windows Mobile и Android.
Открыв коробку, понимаешь, что набор содержит много мелких деталей. А хранить их в коробке не очень удобно. Пригодился предыдущий опыт с лего. В использование пошла новая пластиковая коробка и пластиковые пакеты на молнии. Хоть коробка и хороша, но функционально ее больше не использовать.
Вот он какой великий и ужасный кирпич.
Инструкция в комплекте на английском языке, но в стиле Лего, все интуитивно понятно и просто. Бумажная инструкция дает пояснения по установке и настройке, заодно позволяет собрать базовый (тестовый) модуль. Остальные схемы доступны через программу Lego Mindstorm NXT.
Инструкцию на русском языке легко найти в сети, например .
Для работы кирпича потребуется 6 пальчиковых батареек AA. Рекомендую запастись аккумуляторами и зарядным устройством. Поискав, на сайте лего, был найден стандартный аккумулятор 54.95$ + блок питания 24.99$.
По мне так дороговато.
К стандартному программному обеспечению NXT-G тоже вопросов нет, все просто работает.
NXT-G это графическая среда программирования разработанная National Instruments для LEGO. Написание NXT-G программ очень похоже на создание блок-схем. Вы «пишете» программу путем перетаскивания блоков, которые описывают различные поведения, например, поворот двигателя. С использованием различных блоков, вы можете контролировать двигатели, определять расстояние до объекта или изменение цвета, а так же воспроизвести звук и выполнить код в зависимости от состояния датчиков и т.д.
Вы пишите программу, подключаете робота (кирпич) к компьютеру, заливаете программу, переносите робота на тестовый полигон и смотрите, как ваше детище начинает исследовать мир.
NXT-G предназначена для детей и взрослых, которые не имеют опыта программирования и по этой причине, она очень проста в использовании. Понятно, что возможности данной программы ограничены, но свои начальные задачи она решает превосходно. В интернете было обнаружено множество сторонних сред, которые позволяют писать непосредственно код. Постараюсь сделать обзор в скором времени.
Дальше пошло все по инструкции по маслу сборка моделей, обкатка программного обеспечения. Благодаря пошаговой инструкции Лего, сын все выполняет сам, я лишь изредка подглядываю и подсказываю правильное направление.
Для себя скачал книгу “Extreme NXT”, которая дает массу идей по использованию кирпича и инструкцию по созданию и подключению новых датчиков. Так что самое интересное еще впереди.
Ну и на последок Monster Chess - очень большие шахматы с использованием LEGO MINDSTORMS для каждой шахматной фигуры.