Место для баннера, продается :)

Учебный практикум по LabVIEW

Учебный практикум по LabVIEW Учебный практикум по LabVIEW

На этом уроке Вы не увидите привычных и возможно, в какой-то мере, даже скучных VI по временной, частотной или еще какой-нибудь обработке данных. Если Вы читали этот выпуск журнала не с конца, то уже успели познакомиться с совместной разработкой компаний LEGO Group и National Instruments - конструктором для "детей всех возрастов" Mindstorms NXT и средой графического программирования LEGO MINDSTORMS Software. Далее речь пойдет о штуковине, позволяющей писать программы для Вашего робота, используя при этом все LabVIEW-шные функции. Ее полное название - NI LabVIEW™ Toolkit for LEGO® Mindstorms® NXT.

Возможно, кто-то подумает: "Да зачем мне нужен такой урок? Ведь у меня нету этого Mindstorms-а!". Сегодня, может, и  нет, а завтра - обязательно будет. Mindstorms уже доступен в Украине! Мы же считаем себя цивилизованной нацией. Миллионы людей во всем мире стали поклонниками этой интеллектуальной игрушки. А мы что, хуже? Так что побыстрее приобретайте набор прикольных кубиков и, познакомившись с NI LabVIEW™ Toolkit for LEGO® Mindstorms® NXT, начинайте писать программы в знакомом LabVIEW, которые заставят двигаться и чувствовать Вашего гуманоида, скорпиона или еще кого-нибудь или чего-нибудь.

Начнем с того, что Toolkit этот является бесплатным и предоставляется каждому покупателю набора. Это подарок продвинутым робоманам от National Instruments. Он отлично становится на LabVIEW версий 7.1, 8.0 и 8.2. Правда, если Вы используете LabVIEW 8.0 и старше, перед началом работы придется проделать одну нехитрую процедуру. Это связано с тем, что базовой версией при разработке NXT-контроллера была именно 7.1, и для того, чтобы не возникало непонятных ошибок, необходимо привести все NXT-компоненты в соответствие базовым.

Итак, будем считать, что Вы приобрели конструктор Mindstorms, поупражнялись в написании простых программок на родном софте и теперь Вам захотелось расширить возможности платформы NXT - создать нечто посерьезней и "поумней". Для этого устанавливаем названый инструментарий поверх уже имеющегося LabVIEW.

При первом запуске LabVIEW в меню выбираем Tools >> Advanced >> Mass Compile, тем самым выполняя процедуру приведения в соответствие NXT-компонент.

Выбираем директорию, в которой будем выполнять компиляцию. Например: LabVIEW 8.0 \ vi.lib \ addons \ NXTToolkit и нажимаем кнопку Current Folder (компилировать в текущую директорию). После нескольких минут ожидания появится сообщение о том, что компиляция успешно завершена, и можно приступать к работе. Можно порекомендовать Вам проделать те же операции и с директорией NXTToolkitDirectCommands и только после этого приступать к программированию.

На поле блок-диаграмм среди функций находим группу uhegge Addons, в которой появились две новых подгруппы: NXTToolkit и NXT Direct Commands. Давайте начнем со второй. В подгруппу "прямых команд" входят VI, позволяющие непосредственно управлять Вашим роботом: запускать или останавливать его работу, включать моторы в разных режимах, получать данные от датчиков света и звука, ультразвукового измерителя расстояния, датчика прикосновения, заставлять робота разговаривать и т.п. Подробно рассказывать о каждом из этих VI, наверное, не стоит, так как они являются достаточно простыми и интуитивно понятными даже десятилетнему ребенку.

Открыв первую группу VI, не удивляйтесь - Вы увидите там уже давно знакомые Вам функции, которые Вы многократно использовали при написании своих программ (Case Structure, While Loop и др.). Чем же они отличаются от тех, которые были у Вас еще до установки NI LabVIEW™ Toolkit for LEGO® Mindstorms® NXT? Правильно,  ничем! Ведь Вы и раньше видели, как одни и те же VI располагаются в нескольких подгруппах и подменю, согласно их функциональному назначению.

Если знакомы с родным софтом для Mindstorms, то знаете, что написанные программы загружаются в контроллер NXT и исполняются  им же, т.е. контроллер работает автономно. Так вот, функции, которые находятся в группе NXTToolkit, можно использовать для написания программ с их дальнейшей записью в контроллер NXT прямо из LabVIEW. Для этого необходимо сначала создать программу, затем в меню передней панели или поля блок-диаграмм найти закладку Tools и пройтись по такому пути: Tools >> NXT Module >> NXT Terminal. Появится нехитрое окошко, которое позволит Вам откомпилировать и загрузить программу в контроллер.

Следует сказать, что робот, управляемый созданной для него таким образом  программой, будет ограничен в своих возможностях, поскольку объем программной памяти в контроллере NXT достаточно небольшой. Например, если Вы захотите научить Ваше творение разговаривать, то его памяти хватит в лучшем случае на два десятка слов. Но эту “неприятность” довольно-таки легко обойти. Для этого нужно вместо ограниченной памяти контроллера использовать необъятные просторы оперативной памяти любого современного компьютера. Это значит, что крутиться программа будет на компьютере, а NXT-робот будет лишь выполнять его указания и сообщать о том, что происходит с его органами чувств (датчиками). При использовании такого подхода, Вы снимаете с себя все ограничения по объему программной памяти и быстродействию. Кто-то скажет: "А мне не нужен робот, привязанный на полутораметровую USB-цепь к компьютеру". Пожалуйста, используйте встроенный в NXT-контроллер канал Bluetooth. Еще более искушенный читатель добавит: "И обязан буду везде вместе со своим роботом носить, по крайней мере, ноутбук". Ну, а для таких пользователей есть возможность работать с NXT-модулем при помощи КПК.

А теперь, после обобщенного обзора, давайте все-таки рассмотрим основные шаги при создании программ для NXT-контроллера, используя LabVIEW.

 

В общем случае, первым элементом Вашей программы будет VI под названием Scan for NXTs (Functions>> Addons>> NXT Direct Commands>> Connection). Он проверяет все USB-порты на наличие NXT-устройств, а также, при желании, ищет их в пределах досягаемости канала Bluetooth, если таковой имеется.

Дальше нужно использовать элемент  с непонятным названием Create NXT Object, который находится по тому же адресу. Пока не стоит забивать себе голову тем, по какому принципу он работает. Нужно просто запомнить, что этот VI программно "соединяет" выбранный из списка найденных NXT-контроллер с компьютером.

После того, как устройство проинициализировано, остается последняя формальность - дать понять NXT-контроллеру, что программа запущена, и пора приступать к работе. Для этого идеально подходит функция Start Program (Functions>> Adons >> NXT Direct Commands >> Program Execution).

Вот теперь можно приступать к реализации всего задуманного и шаг за шагом создавать модель поведения Вашего робота. При этом Вы свободны использовать различные ветвления в программе, циклические функции, Express VI и прочие необходимые штучки.

После выполнения основной части программы, для ее останова нужно использовать функцию Stop Program.

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

Кроме них Вам понадобятся еще несколько VI:

  • Read Touch Sensor - опрашивает датчик прикосновения и возвращает его состояние в виде TRUE или FALSE;
  • Motor Unlimited - включает выбранный мотор;
  • Motor Stop - останавливает мотор.

Соединяем названные элементы таким образом, как показано ниже, и получаем простую программку. Работает она следующим образом: после запуска происходит инициализация устройства, после чего программа зацикливается до тех пор, пока от датчика прикосновения не придет сигнал TRUE. Как только это случится, произойдет переход программы к следующему фрейму, в котором запустится мотор не менее чем на 2 секунды. И опять ожидание сигнала от датчика прикосновения, за которым следует остановка мотора.

На физическом уровне происходит следующее: как только Вы нажмете на кнопку датчика касания - включится мотор, подключенный к порту А. Он будет работать до тех пор, пока Вы снова не нажмете на ту же кнопку. Большинство скучно скажет: "Совсем не впечатляет… Для реализации такой задачи достаточно было бы просто соединить двигатель с тумблером и щелкать, то включая, то выключая его". Совершенно верно - так было бы проще, но не забывайте, что написав программу, Вы управляете мотором программно, а не механически, т. е. контроллер решает, включать его или нет. Это во-первых. А во-вторых, никто и не предполагал, что при первом описании нового модуля сразу будут создаваться программы для применения в космической отрасли, хотя Вам этого никто не запрещает сделать.

А теперь ради интереса попробуйте записать эту же программу в контроллер NXT и заставить работать его автономно. Здесь нет ничего сложного. Нет сомнений в том, что у Вас все получится.

Самые внимательные из Вас должно быть заметили, что до сих пор не было сказано ни слова об одном из важнейших преимуществ LabVIEW перед LEGO MINDSTORMS Software - наличие передней панели. Ведь если программа будет крутиться на компьютере, Вы сможете устанавливать на переднюю панель элементы управления роботом и воздействовать на него в реальном времени! Вот это уже интересней. А можно еще и функции по обработке сигналов задействовать.

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

Ну и напоследок следует отметить, что, используя LabVIEW 7.1, Вы можете создавать свои элементы для родного софта LEGO Mindstorms NXT, тем самым увеличивая свои возможности при использовании этой оболочки. 

  • Оцените материал
    (0 голосов)
  • Опубликовано в NXT 2
  • Прочитано 4452 раз

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены

Наверх

Последние новости от LEGO Mindstorms NXT 2

Лабораторный практик…

29-04-2013 Hits:3275 NXT 2 Capitano - avatar Capitano

Лабораторный практикум №4 по LEGO MINDSTORMS NXT

Целью данного урока является написание кода для подключения Wiimote по Bluetooth при помощи LabVIEW. Приведен пример написания кода для считывания состояния одной кнопки и статуса XYZ ускорения Wiimote.

Read more

Лабораторный практик…

24-04-2013 Hits:15249 NXT 2 Capitano - avatar Capitano

Лабораторный практикум №3 по LEGO MINDSTORMS NXT

Целью данного урока является написание кода, с помощью которого можно будет считывать состояние мотора робота NXT и заставить моторы двигаться, используя инструментарий LabVIEW NXT.

Read more

Лабораторный практик…

22-04-2013 Hits:3417 NXT 2 Capitano - avatar Capitano

Лабораторный практикум №2 по LEGO MINDSTORMS NXT

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

Read more

Коментарии в материале

Мишени для тренировок…

01-12-2016 Hits:3150 Спортивная стрельба Capitano - avatar Capitano

Каталог мишеней для тренировок на основе "Официальной мишени для ПТ" Все файлы в формате PDF, при печати использовать реальный размер!

Read more

17.10.2015г. Чемпионат по Fi…

02-10-2015 Hits:1584 Спортивная стрельба Capitano - avatar Capitano

17.10.2015г. Чемпионат по Field Target. Киев.Украина

Приглашаются все желающие, 17 октября 2015г, принять участие в открытых соревнованиях по Field Target, в классах ППП и ПСП до 16,3дж в калибре 4,5мм. 

Read more