Введение в программирование LEGO-роботов на языке NXT-G

Lego Mindstorms NXT 2.0. Обзор

Показывать лекцию целиком

Введение

Учебник по этому курсу распространяется под лицензией Creative Commons Attribution-Noncommercial: lego-nxt-g.pdf

Изучение робототехники сегодня начинается уже со школьной скамьи. Однако не всем школам так повезло, и тому есть ряд объективных причин. Во-первых, стоимость одного робототехнического комплекса (здесь и далее имеется в виду Lego Mindstorms NXT 2.0) превышает стоимость средней компьютерной системы. Во-вторых, руководить занятиями робототехники должен высококвалифицированный педагог, одинаково хорошо разбирающийся и в техническом конструировании, и в микроэлектронике, и в программировании. Подготовка таких специалистов-педагогов сегодня только начинается. Ну и в-третьих, русскоязычные учебники, вышедшие из печати на сегодняшний день, можно пересчитать, по-видимому, на пальцах одной руки.

Настоящее пособие было подготовлено по результатам работы со студентами, получающими специальность учителя информатики. Авторы ставили перед собой задачу дать начальные понятия программирования роботов Lego Mindstorms NXT 2.0 на языке NXT-G. Кроме того, отдельные главы пособия были использованы на курсах по повышению квалификации и переподготовке учителей информатики на кафедре информатики и методики преподавания информатики Оренбургского государственного педагогического университета.

Не так давно появилась более новая версия робототехнического комплекса LegoMindstorms EV3. Однако имеющийся в российских школах и центрах технического творчества парк роботов Mindstorms NXT 2.0 так велик, что было бы неправильным сбрасывать его со счетов.

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

Обращаем внимание студентов на то - и это очень важно! - что при работе с пособием следует не только выполнять задания, но и обязательно набирать и проверять задачи из примеров. Это поможет лучше понять язык и особенности программирования роботов.

Мы рассматриваем программирование роботов в англоязычной версии среды NXT-G, так как она распространяется свободно.

Идеи многих заданий были почерпнуты в [1, 4, 6], авторам которых мы выражаем глубокую признательность.

Состав конструктора Lego Mindstorms NXT 2.0. Технология NXT

В этом разделе приводятся краткие сведения о составе конструктора Lego Mindstorms NXT 2.0 и NXT-технологии, основанные на руководстве пользователя, входящем в комплект 8547. Если у Вас имеется указанное руководство, и Вы уже ознакомились с ним, то можно сразу перейти к разделу 1.2.

NXT является интеллектуальным, управляемым компьютером роботом на базе элементов LEGO и системы MINDSTORMS.

Система MINDSTORMS получила своё название благодаря книге Сеймура Пейперта "Переворот в сознании: Дети, компьютеры и плодотворные идеи", в которой автор анализирует способы формирования мышления детей и роль компьютеров в этом процессе.

Основа конструктора Lego Mindstorms NXT 2.0 - программируемый блок NXT (его ещё называют "кирпичом"), интерактивные сервомоторы и несколько датчиков. В состав комплекта 8547 входят:

  • два датчика нажатия - кнопки;
  • датчик цвета - RGB-датчик, позволяющий роботу различать цвета и измерять яркость окружающего света;
  • ультразвуковой датчик - "глаза" робота, позволяющие ему измерять расстояние до объекта.
  • В образовательной версии конструктора имеется также датчик звука, который измеряет уровень громкости звука, а вместо RGB-датчика присутствует датчик освещённости. Существуют и другие датчики, которые выпускаются отдельно от комплекта, например, для измерения температуры, pH среды, гироскопический датчик, компас и др.

    Все датчики и моторы подсоединяются к NXT-блоку через порты входа и выхода посредством чёрных шестипроводных кабелей. Сенсоры подключаются к входным портам под номерами 1 - 4, а моторы - к выходным портам, имеющим на блоке NXT названия A, B, C.

    Производитель рекомендует для подключения сенсоров и моторов использовать стандартные порты:

  • Порт 1: Датчик касания
  • Порт 2: Датчик касания
  • Порт 3: Датчик цвета
  • Порт 4: Ультразвуковой сенсор
  • Порт A: Мотор для дополнительных функций
  • Порт B: Мотор для движения
  • Порт C: Мотор для движения
  • (рис 1.1) Внешний вид блока NXT и его разъёмы

    В нашем учебном курсе мы придерживаемся этих рекомендаций. На самом деле можно подключать сенсоры в произвольные порты. Соблюдать стандартные порты обязательно при работе с меню Try Me (см. ниже).

    Блок NXT работает от шести батарей типа AA. В образовательную версию набора входит аккумуляторная батарея.

    Работа с меню NXT происходит при помощи четырёх кнопок (Рис. 1.1):

  • Серые треугольники - кнопки "вперёд" (вправо) и "назад" (влево) - позволяют перемещаться внутри меню до нужного пункта;
  • Оранжевый квадрат соответствует клавише ввода; она же используется для включения робота;
  • Тёмно-серый прямоугольник - "отмена" или переход назад к предыдущему пункту. Эта же кнопка используется для выключения робота. Для выключения NXT нажимайте кнопку до тех пор, пока на экране не появится надпись Turn off?, после чего для подтверждения выключения нажмите оранжевую кнопку. Также можно нажать и удерживать тёмно-серую кнопку до полного выключения NXT.
  • (рис 1.2) Экран отключения блока NXT

    Задание 1.1. Научитесь включать и выключать свой NXT. Попробуйте выключить NXT двумя способами, описанными выше.

    Вся информация на дисплее NXT отображается на английском языке. При включении экран NXT выглядит как на Рис. 1.3:

    (рис 1.3) Экран блока NXT после включения
    Bluetooth включен, но NXT не определяется другими устройствами Bluetooth.
    Bluetooth включен, и NXT определяется другими устройствами Bluetooth.
    Bluetooth включен, и NXT подключен к устройству Bluetooth.
    USB подключен и работает нормально.
    USB подключен, но имеются неполадки.

    Если NXT работает нормально, то иконка рабочего состояния крутится. Если вращение иконки прекратилось, значит NXT завис и требует перезагрузки.

    По умолчанию роботу присвоено имя NXT. Имя можно изменить. Как это сделать см. в п. 1.2.

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

    Рассмотрим структуру меню NXT.

  • My Files (Мои Файлы). Здесь хранятся все файлы NXT.
  • Software files (Файлы программ). Здесь хранятся скомпилированные файлы программ, загруженных пользователем. Отсюда происходит запуск программ на выполнение.
  • NXT files (Файлы NXT). Служебные файлы NXT.
  • Sound files (Звуковые файлы). Здесь содержатся различные звуковые файлы, как встроенные, так и записанные пользователем. Вы можете записать собственные звуки, чтобы затем использовать их в программах.
  • Datalog files (Файлы данных). Содержит данные, собранные NXT при помощи меню NXT Datalog. Данные можно считывать во время работы программы или передавать по Bluetooth другим устройствам.
  • NXT Program (Программа NXT). Этот раздел позволяет программировать NXT прямо на блоке, без помощи компьютера. Можно создавать короткие программы из не более чем пяти команд. Подходит для начального знакомства с возможностями NXT. Однако сколько-нибудь сложные задачи здесь не решаются.
  • NXT Datalog (Данные NXT). Получает, отображает на экране и записывает данные с внешних устройств (датчиков) в файлы, которые затем хранятся в меню Datalog files.
  • View (Обзор). Позволяет отображать на экране данные, полученные с внешних устройств. Но, в отличие от NXT Datalog, не записывает эти данные в файлы. Может использоваться для тестирования и калибровки датчиков.
  • Bluetooth. Позволяет создать канал беспроводной связи между NXT и другими устройствами с поддержкой Bluetooth. Служит для загрузки программ без помощи USB-кабеля, обмена программами с другими NXT, дистанционного управления другими NXT (не более трёх) или управления NXT при помощи других устройств, например, с телефона.
  • Settings (Настройки). Настройка различных параметров блока NXT.
  • Volume (Громкость). Устанавливает громкость динамиков.
  • Sleep (Сон). Настраивает параметры автоматического отключения при простое.
  • NXT Version. Позволяет узнать текущие версии программных и аппаратных средств.
  • Delete files (Удаление файлов). Служит для удаления файлов. Будьте осторожны: удаляет все файлы из выбранного каталога!
  • Try Me (Попробуй). Подключив датчики и моторы к соответствующим портам, можно выполнить несколько готовых программ и познакомиться с возможностями конструктора.
  • Пример 1.1. Настроим NXT так, чтобы он автоматически выключался через две минуты простоя. Для этого выберем из главного меню Settings\Sleep. Затем при помощи стрелок выбираем нужное значение (текущее значение отображается на экране) и нажимаем на ввод (оранжевая кнопка). Если теперь не работать с NXT в течении двух минут, то он выключится сам. Обратите внимание на вариант Never (Никогда): в этом режиме NXT не будет выключен, пока Вы сами этого не сделаете. Но это может привести к более быстрому разряду батарей.

    Пример 1.2. Попробуем проиграть звуковые файлы на блоке NXT. Главное меню\My Files\Sound files\Good Job. В окне отображается имя выбранного файла и варианты работы с ним, которые можно пролистать при помощи стрелок:

  • Run - запустить выбранный файл на выполнение (иконка рабочего состояния). Если выбрать этот вариант, звуковой файл будет воспроизведён. В процессе работы файла на экран будет выведено сообщение Running, а по завершению - Done.
  • Delete - удалить выбранный файл (иконка корзины). Если выбрать этот вариант, появится предупреждающее сообщение Are you sure? (Вы уверены?). Вариант по умолчанию - иконка в форме креста (Нет). В случае, если выбранный файл всё же нужно удалить, то при помощи стрелки следует выбрать иконку с галочкой (Да).
  • Send - переслать (иконка письма). Для того, чтобы переслать файл другим устройствам, следует вначале настроить канал связи Bluetooth.
  • Задание 1.3. Установите максимальную громкость динамиков. Проверьте громкость, проиграв произвольный звуковой файл NXT. Установите комфортную для себя громкость.

    Задание 1.4. Изучите различные варианты автоотключения NXT. Установите таймер автоотключения на 10 минут.

    Задание 1.5. Протестируйте датчики касания, ультразвука, мотор при помощи меню Try Me (не забудьте про стандартные порты подключения сенсоров).

    Работу с другими пунктами меню будем рассматривать по мере необходимости.

    Среда программирования NXT-G

    Запустите программное обеспечение Mindstorms NXT 2.0. В открывшемся окне (Рис. 1.4) можно просмотреть видео "Getting Started Guide" (Руководство к быстрому старту) и "Software Overview" (Обзор программного обеспечения).

    (рис 1.4) Окно среды программирования NXT-G после запуска

    Профили

    Если при разработке программ на NXT-G один компьютер используется несколькими пользователями, то удобно создать для каждого разработчика свой уникальный профиль, в котором будут храниться программы только этого разработчика. После установки Lego Mindstorms NXT 2.0 автоматически создаётся один профиль с именем Default (по умолчанию) (Рис. 1.5).

    (рис 1.5) Профиль по умолчанию

    Пример 1.3. Создадим новый профиль Student. Для этого выберем пункт меню Edit\Manage Profiles. В появившемся окне (Рис. 1.6) последовательно нажимаем на кнопку Create (по умолчанию для нового профиля будет предложено имя Profile-1), заполняем поле Name и нажимаем кнопку Close.

    (рис 1.6) Создание собственного профиля

    Теперь можно выбрать свой уникальный профиль из списка (Рис. 1.7):

    (рис 1.7) Выбор собственного профиля

    Задание 1.6. Удалите профиль Student и создайте профиль со своим именем. Перед дальнейшей работой выберите свой профиль.

    Создание и открытие программ

    Пользовательский интерфейс среды по умолчанию устанавливает для первой новой программы имя Untitled-1 (Безымянная-1). В дальнейшем номер каждой новой создаваемой Вами программы автоматически увеличивается на единицу. Однако более целесообразно использовать для своих программ уникальные "говорящие" имена.

    В поле Create new program (Создать новую программу) введите Hello! и нажмите кнопку Go (Вперёд).

    (рис 1.8) Создание или открытие программы

    Внимание! Экран NXT отображает текст только на английском языке, поэтому символы кириллицы в имени файла недопустимы.

    В дальнейшем открыть уже созданную программу можно, выбрав её из списка в поле Open recent program (Открыть существующую программу) (Рис. 1.8).

    Для создания и открытия файлов можно использовать и стандартные средства - комбинации клавиш Ctrl+N и Ctrl+O соответственно или воспользоваться меню File.

    Вкладки в левой верхней части окна среды позволяют открыть Robo Center и My Portal (Рис. 1.9). Эти возможности мы оставляем за рамками настоящего пособия и рекомендуем читателю самостоятельно с ними ознакомиться. Просто нажмите на крестик, чтобы увеличить область программирования.

    (рис 1.9) Доступ к Robo Center и My Portal

    При необходимости эти вкладки всегда можно включить.

    Доступ к программным блокам

    В NXT-G реализован визуальный способ проектирования программ, что очень удобно для обучения. Программа составляется из блоков. Каждый блок представляет различные типы действий. Блоки можно настраивать. Все блоки организованы и представлены в трёх палитрах программирования (Рис. 1.10) - "Common" (Общая), "Complete" (Полная) и "Custom" (Пользовательская). Одновременно можно работать только с одной палитрой.

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

    (рис 1.10) Палитры блоков NXT-G

    Блоки, которые используются наиболее часто, сгруппированы в палитре "Common". Каждая иконка этой палитры является отдельным программным блоком, кроме иконки Wait, которая показывает шесть вариантов этого блока (Рис. 1.11):

    (рис 1.11) Выпадающий список вариантов блока Wait

    Любой из вариантов блока Wait можно получить путём настроек блока.

    Задание 1.7. Изучите всплывающие подсказки блоков палитры "Common", наводя на них указатель мыши.

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

    Пользовательская палитра содержит блоки, которые Вы загрузили и создали самостоятельно. Работу с этой палитрой мы будем изучать в теме 6.

    Первая программа

    Продолжим создание программы Hello! и тем самым завершим обзор интерфейса среды NXT-G.

    Правее палитры программирования находится большая область программирования. Блоки перетаскиваются мышью из палитры на специальную направляющую в виде балки Lego, которая увеличивается с очередным добавленным блоком. (рис 1.12) Исходный узел для построения программы на NXT-G

    Пример 1.4. Создадим классическую для вхождения в язык программирования программу, которая будет выводить на экран сообщение: Hello, world!

    Добавьте на лист программы блок Display из общей палитры. В нижней части окна отображается панель настроек текущего (выделенного) блока. По умолчанию блок настроен на отображение изображений (Action: Image), а именно, улыбающегося смайлика. Смена картинки возможна в свойстве File. Свойство Display позволяет очищать экран (Clear) перед выводом нового изображения.

    Нам нужно вывести на экран текст, поэтому изменим свойство Action на Text (Рис. 1.12), заменим текст по умолчанию на Hello, world! и выберем позицию отображения Line - 5 (можно просто щёлкнуть мышью в нужном месте свойства Position или задать необходимые координаты).

    (рис 1.13) Настройки блока Display Обратите внимание на то, что изменение настроек блока изменяет и внешний вид блока.

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

    Для загрузки и запуска программ на блок NXT в среде NXT-G используются управляющие кнопки или, по-другому, контроллер (Рис. 1.14):

    (рис 1.14) Контроллер NXT-G

    Подключите робот шнуром USB к компьютеру. Включите робот нажатием на оранжевую кнопку. Запустите программу на выполнение при помощи центральной кнопки контроллера. Что Вы увидели? На экране мелькнула надпись Hello! и затем сразу Done. Это означает, что программа Hello! уже завершила свою работу, а Вы этого так и не увидели. Обратите внимание, что сейчас на экране NXT отображается меню Software files.

    Для того, чтобы успеть увидеть текст на экране NXT до завершения программы, нужно использовать задержку времени. Добавим в программу новый блок Wait и настроим его на отсчёт двух секунд (Рис. 1.15):

    (рис 1.15) Настройки блока Wait

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

    Задание 1.8. Создайте новую программу Eyes, в которой на экране NXT будут изображены глаза, смотрящие налево-направо. Используйте файлы Looking left и Looking right для имитации взгляда налево/направо. Смена направления взгляда должна происходить четыре раза.

    Завершим тему присваиванием нового имени Вашему NXT-блоку.

    Пример 1.5. Изменение имени NXT. Нажмите на кнопку NXT window контроллера. В результате откроется окно, правая часть которого NXT Data содержит следующую информацию (Рис. 1.16):

  • Name (Имя)
  • Battery (Заряд батареи)
  • Connection (Соединение)
  • Free Storage (Свободная память)
  • Firmware Version (Версия программного обеспечения, так называемой "прошивки")
  • Введите в поле Name новое имя Вашего NXT и нажмите на кнопку ввода рядом с этим полем. На экране NXT автоматически отобразится новое имя.

    (рис 1.16) Окно NXT

    Вкладки Communications и Memory рассмотрим позднее.

    Вернуться к учебному плану