Программное обеспечение lego mindstorms nxt

Обновлено: 13.08.2022

Здравствуйте. В своих статьях я хочу Вас познакомить с основами программирования микрокомпьютера 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) файлы нету.

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

Краткий обзор набора LEGO NXT Mindstorms 2.0.


Рисунок 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 основных окон:

  1. Basic Activities – содержит базовые блоки, которые реализуют такие операторы как константа, переменная, условие и т.д.;
  2. Services – содержит блоки, предоставляющие доступ к функционалу платформы MRDS, например блоки для взаимодействия с какой-либо аппаратной составляющей робота, или блоки для вызова диалогового окна;
  3. Project – объединяет диаграммы входящие в проект, а так же различные конфигурационные файлы;
  4. Properties – содержит свойства выделенного блока;
  5. Diagrams window – содержит, непосредственно, диаграмму (исходный код) приложения.


Рисунок 3 — Среда программирования VPL

Выполним следующую последовательность действий:

  1. добавим блоки Data (из окна Basic Activities) и блок сервиса Simple Dialog (из окна Services),
  2. в блок Data введем “Hello, World!” (без кавычек) и выберем тип данных String,
  3. соединим блок Data с блоком Simple Dialog, появиться диалоговое окно,
  4. далее, все выполняем как на рисунках


Рисунок 4 — Окно Connections


Рисунок 5 — Окно Data Connections


Рисунок 6 — Законченный вид диаграммы


2. Платформа NI LabVIEW.

На данной платформе все реализуется, практически, идентично. Запустим среду LabVIEW. Перед нами появиться два окна, первое — Front Panel, предназначено для реализации интерфейса пользователя (внешнего вида виртуального прибора), второе — Block Diagram, для реализации логики программы.


Рисунок 8 — Окна среды LabVIEW

Мы будем использовать окно Block Diagram. Выполним следующие шаги:

  1. в окне Block Diagram вызовем контекстное меню, нажатием правой кнопкой мыши,
  2. в появившемся окне перейдем по вкладкам, как на рисунке и выберем String Constant,

Robot Commander представляет собой управляющее приложение для LEGO® MINDSTORMS®. БЕСПЛАТНАЯ загрузка для большинства смартфонов и планшетов; Robot Commander подключается к модулю EV3 по Bluetooth®. Это простое в использовании приложение позволяет взаимодействовать с вашими уникальными роботами EV3, даже не подключаясь к компьютеру! Это означает, что вы можете мгновенно начать игру с вашими собственными роботами!


Приложения для компьютеров и планшетов

Приложения LEGO® MINDSTORMS® EV3 Home для macOS, Windows 10 и планшетов на iOS и Android

Загрузите, установите, подключите и выполняйте задания по программированию. Для пяти основных роботов есть до пяти задач по программированию. Благодаря более продвинутому, но хорошо знакомому интерфейсу программирования и пяти сложным заданиям для вас и ваших роботов-героев, приложение EV3 Home для PC, Mac и планшетов сможет поднять ваши навыки робототехники на новый уровень!


Важная информация относительно программного обеспечения и приложений LEGO® MINDSTORMS® EV3!

Мы рады сообщить, что пользователям LEGO MINDSTORMS EV3 теперь будут доступны новые возможности при сборке и программировании их творений.

Новое приложение LEGO MINDSTORMS EV3 Home с языком программирования на основе Scratch заменит используемое в настоящее время ПО LEGO MINDSTORMS EV3 Home Edition (Labview) для Windows 10 и macOS, а также приложение LEGO MINDSTORMS EV3 Programmer для планшетов на iOS/Android.

Приложение LEGO MINDSTORMS EV3 Programmer будет удалено из магазинов приложений в конце июня 2021 года.

Выведенное из эксплуатации ПО LEGO MINDSTORMS EV3 Home Edition (Labview) для Mac и PC можно найти ниже. Обратите внимание, что это ПО больше не поддерживается LEGO Group.

Здравствуйте. В своих статьях я хочу Вас познакомить с основами программирования микрокомпьютера 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) файлы нету.

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

Краткий обзор набора LEGO NXT Mindstorms 2.0.


Рисунок 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 основных окон:

  1. Basic Activities – содержит базовые блоки, которые реализуют такие операторы как константа, переменная, условие и т.д.;
  2. Services – содержит блоки, предоставляющие доступ к функционалу платформы MRDS, например блоки для взаимодействия с какой-либо аппаратной составляющей робота, или блоки для вызова диалогового окна;
  3. Project – объединяет диаграммы входящие в проект, а так же различные конфигурационные файлы;
  4. Properties – содержит свойства выделенного блока;
  5. Diagrams window – содержит, непосредственно, диаграмму (исходный код) приложения.


Рисунок 3 — Среда программирования VPL

Выполним следующую последовательность действий:

  1. добавим блоки Data (из окна Basic Activities) и блок сервиса Simple Dialog (из окна Services),
  2. в блок Data введем “Hello, World!” (без кавычек) и выберем тип данных String,
  3. соединим блок Data с блоком Simple Dialog, появиться диалоговое окно,
  4. далее, все выполняем как на рисунках


Рисунок 4 — Окно Connections


Рисунок 5 — Окно Data Connections


Рисунок 6 — Законченный вид диаграммы


2. Платформа NI LabVIEW.

На данной платформе все реализуется, практически, идентично. Запустим среду LabVIEW. Перед нами появиться два окна, первое — Front Panel, предназначено для реализации интерфейса пользователя (внешнего вида виртуального прибора), второе — Block Diagram, для реализации логики программы.


Рисунок 8 — Окна среды LabVIEW

Мы будем использовать окно Block Diagram. Выполним следующие шаги:

  1. в окне Block Diagram вызовем контекстное меню, нажатием правой кнопкой мыши,
  2. в появившемся окне перейдем по вкладкам, как на рисунке и выберем String Constant,



Лет эдак в 10-11, после долгих и беззаботных лет игры с контрукторами Lego, я узнал о существовании великолепного набора Mindstorms, который позволял создавать самых настоящих роботов без специализованных знаний электроники, электротехники и даже программирования. Я сразу же заинтересовался данной серией, но тогда моим мечтам обладать Mindstorms по различным (в основном — финансовым) причинам не суждено было сбыться.
Сейчас мне 20 и в честь юбилея друзья (спасибо им!) решили окунуть меня назад в детство и таки дать возможность полепить собственных роботов. Правда, в этот раз всё будет серьёзнее, чем в моих детских мыслях — мы будем действительно программировать Mindstorms под Debian GNU/Linux.

Неплохо, да?
Собственно, данный робот и будет нашей основной тестовой моделью. Но мы попробуем немного усовершенствовать его навыки. И для этого мы напишем небольшой кусочек кода.


Действительно. Идущее в комплекте ПО работает только в Windows и Mac OS. А у нас, внезапно, Debian Squeeze. К счастью, Mindstorms обладает огромным сообществом фанатов, которые придумали решение данной проблемы — использование альтернативного ПО для программирования роботов, в частности Bricxcc (здесь выложен полнейший мануал по настройке всего и вся).
А теперь немного теории — в программировании Mindstorms, как правило, помимо визуального среды ROBOLAB для Windows и Mac OS используется язык RCX, однако среди фанатов одним из наиболее популярных языков является достаточно простой NXC (Not eXactly C). Простая программа на NXC выглядит примерно так:

  1. task music()
  2. int lastTone=5000;
  3. while ( true )
  4. int tone= Random (5000)+500;
  5. int duration= Random (500);
  6. PlayTone(tone,duration);
  7. Wait(duration);
  8. >
  9. >
  10. task main()
  11. start music;
  12. while ( true )
  13. /* Determine Next Action */
  14. unsigned int duration= Random (5000);
  15. unsigned int motorSpeed= Random (100);
  16. unsigned int syncMode= Random (3);
  17. /* Display Next Action */
  18. ClearScreen();
  19. NumOut(0,LCD_LINE1,duration);
  20. NumOut(0,LCD_LINE2,motorSpeed);
  21. NumOut(0,LCD_LINE3,syncMode);
  22. /* Perform Next Action */
  23. switch (syncMode)
  24. case 0:
  25. OnFwdReg(OUT_AC,motorSpeed,OUT_REGMODE_SYNC);
  26. break ;
  27. case 1:
  28. OnRevReg(OUT_AC,motorSpeed,OUT_REGMODE_SYNC);
  29. break ;
  30. case 2:
  31. OnFwdSync(OUT_AC,motorSpeed,-100);
  32. break ;
  33. case 3:
  34. OnRevSync(OUT_AC,motorSpeed,-100);
  35. break ;
  36. >
  37. Wait(duration);
  38. >
  39. >

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

Не буду спорить, программа совсем не сложна для понимания, но достаточно громоздка. И её можно заметно упросить, используя вместо написания кода на NXC специальный конвертер PyNXC. Иначе говоря, мы будем писать код на Python'е, а PyNXC будет преобразовывать его в NXC-код и загружать на устройство, избавив нас от необходимости писать громоздкий код на подобии Си.


Ну, а теперь, собственно, напишем на Python'е программу для путешествия нашего робота среди прозрачных чашек, но используя более грамотный алгоритм разворота:

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

Как вы уже, наверное, заметили, программировать Mindstorms очень просто. Стоит также сказать, что помимо NXC и Python с использованием PyNXC, можно писать код на Java, Lua, Ruby, Ассемблере, а также, что логично, использовать ассемблерные вставки в других языках.
Благодаря всему этому Mindstorms из детской игрушки превращается в весьма мощную штуку, позволяющую создавать сложные и «умные» механизмы, как например вот эта гитара:

Смотрите стоимость монтажа скс тут.
Когда мне привезли роботов ЛЕГО 8547 и нетбуки I-RU с лицензионной операционной системой WINDOWS 7 Starter я обрадовался. Подумал как замечательно и лицензионная винда и роботы и ПО к комплекте.

Но радость моя продлилась не долго, начал я устанавливать драйвера - без проблема, а вот графическую среду программирования NXT-G установить не удалось. И что, как говорится, я только не делал: и от имени администратора устанавливал, и скидывал весь диск в качестве образа, и пытался виртуальную среду развернуть.


- друг ты мне или враг 7-ой виндовз?


"Этот продукт не поддерживает Windows Starter Edition. Обратитесь к документации по операционной системе" говорит всем виндовс.

Понятно, что в будущем разработчики выпустят нормальный инсталлятор и на этой ОС NXT-G будет установлена нормально, но а сейчас то что делать? Не получилось. Расстраиваться я не думал. Быстро, в течении 2-3 дней переустановил винду на windows XP SP3. Поставил ПО и работаю по сей день преподавателем программирования Lego-роботов с учениками. А вот недавно в Интернете нашёл на одном из англоязычном сайте информацию, что всё таки можно установить NXT-G на 7-ку.

Подробненько описываю что для этого нужно делать. Для установки программного обеспечения NI на Windows 7 Starter Edition, выполните следующие действия:

1. Скопируйте все файлы компакт диска в корневую папку флэшки или любого другого устройства, поддерживающего изменение данных (жёсткий диск, USB-диск и т.д.);

2. Войдите в папку программы, которую Вы хотите установить. Откройте в любом текстовом редакторе, например, в блокноте файл setup.ini. Если необходимо установить несколько программ, то менять setup.ini придётся в каждой программе.

3. Измените файле Setup.ini в разделе [ОS], добавив строку AllowWindowsStarter = 1 как показано на рисунке ниже. Сохраните и закройте файл.



до изменения



после изменения

4. Запустите инсталляцию NXT-G в той папке, где Вы сейчас внесли изменения.


Что такое NXT?

NXT Блок


По умолчанию тестовые программы NXT и многие примеры программ предполагают, что датчики подключены к следующим портам:

  • Порт 1: Датчик касания
  • Порт 2: Датчик звука - микрофон
  • Порт 3: Датчик освещенности
  • Порт 4: Ультразвуковой датчик
  1. Управляемый компьютером, интеллектуальный LEGO® блок NXT - мозг робота, созданного на основе конструктора LEGO MINDSTORMS® Education.
  2. Датчики касания.
    Позволяют роботу реагировать на окружающие его препятствия.
  3. Датчик звука - микрофон.
    Позволяет роботу реfгировать на уровень громкости звука.
  4. Датчик освещенности.
    Используя жатчик, робот может реагировать на изменеия освещенности или цвета.
  5. Ультразвуковой датчик.
    Позволяет роботу определять расстояние до объекта и реагировать на движение.
  6. Подключение датчиков.
    Датчики могут быть подключены к любому из входов с номерами 1-4 любыми кабелями за исключением специальных кабелей-переходников.
  1. NXT Блок
  2. Аккумуляторная батарея.
    Обеспечивает питание NXT.
  3. Лампы.
    Подключите и запрограммируйте лампы в качестве сигнальных огней, подсветки датчика освещенности или просто ради интереса.
  4. Кабель-переходник.
    В базовый набор входят три ламры и три кабеля-переходника.
  5. Соединительные кабеля.

Подключение моторов и ламп

Моторы или лампы могут быть подключены к выходным портам A, B, или C. По умолчанию тестовые программы NXT и некоторые примеры программ преполагают, что двигатели подключены следующим образом:

  • Порт A: Мотор или лампа для дополнительной функции.
  • Порт B: Двигатель привода (часто) левого колеса двух-моторного шасси.
  • Порт C: Двигатель привода (часто) правого колеса двух-моторного шасси.

Технические характеристики NXT

Аккумулятор

Аккумулятор крепится снизу NXT. Для его установки сначала снимите крышку батарейного отсека, нажав пальцем на защелку. Откроется отсек для 6 батареек АА типа. Вместо крышки отсека можно установить литий-ионовый полимерный аккумулятор, которым комплектуется конструктор 9797. Вставьте боковой выступ на корпусе аккумулятора в специальный паз батарейного отсека и легким нажатием до щелчка зафиксируйте его.


Снятие крышки батарейного отсека


Для зарядки аккумулятора вотните провод зарядного устройства в круглый разъем в корпусе аккумулятора через отверстие в корпусе NXT (этот разъем расположен под входными портами). Сам трансформатор зарядного устройства воткните в сеть 220 В. Аккумулятор можно заряжать и отдельно от NXT.

  • Зеленый индикатор загорается при подключенном к аккумулятору зарядном устройстве.
  • Красный индикатор горит в процессе зарядке и гаснет после ее окончания.
  • Для полной зарядки аккумулятора необходимо около 4-х часов.
  • NXT можно использовать во время зарядки аккумулятора, время зарядки при этом увеличивается.
  • Аккумулятор допускает до 500 циклов зарядки.


Подключение зарядного устройства


При первом использовании аккумулятора совместно с NXT перед началом работы подключите зарядное устройство на 20 минут. Поступите аналогичным образом и в случае полного разряда аккумулятора. Перед использованием аккумулятора его следует зарядить.


Другие типы батареек

NXT может работать и от 6 AA/LR6 батареек

  • Рекомендуется использовать алкалиновые батарейки
  • Мрожно использовать аккумуляторы AA/LR6 типа, однако, в этом случае потребляемая мощность может упасть.

Разряд батареи



Меры предосторожности

  • Никогда не используте батарейки разного типа в NXT.
  • Перед длительным хранением извлекайте батареики.
  • Полностью разряженные батарейки стразу извлекайте из NXT.
  • Заряжайте аккумулятор под наблюдением взрослых.
  • Никогда не пытайтесь зарядить батарейки обычного типа (не акуумуляторы).

Rising Force Online » Обои из игр

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