- Программирование микрокомпьютера LEGO NXT Mindstorms 2.0. Введение
- Предвосхищая некоторые вопросы и комментарии читателей.
- Краткий обзор платформ MRDS 4 и NI LabVIEW.
- Краткий обзор набора LEGO NXT Mindstorms 2.0.
- Пишем первое приложение.
- Резюме
- Lego Mindstorms NXT 2.0. Обзор
- Профили
- Создание и открытие программ
- Доступ к программным блокам
Программирование микрокомпьютера LEGO NXT Mindstorms 2.0. Введение
Здравствуйте. В своих статьях я хочу Вас познакомить с основами программирования микрокомпьютера LEGO NXT Mindstorms 2.0. Для разработки приложений я буду использовать платформы Microsoft Robotics Developer Studio 4 (MRDS 4) и National Instruments LabVIEW (NI LabVIEW). Будут рассматриваться и реализовываться задачи автоматического и автоматизированного управления мобильными роботами. Двигаться мы будем от простого к сложному.
Предвосхищая некоторые вопросы и комментарии читателей.
Почему именно NXT Mindstorms 2.0? Потому-что для своих проектов данный набор мне показался наиболее подходящим, т.к. микрокомпьютер NXT полностью совместим с платформами MRDS 4 и NI LabVIEW, а так же данный набор является очень гибким в плане сборки различных конфигураций роботов — затрачивается минимум времени на сборку робота.
Почему платформы MRDS 4 и NI LabVIEW? Так сложилось исторически. Обучаясь на старших курсах университета стояла задача в разработке учебных курсов с использованием данных платформ. К тому же платформы обладают достаточной простотой в освоении и функциональностью, с их использованием можно написать программу непосредственно для управления роботом, разработать интерфейс пользователя и провести тестирование в виртуальной среде (в случае с MRDS 4).
Да кому вообще нужны эти ваши уроки, в сети и так куча проектов по робототехнике! С использованием данной связки (NXT+MRDS 4/NI LabVIEW) учебных статей практически нет, в основном используется родная среда программирования, а в ней совсем все тривиально. Всем кому интересны робототехника, программирование и у кого есть набор NXT (а таких не мало), возрастная аудитория любая.
Графические языки программирования это зло, а те кто на них программируют еретики! Графические языки программирования коими и являются MRDS 4 и NI LabVIEW несомненно имеют свои минусы, например ориентированность под узкие задачи, но все же в функциональности они мало уступают текстовым языкам, тем более NI LabVIEW изначально разрабатывался как язык легкий в освоении для решения научных и инженерных задач, для этого в нем присутствует множество необходимых библиотек и инструментов. По-этому для решения наших задач данные графические языки являются наиболее подходящими. И не надо нас за это сжигать на костре презирать.
Все это выглядит по-детски и вообще не серьезно! Когда задача состоит в реализации алгоритмов, в обучении основам и принципам программирования, робототехники, систем реального времени без углубления в схемотехнику и протоколы, то это очень подходящий инструмент хоть и не дешевый (касаемо набора NXT). Хотя для этих же целей неплохо подойдут наборы на базе Arduino, но совместимости с MRDS 4 и NI LabVIEW у данного контроллера почти нет, а в данных платформах есть свои прелести.
Технологии, которые используются, являются продуктом загнивающих капиталистических стран, а автор враг народа и пособник западных заговорщиков! К сожалению, большинство технологий в области электроники и вычислительной техники родом с запада, буду очень рад если мне укажут на аналогичные технологии исконно отечественного производства. А пока будем использовать то, что имеем. И не надо на меня за это сообщать спецслужбам держать зла.
Краткий обзор платформ MRDS 4 и NI LabVIEW.
Внесу некоторую ясность в терминологию. Под платформой, в данном случае, имеется ввиду совокупность различных инструментов, например язык VPL в MRDS, а так же среда выполнения приложений, т.е. непосредственной компиляции приложений в исполняемые (*.exe) файлы нету.
В 2006 году Microsoft объявила о создании платформы Microsoft Robotics Developer Studio (более подробно в статье Википедии). MRDS – это Windows – ориентированная среда разработки приложений для робототехники и симуляции. В настоящее время актуальной является версия Microsoft Robotics Developer Studio 4. Среди особенностей: язык графического программирования VPL, Web – и Windows – ориентированные интерфейсы, среда симуляции VSE, упрощенный доступ к датчикам, микроконтроллеру и исполнительным механизмам робота, поддержка языка программирования C#, библиотеки для многопоточного программирования и распределенного выполнения приложений CCR и DSS, поддержка многих робототехнических платформ (Eddie, Boe — Bot, CoroBot, iRobot, LEGO NXT и т.д.).
- блочной диаграммы, описывающей логику работы виртуального прибора;
- лицевой панели, описывающей интерфейс пользователя виртуального прибора.
Краткий обзор набора LEGO NXT Mindstorms 2.0.
- 32-битный микроконтроллер AVR7 с 256 КБайт FLASH памяти и 64 КБайт RAM памяти;
- 8-битный микроконтроллер AVR c 4 Кбайт FLASH памяти и 512 Байт RAM памяти;
- радиомодуль Bluetooth V 2.0;
- USB-порт;
- 3 разъема для подключения сервоприводов;
- 4 разъема для подключения датчиков;
- LCD дисплей разрешением 99×63 пикселей;
- динамик;
- разъем для 6 батареек типа AA.
- ультразвуковой датчик;
- два тактильных датчика (датчики касания);
- датчик опредения цвета.
Рисунок 1 — Микрокомпьютер NXT с подключенными датчиками и приводами
И конечно же в наборе находятся разнообразные детали LEGO в форм-факторе LEGO Technic из которых будут собраны исполнительные механизмы и несущая конструкция.
Рисунок 2 — Детали в форм-факторе LEGO Technic
Пишем первое приложение.
Напишем первое приложение. Пусть, классически, данное приложение выводит текст “Hello, World!”. Реализация будет происходить поочередно в MRDS 4 и NI LabVIEW, в процессе будем рассматривать специфику каждой платформы.
Предварительно инсталлируем платформы MRDS 4 и NI LabVIEW, в случае с MRDS 4 инсталляция должна проводится в папку путь к которой не состоит из кириллицы (русских букв), учетная запись пользователя так-же должна состоять только из латинских букв.
1. Платформа MRDS 4.
Запускаем среду VPL (Меню Пуск — Все Программы — Microsoft Robotics Developer Studio 4 — Visual Programming Language). Данная среда позволяет разрабатывать приложения на языке VPL, проводить тестирование в виртуальной среде VSE. Программа в VPL представляет собой диаграмму, состоящую из соединенных между собой блоков. В открывшемся окне, помимо стандартной панели команд и меню, присутствует 5 основных окон:
- Basic Activities – содержит базовые блоки, которые реализуют такие операторы как константа, переменная, условие и т.д.;
- Services – содержит блоки, предоставляющие доступ к функционалу платформы MRDS, например блоки для взаимодействия с какой-либо аппаратной составляющей робота, или блоки для вызова диалогового окна;
- Project – объединяет диаграммы входящие в проект, а так же различные конфигурационные файлы;
- Properties – содержит свойства выделенного блока;
- Diagrams window – содержит, непосредственно, диаграмму (исходный код) приложения.
Рисунок 3 — Среда программирования VPL
Выполним следующую последовательность действий:
- добавим блоки Data (из окна Basic Activities) и блок сервиса Simple Dialog (из окна Services),
- в блок Data введем “Hello, World!” (без кавычек) и выберем тип данных String,
- соединим блок Data с блоком Simple Dialog, появиться диалоговое окно,
- далее, все выполняем как на рисунках
Рисунок 4 — Окно Connections
Рисунок 5 — Окно Data Connections
Рисунок 6 — Законченный вид диаграммы
2. Платформа NI LabVIEW.
На данной платформе все реализуется, практически, идентично. Запустим среду LabVIEW. Перед нами появиться два окна, первое — Front Panel, предназначено для реализации интерфейса пользователя (внешнего вида виртуального прибора), второе — Block Diagram, для реализации логики программы.
Рисунок 8 — Окна среды LabVIEW
Мы будем использовать окно Block Diagram. Выполним следующие шаги:
- в окне Block Diagram вызовем контекстное меню, нажатием правой кнопкой мыши,
- в появившемся окне перейдем по вкладкам, как на рисунке и выберем String Constant,
Рисунок 9 — Контекстное меню
Рисунок 10 — Блок One Button Dialog
Рисунок 11 — Готовая диаграмма
Резюме
- Мы сделали обзор программных платформ для разработки приложений микрокомпьютера NXT.
- Мы рассмотрели основные принципы разработки приложений в платформах MRDS 4 и NI LabVIEW.
- Познакомились с интерфейсом сред.
- Программируем микрокомпьютер NXT в LabVIEW — Лидия Белиовская, Александр Белиовский,
- Microsoft Robotics Developer Studio. Программирование алгоритмов управления роботами — Василий Гай.
Lego Mindstorms NXT 2.0. Обзор
Запустите программное обеспечение Mindstorms NXT 2.0. В открывшемся окне (Рис. 1.4) можно просмотреть видео «Getting Started Guide » (Руководство к быстрому старту) и » Software Overview » (Обзор программного обеспечения).
Профили
Если при разработке программ на NXT-G один компьютер используется несколькими пользователями, то удобно создать для каждого разработчика свой уникальный профиль, в котором будут храниться программы только этого разработчика. После установки Lego Mindstorms NXT 2.0 автоматически создаётся один профиль с именем Default (по умолчанию) (Рис. 1.5).
Пример 1.3. Создадим новый профиль Student . Для этого выберем пункт меню Edit\Manage Profiles . В появившемся окне (Рис. 1.6) последовательно нажимаем на кнопку Create (по умолчанию для нового профиля будет предложено имя Profile-1 ), заполняем поле Name и нажимаем кнопку Close .
Теперь можно выбрать свой уникальный профиль из списка (Рис. 1.7):
Задание 1.6. Удалите профиль Student и создайте профиль со своим именем. Перед дальнейшей работой выберите свой профиль.
Создание и открытие программ
Пользовательский интерфейс среды по умолчанию устанавливает для первой новой программы имя Untitled-1 (Безымянная-1). В дальнейшем номер каждой новой создаваемой Вами программы автоматически увеличивается на единицу. Однако более целесообразно использовать для своих программ уникальные «говорящие» имена.
В поле Create new program (Создать новую программу) введите Hello! и нажмите кнопку Go (Вперёд).
Внимание! Экран NXT отображает текст только на английском языке, поэтому символы кириллицы в имени файла недопустимы.
В дальнейшем открыть уже созданную программу можно, выбрав её из списка в поле Open recent program (Открыть существующую программу) (Рис. 1.8).
Для создания и открытия файлов можно использовать и стандартные средства — комбинации клавиш Ctrl+N и Ctrl+O соответственно или воспользоваться меню File .
Вкладки в левой верхней части окна среды позволяют открыть Robo Center и My Portal (Рис. 1.9). Эти возможности мы оставляем за рамками настоящего пособия и рекомендуем читателю самостоятельно с ними ознакомиться. Просто нажмите на крестик, чтобы увеличить область программирования.
При необходимости эти вкладки всегда можно включить.
Доступ к программным блокам
В NXT-G реализован визуальный способ проектирования программ, что очень удобно для обучения. Программа составляется из блоков. Каждый блок представляет различные типы действий. Блоки можно настраивать. Все блоки организованы и представлены в трёх палитрах программирования (Рис. 1.10) — «Common» (Общая), «Complete» (Полная) и «Custom» (Пользовательская). Одновременно можно работать только с одной палитрой.
Блоки имеют различную окраску, которая зависит от функционального назначения блока. Блоки, функциональное назначение которых, похоже, окрашены одинаково. Например, все блоки, которые отвечают за выполнение некоторого действия ( Action ), окрашены зелёным цветом, а блоки, которые отображают текущие значения датчиков — жёлтым цветом. Цветовая окраска позволяет легко находить нужные блоки в палитре.
Блоки, которые используются наиболее часто, сгруппированы в палитре «Common». Каждая иконка этой палитры является отдельным программным блоком, кроме иконки Wait , которая показывает шесть вариантов этого блока (Рис. 1.11):
Любой из вариантов блока Wait можно получить путём настроек блока.
Задание 1.7. Изучите всплывающие подсказки блоков палитры «Common», наводя на них указатель мыши.
Полная палитра открывает доступ к 39 блокам, организованным в шесть категорий. Самая первая категория повторяет общую палитру. С остальными категориями мы познакомимся позднее на конкретных примерах.
Пользовательская палитра содержит блоки, которые Вы загрузили и создали самостоятельно. Работу с этой палитрой мы будем изучать в теме 6.