Время на прочтение
6 мин
Количество просмотров 50K
Здравствуйте. В своих статьях я хочу Вас познакомить с основами программирования микрокомпьютера 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 и т.д.).
LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench) — это среда разработки и платформа для выполнения программ, созданных на графическом языке программирования «G» фирмы National Instruments (более подробно в статье Википедии). LabVIEW используется в системах сбора и обработки данных, а также для управления техническими объектами и технологическими процессами. Идеологически LabVIEW очень близка к SCADA-системам, но в отличие от них в большей степени ориентирована на решение задач не столько в области АСУ ТП (автоматизированные системы управления технологическим процессом), сколько в области АСНИ (автоматизированных систем научных исследований). Графический язык программирования «G», используемый в LabVIEW, основан на архитектуре потоков данных. Последовательность выполнения операторов в таких языках определяется не порядком их следования (как в императивных языках программирования), а наличием данных на входах этих операторов. Операторы, не связанные по данным, выполняются параллельно в произвольном порядке. Программа LabVIEW называется и является виртуальным прибором (англ. Virtual Instrument) и состоит из двух частей:
- блочной диаграммы, описывающей логику работы виртуального прибора;
- лицевой панели, описывающей интерфейс пользователя виртуального прибора.
Краткий обзор набора LEGO NXT Mindstorms 2.0.
Комплект NXT состоит из управляющего блока, четырех датчиков и трех сервоприводов. Управляющий блок содержит в себе:
- 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 — Законченный вид диаграммы
- Запустим программу на выполнение.
Рисунок 7 — Результат выполнения программы
2. Платформа NI LabVIEW.
На данной платформе все реализуется, практически, идентично. Запустим среду LabVIEW. Перед нами появиться два окна, первое — Front Panel, предназначено для реализации интерфейса пользователя (внешнего вида виртуального прибора), второе — Block Diagram, для реализации логики программы.
Рисунок 8 — Окна среды LabVIEW
Мы будем использовать окно Block Diagram. Выполним следующие шаги:
- в окне Block Diagram вызовем контекстное меню, нажатием правой кнопкой мыши,
- в появившемся окне перейдем по вкладкам, как на рисунке и выберем String Constant,
Рисунок 9 — Контекстное меню
- разместим данный блок и введем «Hello, World!»,
- аналогичным образом выберем блок One Button Dialog,
Рисунок 10 — Блок One Button Dialog
- соединим блоки как показано на рисунке,
Рисунок 11 — Готовая диаграмма
- запустим программу, нажав кнопку в виде горизонтальной стрелки на панели задач,
Рисунок 12 — Результат выполнения программы
Резюме
- Мы сделали обзор программных платформ для разработки приложений микрокомпьютера NXT.
- Мы рассмотрели основные принципы разработки приложений в платформах MRDS 4 и NI LabVIEW.
- Познакомились с интерфейсом сред.
В следующих статьях мы будем заниматься непосредственно программированием NXT. По среде LabVIEW в сети есть много учебных материалов, по VPL гораздо меньше. Очень рекомендую изучить справочное руководство обеих платформ (необходимо знание английского), в данных руководствах очень много примеров которые можно реализовать и не имея NXT, а так же следующие книги:
- Программируем микрокомпьютер NXT в LabVIEW — Лидия Белиовская, Александр Белиовский,
- Microsoft Robotics Developer Studio. Программирование алгоритмов управления роботами — Василий Гай.
В своих статьях я буду описывать только свои проекты, т.к. не вижу смысла переписывать информацию из одних источников в другие. Приму любую конструктивную критику, отвечу на любые вопросы касаемо рассмотренных платформ. Заранее спасибо!
#include <string.h>
#include «kernel.h»
#include «kernel_id.h»
#include «ecrobot_interface.h»
#include «trik_studio_utils.h»
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <math.h>
U32 __interpretation_started_timestamp__ = 0;
static const float pi = 3.14159265;
void ecrobot_device_initialize(void)
{
srand(systick_get_ms());
}
void ecrobot_device_terminate(void)
{
}
/* nxtOSEK hook to be invoked from an ISR in category 2 */
void user_1ms_isr_type2(void)
{
}
/* Main task */
TASK(TASK_MAIN)
{
__interpretation_started_timestamp__ = systick_get_ms();
TerminateTask();
}
-
Contents
-
Table of Contents
-
Troubleshooting
-
Bookmarks
Quick Links
Related Manuals for LEGO mindstorms NXT
Summary of Contents for LEGO mindstorms NXT
-
Page 1
NXT User Guide… -
Page 2
In addition, local support is provided by our trade partners. If you are interested in a competitive challenge, check our website to fi nd out more about the FIRST LEGO LEAGUE. Start here. This User Guide provides an overview of the components and features in the LEGO MINDSTORMS Education NXT materials. -
Page 3: Table Of Contents
Introduction Table of Contents Introduction Software Build. Program. Test……..Installing The Software ……Technology Your First Program ……..Overview …………Software User Interface ……Installing Batteries In The NXT ….The Robot Educator ……..Connecting The NXT Technology … Programming Palette ……..
-
Page 4: Introduction
NXT Building Guide found in Download your program to the NXT brick the Base Set #9797 and in the Robot with the wireless Bluetooth connection Educator, which is part of the LEGO ® or the USB cable. MINDSTORMS ®…
-
Page 5: Technology
Technology Overview NXT Brick An intelligent, computer-controlled LEGO® brick, the NXT is the brain of the LEGO MINDSTORMS Education robot. ® Touch Sensors Enable the robot to respond to obstacles in the environment. Sound Sensor Enables the robot to respond to sound levels.
-
Page 6: Interactive Servo Motors
Technology Overview Lamps & Converter Cables Add lamps and then program fl ashing lights, or use them to activate the light sensor, or just for fun! Three Lamps and three Converter cables are included in the Base Set. Interactive Servo Motors Ensure that robots move smoothly and precisely.
-
Page 7: Installing Batteries In The Nxt
Technology Installing Batteries In The NXT Rechargeable battery The rechargeable battery fi ts into the bottom of the NXT. To install the rechargeable battery, move the plastic tab on the side with your thumb to open the back. The NXT comes with an extra cover that is used when 6 AA batteries are used.
-
Page 8
Technology Installing Batteries In The NXT Other battery types The NXT also operates using six AA/LR6 batteries. • Alkaline batteries are recommended. • Rechargeable AA/LR6-type batteries can be used; however, the power performance of the NXT may be reduced. Batteries low When the battery power is low, this icon fl… -
Page 9: Connecting The Nxt Technology
Technology Connecting the NXT Technology Connecting Motors To connect a Motor to the NXT, plug one end of a black wire to the Motor. Plug the other end into one of the output ports (A, B, C). Connecting sensors To connect a Sensor to the NXT, plug one end of a black wire into the Sensor.
-
Page 10
Education NXT Software. Connecting the NXT to a Macintosh with a USB cable Make sure the LEGO MINDSTORMS Education NXT Software is installed before connecting your NXT to your Macintosh. (See the installation instructions on page 45.) Turn on your NXT. -
Page 11: About The Nxt Brick
NXT Interface download programs from your computer to the NXT (or upload data from the robot to your computer). You can also use the The NXT brick is the brain of the LEGO MINDSTORMS ® ® wireless Bluetooth connection for uploading Education robot.
-
Page 12
Technology About The NXT Brick Running icon When the NXT is turned on, the running icon spins. If the running icon stops spinning, the NXT has frozen and you must reset it. (See page 63 for Troubleshooting steps). Battery level The battery icon displays the NXT power level. -
Page 13: Specifications
Technology About The NXT Brick Naming the NXT You can change the name of your NXT by going to the NXT window in the software. This window is accessible from the Controller. NXT names can be at most eight characters long. Technical specifi…
-
Page 14: Nxt Main Menu
Technology NXT Main Menu My Files In the My Files [My Files] submenu you can store all the programs that you have made on the NXT or downloaded from your computer. There are three different subfolders: Software fi les [Software fi les] – NXT fi…
-
Page 15
Technology NXT Main Menu NXT Program You don’t need a computer to program a robot. Using the NXT Program [NXT Program] submenu, you can make many programs without your computer. Try this program to see how easy it is. Make the robot go back and forth when the Touch Sensor is pressed. -
Page 16
Technology NXT Main Menu Select Touch [Touch] again. Now select Loop [Loop] to make the Now you can run the program. Simply program run again and again until you select Run [Run]. turn off the NXT. Try these programs as well. -
Page 17
Technology NXT Main Menu Try Me Important Use the default port settings for the Motors, Lamps and Sensors as explained on pages 5-6. See pages 23-33 for specifi c examples using each of the Sensors and the Motor. The Try Me [Try Me] feature allows you to experiment with the Sensors and Motors using programs that are ready to run. -
Page 18
Technology NXT Main Menu View In the View [View] submenu, you can do a quick test of your Sensors and Motors and see the current data for each. Connect Sensors or Motors to the NXT port(s). View [View] will help you select the right port or check the default settings. -
Page 19
Technology NXT Main Menu Settings In the Settings [Settings] submenu, you can adjust the different settings of the NXT, such as Loudspeaker volume or Sleep [Sleep] mode. In this submenu, you can also delete the programs that you have stored in the NXT memory. Sleep [Sleep] mode: Change Volume: Delete all programs:… -
Page 20
Technology NXT Main Menu Bluetooth — NXT main menu In the Bluetooth [Bluetooth] submenu, you can set a wireless connection between your NXT and other Bluetooth devices, such as other NXT units, mobile phones, and computers. You can use a wireless connection to download programs without using a USB cable. -
Page 21
Technology NXT Main Menu My Files NXT Program [My Files] [NXT Program] Sound fi les Software fi les NXT fi les [Sound fi les] [Software fi les] [NXT fi les] Port 1: Touch Sensor [Touch Sensor] Port 2: Sound Sensor [Sound Sensor] Port 3: Light Sensor [Light Sensor] Port 4: Ultrasonic Sensor [Ultrasonic Sensor] Port B/C: L/R motors [Left/Right motors]… -
Page 22
Technology NXT Main Menu View Bluetooth Settings Try Me [View] [Bluetooth] [Settings] [Try Me] Volume Sleep Delete fi les [Volume] [Sleep] [Delete fi les] Sound dB Sound dBA Refl ected light Ambient light [Sound dB] [Sound dBA] [Refl ected light] [Ambient light] Deleting all fi… -
Page 23: Touch Sensor
Technology Touch Sensor The Touch Sensor is a switch: it can be pressed or released. Pressed Released Bumped Suggestions for use You can add the Touch Sensor to an NXT model and then program the model behavior to change when the Touch Sensor is pressed or released.
-
Page 24
Technology Touch Sensor Try Me The Try Me [Try Me] feature (see page 17) includes several programs already prepared for experimenting with the NXT and a Touch Sensor. Using the programs available you can experiment with the following features. One Touch Sensor and the face on the display: Using the Touch Sensor you can activate behavior on the display face. -
Page 25: Sound Sensor
The Sound Sensor can measure sound pressure levels up to 90 dB – about the level of a lawnmower. Sound sensor readings on the LEGO ® MINDSTORMS ®…
-
Page 26
Technology Sound Sensor Try Me The Try Me [Try Me] feature (see page 17) includes several programs already prepared for experimenting with the NXT and a Sound Sensor. Using the programs available you can experiment with the following features. One Sound Sensor and the face on the display: Using the Sound Sensor you can make the mouth open and close on the display face. -
Page 27: Light Sensor
Technology Light Sensor The Light Sensor enables the robot to distinguish between light and darkness, to read the light intensity in a room, and to measure the light intensity on colored surfaces. This is what your eyes see. This is what your robot sees using the light sensor.
-
Page 28
Technology Light Sensor Viewing Ambient light Viewing ambient light turns off the fl ood light so that the sensor reads only the light around it.Connect the Light Sensor to the NXT. Select View in the NXT display. Select the ambient light icon. Select Test the Light Sensor’s ability to read the surrounding light by the port in which you have placed the measuring the light level in different places of the room. -
Page 29: Ultrasonic Sensor
Technology Ultrasonic Sensor The Ultrasonic Sensor enables the robot to see and recognize objects, avoid obstacles, measure distances, and detect movement. The Ultrasonic Sensor uses the same scientifi c principle as bats: it measures distance by calculating the time it takes for a sound wave to hit an object and come back –…
-
Page 30
Technology Ultrasonic Sensor Try Me The Try Me [Try Me] feature (see page 17) includes several programs already prepared for experimenting with the NXT and an Ultrasonic Sensor. Using the programs available you can experiment with the following features. One Ultrasonic Sensor and the face on the display: Using the Ultrasonic Sensor to measure distance from an object, you can make the display face become smaller or larger based on the distance from that… -
Page 31: Interactive Servo Motor
Technology Interactive Servo Motor The three Interactive Servo Motors provide the robot with the ability to move. Using the Move [Move] block automatically aligns their speed so that the robot moves smoothly. Built-in Rotation Sensor The Interactive Servo Motors all have a built-in Rotation Sensor.
-
Page 32
Technology Interactive Servo Motor Motor Core Hub with an axle hole for attaching Tachometer for a wheel Built-in Rotation Built-in gearing Sensor Try Me The Try Me [Try Me] feature (see page 17) includes several programs already prepared for experimenting with the NXT and the Motors. -
Page 33: Lamps
Technology Lamps The Lamps can be turned on and off, creating fl ashing patterns of light. They can also be used to activate the Light Sensor or to show that a motor is on or to indicate the state of a sensor. You can also use them to liven up your robot “eyes”…
-
Page 34: Using Bluetooth
Technology Using Bluetooth ® Bluetooth is a communication technology that makes it Once the Bluetooth connection is set up, you can use it for possible to send and receive data without using wires. these features: Using the Bluetooth features, you can set up a wireless •…
-
Page 35
Technology Using Bluetooth Before you set up a wireless Bluetooth connection, make sure that your computer has Bluetooth capability. If your computer does not have Bluetooth built-in, you must use a Bluetooth USB dongle. Make sure that you use the right type of Bluetooth USB dongle. -
Page 36
Technology Using Bluetooth Click Scan [Scan]. Your computer automatically searches for Bluetooth devices. After a short interval, a list of devices appears in the window on the computer screen. Select the device to which you want to establish the connection and click the Connect [Connect] button. -
Page 37
Technology Using Bluetooth Enter the passkey on your NXT and confi rm the connection by pressing the Orange [Enter] button. If you have chosen the default passkey, just click the Orange [Enter] button. In the NXT window [NXT window], the status of your NXT has now changed from Available [Available] to Connected [Connected]. -
Page 38
Technology Using Bluetooth Click Scan [Scan]. The Bluetooth device window pops onto the screen. A list of devices appears in the Select Bluetooth Device window on the screen. Select the device to which you want to establish the connection and click the Select [Select] button. -
Page 39
Technology Using Bluetooth The Pair with a Bluetooth Device window pops up. Select the NXT. Click Pair [Pair]. When you connect to a device for the fi rst time, a Passkey [Passkey] window pops up. Enter the passkey to use with this device [the default passkey is 1234] and click OK. -
Page 40
Technology Using Bluetooth Bluetooth Submenu On NXT Bluetooth Select the Bluetooth submenu on the NXT display. Search [Search] Search for other Bluetooth devices. After you have chosen the Search [Search] icon, the NXT will automatically start to search for other Bluetooth devices to which it can connect. Connections [Connections] My Contacts [My Contacts] This list includes all the devices to which your NXT is… -
Page 41
Technology Using Bluetooth Bluetooth and the NXT Window You can also view the connection status in the NXT window [NXT window] in the software. There you can change the name of your NXT, check the battery and memory levels, and delete programs on your NXT. -
Page 42
Technology Using Bluetooth Connecting Your NXT to Another NXT Select the Bluetooth submenu on the Select the Search [Search] icon to Depending on how many are detected NXT display. search for other Bluetooth devices. in the area, the Bluetooth devices will Your NXT automatically searches for appear in a list on the NXT display after Bluetooth devices in a range of 0-30… -
Page 43
NXT display and Select the program you want to send. Your NXT then sends the fi le. Connecting your NXT to a mobile phone If you have a mobile phone with Bluetooth capability, you can use it with LEGO ® MINDSTORMS ®… -
Page 44: Software
The software has an intuitive drag anddrop interface and graphical programming environment that makes it easyenough for a beginner yet equally powerful for an expert. LEGO MINDSTORMS Education NXT software is an optimized version of theprofessional NI LabVIEW graphical programming software used by…
-
Page 45
Open the “LEGO MINDSTORMS NXT” CD-ROM and double- click Install. Select your preferred language. Follow the on-screen instructions. When the installation procedure is complete, click Finish. You are now ready to use the LEGO MINDSTORMS Education NXT Software and create programs to control robots! -
Page 46: Your First Program
Software Your First Program This simple program will make the NXT play a sound fi le. It will help you understand how to connect your computer to the NXT. Start the software on your PC or Macintosh by double-clicking the program icon. Type in the name of your fi…
-
Page 47
Software Your First Program Drag a Sound [Sound] block and drop it to the right of the Starting point in the work area. Your program is now ready to download and run. Make sure you turn on your NXT and connect the USB cable to both your computer and the NXT (see page 9, Connecting the NXT Technology). -
Page 48: Software User Interface
Software Software User Interface A quick overview Robot Educator 2. My Portal 3. Tool bar 4. Work area 5. Little Help window 6. Work area map Programming palette 8. Confi guration panel 9. Controller 10. The NXT window…
-
Page 49
Software Software User Interface Robot Educator Here you can fi nd building and programming instructions using the Robot Educator model. My Portal Here you can access www.MINDSTORMSeducation.com tools, downloads, and information. The tool bar The tool bar includes the most frequently used commands from the menu bar in an easy-to-reach location. -
Page 50: The Robot Educator
Software Robot Educator The Robot Educator is a series of tutorials that shows how to program a two-Motor robot using the main features of the LEGO ® MINDSTORMS ® Education NXT Software. Click to see a list of challenge examples for the palette.
-
Page 51
Software Robot Educator Follow the building instructions to build the Robot Educator model. Over in the workspace, drag and drop the blocks to match the program shown in the Programming Guide. Download the sample program to your robot and see how the robot responds! In the Common palette are many program examples using the seven Common blocks. -
Page 52: The Robot Educator
To see a list of examples for specifi c NXT Technology, click an item under Select. Go to My Portal to fi nd useful information and updates related to the LEGO ® MINDSTORMS ®…
-
Page 53: Programming Palette
Software Programming Palette The programming palettes contain all of the programming blocks that you need to create programs. Each programming block includes instructions the NXT can interpret. You can combine the blocks to create a program. When you are done creating a program, you download it to the NXT.
-
Page 54
Software Programming Palette Common Palette To simplify its use, the programming palette has been divided into three different palette groupings: the Common palette, the Complete palette and the Custom palette (containing blocks that you create or download from the web). The Common palette is recommended as a starting point. -
Page 55
Software Programming Palette Complete Palette Common blocks The Common blocks are the same blocks available in the Common palette. Action blocks The Action blocks allow you to control specifi c types of behavior related to various output devices: the Interactive Servo Motor, NXT Sounds, NXT Display, Bluetooth (Send), Motors* and Lamps* Sensor blocks… -
Page 56
Software Programming Palette Complete Palette Data blocks Set up Boolean logic, random conditions, ranges and threshold for sensors and logical comparisons using these blocks. Advanced Use these blocks to add text, convert data to text, control the sleep function of the NXT, save fi les on the NXT, calibrate sensors, and reset motors. -
Page 57: The Confi Guration Panel
Software The Configuration Panel Each programming block has a confi guration panel in which you can adjust the settings of the selected block. When a block is selected in the work area, its confi guration panel becomes visible and active at the bottom of the screen. By changing the parameters on each confi…
-
Page 58: Parts List For Base Set #9797
® LEGO Bricks Parts List For Base Set #9797 The LEGO ® MINDSTORMS ® Education NXT set #9797 is the main set for building NXT robots. Here is a list of the building elements included in the set. 4119589 448521…
-
Page 59
® LEGO Bricks Parts List For Base Set #9797 4211445 4285634 4210751 Plate, 1X4, grey Gear, 40-tooth, grey Beam, 3-module, dark grey 4211444 4211440 4210686 Plate with holes, 2X4, grey Studded Beam, 1X2, grey Beam, 5-module, dark grey 4211542 4211441… -
Page 60
® LEGO Bricks Parts List For Base Set #9797 74880 4263624 Axle, 5½-module, dark grey Lamp, 1X2, white 4142865 Axle, 2-module, red 4211815 Axle, 3-module, grey 4297008 4296825 Interactive Servo Motor, NXT 4211639 Axle, 5-module, grey 370526 Axle, 4-module, black… -
Page 61: Useful Information
Useful Information Download to Multiple NXTs This function allows you to download one or more programs to multiple NXTs. This is especially useful if you need to load a number of NXTs with the same program(s) for a competition or classroom assignment. Before using this function, make sure that all of the programs you would like to download are open in the software.
-
Page 62
Useful Information Download to Multiple NXTs Note: If you do not see an NXT on the list, close the Download to Multiple NXTs window and open the NXT window. Make sure that all the NXTs have been confi gured in this window before opening the Download to Multiple NXTs window. -
Page 63: Troubleshooting
Follow these steps to reset the NXT: Make sure that the NXT is turned on. 2. Press the reset button that is located on the back of your NXT in the LEGO ® Technic hole in the upper left corner.
-
Page 64
Useful Information Troubleshooting Managing NXT Memory You can download other fi les to the NXT until the memory is full. When the memory is full, you can select programs to delete in order to make space. Clicking Delete All removes only your programs, not your system fi… -
Page 65
Raccorder l’équipement sur une sortie appatenant à un circuit différent de celui auquel le récepteur est connecté. Consulter le revendeur ou un techicien radio-télévision expérimenté pour obtenir de l’aide. The LEGO Group hereby declares that the LEGO MINDSTORMS Education Base Set ®… -
Page 66
BLUETOOTH is a trademark owned by Bluetooth SIG, Inc. and licensed to the LEGO Group. LEGO, the LEGO logo and MINDSTORMS are trademarks of the LEGO Group. ©2006 The LEGO Group. Other product and company names listed are trademarks or trade names of their respective companies…
|
Lego –программирование. Lego Mindstorms. Часть 2.
|
|||
|
Составитель: Шкилёва И.И. Учитель информатики и ИКТ
|
Содержание
|
1. |
Введение |
3 |
|
2. |
Знакомство |
4 |
|
3. |
Интерфейс |
6 |
|
4. |
Ветвление |
9 |
|
5. |
Циклы |
10 |
|
6. |
Переменные |
11 |
|
7. |
Robo Center : |
12 |
|
µ |
12 |
|
|
µ |
15 |
|
|
µ |
16 |
|
|
µ |
18 |
|
|
8. |
Программирование |
21 |
|
µ |
22 |
|
|
µ |
24 |
|
|
9. |
Основные |
25 |
|
10. |
Готовые |
27 |
|
11. |
Взаимодействие |
28 |
|
12. |
Типы |
29 |
|
13. |
Команды |
31 |
|
14. |
Список |
32 |
1.
Введение
Способность NXT – робота выполнять любое задание:
что бы ни было — следовать линии, бросить мяч или пометать пол не является
информацией. Необходимо снабдить робота специальными инструкциями, которые
будут диктовать ему, что делать: нужно запрограммировать робота. Программирование
NXT включает
написание программы на компьютере, и затем перенос в микроконтроллер, «мозг»
робота, который запускает и выполняет программу. Программы должны сообщать NXT, как
моторам работать, как датчикам получать информацию, как динамику играть звук и
т.д.
Подходя к программированию NXT. первым делом
обратим внимание на официальный язык NXT— G, включенный в
пакет LEGO MINDSTORMS NXT ,
поставляемый вместе с конструктором NXT— G – это графический
язык программирования в котором программы можно создавать с помощью нажатия
клавишей мыши и перетаскивания блоков вида на экране (G — graphical,
графический). NXT— G довольно прост в использовании, но требует больших
ресурсов компьютера и занимает много памяти. Далее будут рассмотрены еще две
среды программирования NXT, которые работают быстрее, но могут оказаться менее
достаточны читателю.
В этой главе, во –первых, исследуем интерфейс NXT— G, который
играет важную роль в процессе создания программы. Во – вторых, обсудим
некоторые базовые понятия языка NXT— G, которые
необходимы для успешного программирования. В – третьих, рассмотрим готовые
примеры из Robo Center.
В некоторых случаях среду программирования LEGO MINDSTORMS NXT для
краткости будем называть LMN.
2.
Знакомство с NXT – G.
При запуске LEGO MINDSTORMS NXT появляется
основной экран, откуда можно перемещаться к другим разделам. Начинающим
настоятельно рекомендуем просмотреть краткие интерактивные руководства Getting Stated b Software Overview.

работу, необходимо создать новую программу или открыть существующую.
Стартовое окно LEGO MINDSTORMS NXT
Замечание.
Предполагаем,
что уже установлено программное обеспечение, поставляемое вместе с NXT —
набором, и успешно проведено USB – или Bluetooth – соединение
между компьютером и NXT . В случае несоответствия или сбоев
операционной системы микроконтроллера следует воспользоваться разделом главного
меню Tools Update NXT Firmware.
Новая программа.
Чтобы создать новую программу, напишите ее название в рамке
под словами Start New Program и затем нажмите кнопку Go>>. Чтобы открыть
просто существующую программу, в которой вы недавно обращались просто выберите
программу из ниспадающего меню под словами Open Recent Program и затем нажмите
кнопку Go>>.
Поскольку изначально не существует программы, напишите Fire Program в поле под словами Start New Program и
нажмите кнопку Go>>, чтобы создать
новую программу с именем Test Program.
Замечание. Можно создать
новую программу, выбрав File New нажимая при этом
сочетание клавиш Ctrl – N(для Windows) или CMD—N(для Mac).
3.
Интерфейс NXT-G.
Интерфейс NTX—G появляется, как только создана или
открыта программа (Robo Center уменьшает обзор интерфейса, можно
временно закрыть его). В результате получаем окно программы, состоящее из
четырех основных прямоугольников: рабочее поле программы, на котором расположен
командный центр, палитра команд, окно настройки параметров команд и окно
просмотра общего вида программы. Кроме того, сверху находиться главное меню и
пиктограмма оранжевой прямоугольной балки, по которой можно вернутся в Robo Center. Стрелкой
на рисунке показана пиктограмма перехода к Полной палитре команд.
Перетаскивая блоки из палитры команд на рабочее поле, можно
создать программу. При этом близлежащие блоки автоматически связываются
проводами, похожими на гладкие балки серии Technic, создавая
последовательность выполнения команд. Этими же балками, придерживая клавишу Shift, можно
строить ответвления параллельных задач.
В окне настройки параметров команд указывается, к какому
порту подсоединено устройство, а также в каком диапазоне работает. Внесенные
параметры в виде миниатюрных пиктограмм отображаются на блоках команд в
программе.
Рассмотрим пиктограмму блока управления моторами «Moto block»,
параметры которого приведены в окне настройки.

портов устройства NXT будут контролироваться. Пиктограмма «стрелка»(2)
дает направление движения робота. Пиктограмма «индикатор мощности» (3)
показывает уровень мощности. Скорость робота может также зависеть от прочих
условий, например поверхности, по которой он движется, а также движения в
гору или под гору. Пиктограмма (4) определяет значение, установленные для
характеристики «Продолжительность» вращения: без ограничений, градусы, обороты
или секунды.
У большинства блоков имеются концентраторы данных, которые
по умолчанию спрятаны. Для извлечения концентратора достаточно щелкнуть мышкой
по кнопке в левой нижней части блока, помещенного в рабочую область.
|
Извлечение концентратора данных
|
Как правило, шина данных создается между
двумя концентраторами. На подключаемых разъемах один из них должен возвращать
данные, а другой принимать. Если шину подключить неправильно, на несовместимые
разъемы, то она будет выглядеть поврежденной, в виде пунктирной линии.
4.
Ветвления

упомянуть. Первый из них Блок принятия решений, или Ветвление.
Ветвления:
по датчику нажатия (слева, по логическому или числовому значению (справа)
В приведенном примере (рис. слева) в зависимости от
состояния датчика нажатия (1) выполняется либо верхняя ветвь (2- если нажат),
либо нижняя(3- если отпущен).
Сокращенное
отображение ветвления
Любое
ветвление с помощью окна настройки параметров можно перенастроить на другое
условие. Например, можно принимать решение на основании некоторого значения
(рис. справа), подаваемого на специальный разъем. В этом случае значение должно
поступить по логической или числовой шине данных, от какого – то другого блока.
Ветвление может отображаться в двух режимах: когда видны
обе ветви (и Да, и Нет), как на рисунке, или с отображением только одной из
выбранных ветвей. Это может быть полезно для экономии места на экране, которого
в NXT—G
катастрофически не хватает. Режим определяется установкой флажка «flat view» в левой
нижней части окна настройки параметров.
5.
Циклы
Следующий блок, с которым стоит познакомиться, это цикл.
Как правило, в NXT—G используются циклы либо с параметром,
либо с постусловием.

указывается режим повторений. В примере слева цикл работает бесконечно. Кроме
того, циклы бывают с фиксированным числом повторений, по значению таймера,
значению датчика, значению переменной.
Пиктограмма
бесконечного цикла (слева), цикл по датчику освещенности (справа).
В приведенном примере моторы В и С работают до тех пор,
пока на датчике освещенности на 3 –м порту не будет показано значение больше
50. При этом включен режим вывода значение счетчика повторений, и программист
может подсоединить шину данных к разъему в левом нижнем углу пиктограммы цикла.
6.
Переменные
Для использования переменных в NXT –G предусмотрен
блок Variable, находящийся в палитре Data.
К единственному разъему у него можно подключить шину
данных, по которой будет передаваться значение.
Направление передачи на чтение или запись в значение
переменной настраиваются в параметрах блока. По умолчанию присутствуют всего
три типа переменных : логика, число и цвет.
Программист может создать свою переменную, воспользовавшись
пунктом главного меню Edit -> Define Variables.
Для того чтобы самостоятельно начать программировать этого
уже достаточно. Если же читатель заинтересуется глубже, он может заглянуть в
Полную палитру, добавить дополнительные блоки, создать свои блоки и многое
другое. Среда языка NXT –G обладает массой возможностей и
представляется весьма полезным инструментом для изучения программирования NXT –
роботов начинающими. Если же не появилась уверенность в своих силах, милости
просим в Robo Center!
7.
Robo Center.
Раздел Robo Center содержит четыре модели разработанных
компанией «Лего» специально для пользователей NXT .
перейдя к любой из них, можно получить исчерпывающее руководство по сборке и
составлению простейших программ для этих моделей. Эти разделы стоит пройти
любому счастливому обладателю конструктора, поскольку в них не только можно
найти неплохой самоучитель, но и понять некоторые принципы, заложенные
создателями LEGO MINDSTORMS NXT в свое детище.
Собирая модель по инструкции, не забудьте раскрыть окно Robo Center на
весь экран, чтобы лучше видеть мелкие детали и соединения.
Обладатели конструктора 9797 и программного обеспечения, к
сожалению, не имеют возможности собрать эти модели инструкции, поскольку ее
там нет. Но зато предлагается несколько десятков неплохих уроков со стандартной
учебной моделью, которые, же можно пройти самостоятельно.
Сконструировав модели и разобравшись в принципе их
функционирования, программы можно составить и в любой другой из сред.
TriBot.
TriBot — это трехколесный движущийся робот. Он использует
преимущества всех четырех датчиков, чтобы сделать то, что он запрограммирован. TriBot может
поднимать мяч, когда получит голосовую команду. Также он может быть
запрограммирован на движение по линии. Он может ощущать объекты и имеет систему
зрения.
Датчики и элементы, которые использует TriBot:
·
Контроллер NXT;
·
Ультразвуковой датчик;
·
Датчик звука;
·
Датчик прикосновения;
·

·
Три сервомотора.
Рассмотрим пример программы, которая просто и быстро
заставит TriBot двигаться по черной линии. Пусть левый мотор подсоединен
к порту С, правый к порту В, а датчик освещенности на 3 порт.
В этой программе сначала (1) дается команда мотору С
двигаться без ограничения вперед с мощностью 50 %. Мгновенно запускается цикл
(2), в котором постоянно проверяются показания датчика освещенности (3) и
корректируется мощность мотора В(4 и 5) с помощью ветвления. Если освещенность
под датчиком выше 50% (белый цвет), то выполняется верхняя ветвь (4): мотор В
сбавляет мощность до 25 %. Если освещенность под датчиком ниже 50% (черная линия),
то выполняется верхняя ветвь (4): мотор В набирает мощность до 75 %. Таким
образом, либо робот движется направо в поисках черной линии, либо налево,
стараясь съехать с нее белое поле. Очевидно, что для эффективного выполнения
алгоритма робот должен стартовать, когда его датчик находится по левую сторону
от линии, практически на границе с белым. Подобные устройства, называемые
релейными регуляторами, будут подобно рассмотрены в главе, посвященной
алгоритмам управления.
Robo Arm.

поднимать, поворачивать и захватывать объекты, используя для этого свои ноги.
Он может различать цвета и ощущать объекты. Для того чтобы робот двигался,
используются три мотора – один управляет тремя захватами, а два других
используются для поворотов и движения вверх и вниз.
Датчики и элементы, которые использует Robo Arm T-56:
µ
Контроллер NXT
µ
Датчик прикосновения
µ
Датчик света
µ

Вот пример программы, которая заставит робота распознавать
и захватывать красный или синий шарик.
В этой программе мотор А(1) открывает когти, мотор В(2)
опускает руку на шарик, после чего мотор А(3) захватывает шарик когтями. После
производиться проверка цвета шарика (4): для датчика освещенности синий темнее
красного. Если шарик оказался красным, выполняется верхняя ветвь алгоритма (5):
NXT издает
соответствующий красному сигнал, мотор С возвращает руку. При синем шарике (6)
издается сигнал «синего» и шарик сразу выбрасывается мотором А на негодный.
После ветвления мотор В(7) возвращает руку в исходное положение.
Spike.
Spike реагирует на все, как настоящий скорпион. Он крадется на
шести ногах и имеет крепкие клешни. Он также может видеть и слышать, используя
ультразвуковой датчик и датчик звука. Кроме того, Spike умеет
быстро и точно «парализовать» жертву, касаясь ее датчиком прикосновения.

µ
Контроллер NXT
µ
Ультразвуковой датчик
µ
Датчик звука
µ
Датчик прикосновения
µ
Три сервомотора.
Рассмотрим программу, которая просто и быстро заставит идти
к цели, поразить ее хвостом, играя при этом музыку, и вернуться на место.
В этой программе скорпион движется в перед на 10 оборотов
моторов С и В(1). Затем с помощью мотора А(2) он наносит удар хвостом до тех
пор, пока не коснется жертвы «жалом», т.е. пока не сработает датчик касания на
кончике хвоста(3). После успешного «укуса» NXT играет музыку (4), хвост
возвращается назад (5) и скорпион пятится в исходную позицию(6). Если же кнопка
не убедит, нажата во время удара, то робот «застрянет» в ожидании срабатывания
датчика, а его создателю придется пожертвовать пальцем, чтобы продолжить
выполнение программы.
Alpha Rex.
Alpha Rex умеет делать то, что под силу только самым разным
роботам – адроидам. Он ходит на двух ногах, почти как настоящий человек. В его
ноги встроена пара сервомоторов, которые позволяют ему двигаться, а
ультразвуковой датчик дает роботу возможность видеть препятствия. На руках у Alpha Rex находятся
датчики звука и прикосновения.
Датчики и элементы, которые использует Alpha Rex:
µ
Контроллер NXT
µ
Ультразвуковой датчик
µ
Датчик звука
µ
Датчик прикосновения
µ
Два сервомотора.

заставить Alpha Rex ходить, а его сердце – биться.
В данной программе одновременно запускаются две
параллельные задачи. В первой из них содержится бесконечный цикл (1),в котором
в дисплее NXT поочередно отображаются две различные картинки бьющегося
сердца (2) с промежутком 0,5 секунды (3). Во второй задаче ветвь которой
отходит вниз и вправо, осуществляется движение вперед с помощью заданного числа
оборотов моторов С и В (4). Можно продолжить действие, добавив свои собственные
блоки (5).
8.
Программирование в Robolab.
Robolab 2.9 – это многофункциональная графическая среда
программирования, созданная на основе Lab View 7.0 и ориентированная на самые
разные возрасты – от дошкольников до студентов. Текущая версия Robolab позволяет
программировать несколько типов микроконструкторов – Control Lab, RCX,NXT, а также
проводить независимые расчеты на компьютере. Следует заметить для тех, кто
работал в RCX, но новая прошивка (Firmware) для него работает
в 100 раз быстрее, правда загружается также долго (4-5 мин). Следует обратить
внимание на дань прошлому со стороны разработчиков: некоторые пункты меню
содержат название RCX, но подразумевают также и работу с NXT.
При запуске Robolab предлагает три
уровня работы: Администратор, Программист и Исследователь.
Режим Администратора позволяет настраивать контроллер на
работу со средой.
Режим Программиста позволяет непосредственно создавать
программы и загружать их в микрокомпьютер. Режим Исследователя позволяет
осуществлять запись данных поступающих с датчиков микроконтроллера, с их
последующим анализом. Рассмотрим каждый из режимов подробнее.
Режим «Администратор».

«Проверку связи с RCX» (подразумевается NXT). Есть три варианта исхода:
успешное завершение со звуковым сигналом на микроконтроллере, сообщение о
необходимости сменить операционную систему (ОС NXT или, иначе
говоря, Firmware) и
сообщение об ошибке связи.
Если связь компьютера и NXT не появилась сразу, следует
воспользоваться меню «Select Port» для выбора USB – порта.
Лучше всего выбрать автоопределение и выключить NXT, убедиться, что
он хорошо соединен, и снова включить.
Для поддержки новых возможностей NXT
дополнительные установки добавлены в таблицу «Установка RCX/NXT». Здесь
можно выбрать имя NXT, имя файла загружаемой в NXT
программы. По умолчанию используется rbl. Допускается использовать до шести
символов или можно задать его из программы с использованием расширенного NXT светофора
(блок NXT begin).

диалоговое окно «Choose Hardware» добавлено в установку автоопределения.
Оно может появляться в разных ситуациях при повторе связи с NXT, и этого
не надо бояться. Надеюсь, выбор будет очевиден.
Режим «Программист».

совсем удобно переведено как Управление и Конструирование.
Следовало
бы назвать эти разделы Новичок и Изобретатель. Можно было бы пройти их
последовательно, постепенно окунаясь в среду графического программирования.
Однако нет препятствий для того, чтобы начать сразу с последнего уровня Inventor
4, в котором представлены все основные возможности программирования среды Robolab.
Для перехода на этот уровень необходимо дважды щелкнуть по надписи Inventor
4, не касаясь подразделов.
9.
Основные окна.
Итак, мы зашли в среду программирования. На экране два
основных окна, относящихся к одному проекту: Front Panel и Block Diagram. Первое
(передняя панель) для программирования не пригодиться, хотя его можно
использовать в режиме Исследователя. Второе окно, в котором уже расположены две
пиктограммы светофоров( Рабочее поле программы), предназначено для составления
программы. Его стоит распахнуть на весь экран и приступить к работе.
Два вспомогательных окна:Tools Palette и Functions Palette, —
содержат все необходимое для составления программы. В случае закрытия их снова
можно вывести на экран через пункт Windows верхнего меню.

схему, положенную на левый бок. Она читается слева направо, хотя блоки располагать
можно как угодно. Блоки команд находятся в окне Functions Palette(Палитра
команд). Они связываются между собой проводами, а также управляются
инструментами, находящимися в меню Tools Palette (Палитра
инструментов).
Название любого блока в Functions Palette можно прочитать в
верхней части окна, подведя к нему курсор. Кроме того, под заголовком окна
находиться кнопка Seach(Поиск), с помощью которой можно найти
пиктограмму по названию.
Некоторые из пиктограмм сами являются палитрами и при
переходе открывается новое окно. Вернуться в предыдущее можно по стрелочке,
расположенной в левом верхнем углу палитры рядом с кнопкой Seach.
10.
Готовые примеры программ.

палитра примеров Behaviors.

определенные задачи. Например, блок Go Straight (двигаться прямо)
запускает моторы А и С вперед и через одну секунду выключает их.
Однако для запуска этого фрагмента программы его надо
обязательно поместить между светофорами, соединив их проводами.
Палитра Behaviors содержит ряд серьезных примеров
программирования в Robolab, по которым можно самостоятельно многому
научиться. Некоторые из таких примеров будут рассмотрены ниже.
11.
Взаимодействие с NXT.

NXT(соединение
с компьютером через Bluetooth не поддерживается) и загрузка
операционной системы. Это реализуется через меню Projects, которое
для опытного робототехника содержит много интересного.
Рассмотрим некоторые возможности.
Пункт меню Project -> Select COM Port позволяет выбрать порт USB – подключения
NXT.
Пункт меню Project ->Detective позволяет не только
выбрать соответствующий порт подключения NXT, но и загрузить Firmware,если оно
не было сделано в режиме Администратор. Во время загрузки ОС у NXT пропадает
изображение на экране, но в течение минуты категорически нельзя предпринимать
никаких действий над контроллером.

память NXT,
размещается в разделе My files-> Software Files и получает имя rbl. Для того
чтобы дать другое имя, следует в программе Robolab заменить
начальный блок – зеленый светофор – на аналогичный с надписью NXT из
палитры NXT. на таком
блоке в специальном розовом прямоугольнике можно задать латинскими буквами и
цифрами любое имя программы, причем значимыми будут не более шести первых
символов.
Не забывайте сохранять свои программы на диске компьютера,
давая им запоминающиеся имена. Когда в другой раз попытаетесь открыть
сохраненную программу и увидите черное окно, не пугайтесь: чтобы перейти к
алгоритму, необходимо выполнить пункт меню Window-> Show Block Diagram.
12. Типы команд.
Блоки Functions Palette можно
классифицировать следующим образом:
µ
Команды действия
µ
Команды ожидания
µ
Управляющие структуры
µ
Модификаторы.
Начнем с простейших команд. Их можно разделить на два
типа: Жди и Делай.
Команды типа «Делай» посылают управляющий сигнал на одно из
устройств управления микроконтроллера. Например, «включить моторы», «остановить
моторы», «издать звуковой сигнал», «отправить сообщение», «обнулить таймер» и
т.п. Это действие, как правило, выполняется практически мгновенно (за
исключением звуковых сигналов) после его программа переходит к следующему
блоку. Следует заметить, что включенный мотор продолжает работать до тех пор,
пока не выполниться команда выключения или программа не закончиться.
Команды типа «Жди» ведут себя иначе. Они не выполняют
никакого ощутимого действия, хотя и активно взаимодействуют с оборудованием NXT.эти
команды останавливают ход выполнения программы (точнее, задачи) вы ожидании
некоторого события. Как только событие происодит, управление переходит к
следующей команде. Примеры таких команд: «жди громкого звука», «жди яркого
света». «жди заданного времени» и т.д. Во время выполнения команды «Жди» все
запущенные ранее процессы (включенные моторы и т.д.) продолжают работать.
Следующий тип блоков – это управляющие структуры. Среди них
представлен основной джентельменский набор программиста:
µ
Ветвления
µ
Циклы и безусловные переходы
µ
Подпрограммы
µ
Параллельные задачи
µ
Обработчики событий.
И, наконец, вспомогательный тип блоков – модификаторы. Они
по сути являются параметрами для выполнения различных команд и прикрепляются к
блокам команд разноцветными проводами.
Практически все блоки, оставшиеся в Robolab со времен
RCX, пригодны
для NXT. Но при
этом появилась часть новых блоков, относящихся преимущественно к датчикам NXT, а также
расширяющий функциональные возможности Robolab для обеих систем.
Следует заметить, что между датчиками, моторами и микроконтроллерами сохранена
совместимость «снизу вверх», так что практически во всех случаях можно
использовать старые датчики и моторы с новым микроконтроллером. Только для
этого нужны соответствующие переходники, которые входят в состав набора 9797,
а также продаются отдельно.
13. Команды действия.
Команды
действия применимы к управляющим устройствам NXT. К ним можно
отнести:
µ
Моторы
µ
Динамик
µ
Таймеры
µ
Встроенная память (контейнеры)
µ
Датчики при инициализации и др.
14.
Список литературы
1.
Lego®Mindstorms®Education
2.
Жимарши
Ф. Устройства управления робота./Ф.Жимарши. пер.с.фр. М.А.Комаров. – М.,
НТ-Пресс,2007.- 288с.:ил.
3.
Филлипов
С.А. «Робототехника для детей и родителей»./С.А. Филлипов. — С-П.: «Наука»,2010
—>
Автор:
Вязовов Сергей Михайлович, заведующий кафедрой информатики МАОУ «Лицей №14 имени Заслуженного учител Российской Федерации А.М.Кузьмина» г.Тамбова
1. ИСПОЛЬЗОВАНИЕ УЛЬТРАЗВУКОВОГО ДАТЧИКА ДЛЯ ОБНАРУЖЕНИЯ ОБЪЕКТОВ
Ультразвуковой датчик часто используется для обнаружения препятствия во время движения.
Для понимания сути вопроса рассмотрим задачу остановки робота в 10 сантиметрах от стены.
Реализация программы:
Настройка блока движения:
Настройка блока ожидания состояния ультразвукового датчика:

В последнем блоке задаётся отключение моторов робота.
Задачи:
- Реализуйте алгоритм работы робота, по которому, достигнув стены он разворачивается на 180°, и едет в течение 5 секунд в противоположном направлении.
- Реализуйте алгоритм работы робота, который движется вокруг коробки высотой 50 см.
Робот-охранник
Задача. Необходимо разработать алгоритм работы робота, охраняющего коробку, находящуюся на расстоянии не более 15 см, в соответствии с которым, как только коробку попытаются унести (расстояние от робота до коробки станет более 15 см), он должен начать издавать звуковой сигнал.
Реализация:

Решение задачи заключается в следующем:
В бесконечном цикле происходит выполнение двух блоков:
- Блок «Wait» (ожидание состояния ультразвукового датчика) с параметром «Until» расстояние до объекта («Distans») больше 15 см.
- Блок «Sound» (звуковой сигнал).
Как только расстояние от робота до коробки превысит 15 см (1), проигрываем звук (2) и снова переходим к ожиданию состояния ультразвукового датчика (1). Если объект на место не вернули, то снова издаём звуковой сигнал (2). И так до «бесконечности».
Задача:
В нашей программе робот охраняет объект, который находит в зоне его видимости. Сконструируйте механизм, который будет вращать ультразвуковой датчик вокруг робота и издавать сигнал при приближении к нему другого объекта.
2. ОРГАНИЗАЦИЯ ДВИЖЕНИЯ РОБОТА ПО ТРАЕКТОРИИ
Движение по прямой
Движение по прямой в течение некоторого периода организуется при помощи блока «Move». За продолжительность движения отвечает параметр «Duration», значение которого может быть задано в градусах, в оборотах мотора вокруг своей оси, и в секундах.

Организация поворота
Если одно колесо робота вращается быстрее другого, то есть смещён ползунок мощности моторов в сторону одного из них, то робот едет не по прямой, а по дуге. Чем больше смещение ползунка мощности мотора, тем меньше радиус дуги. При полном смещении ползунка робот начинает вращаться вокруг одного колеса, что лежит в основе решения задач поворота робота на заданный угол.

Задачи:
- Организуйте движение по окружности (подберите количество оборотов, которое необходимо задать, чтобы робот описал полную окружность).
- Организуйте поворот робота на одном колесе на угол 90 градусов.
- Организуйте движение робота по периметру квадрата.
Движение робота по спирали
Идея движения по спирали заключается в том, что через одинаковые промежутки времени робот начинает двигаться по окружности всё с большим и большим радиусом.
Программное это выглядит следующим образом:

Для каждого блока движения необходимо задать параметры:
- смещение мощности моторов;
- мощность моторов;
- продолжительность движения.
Мощность моторов для всех блоков одинакова, остальные параметры плавно увеличиваются от блока к блоку.
3. ОБНАРУЖЕНИЕ ЧЁРНОЙ ЛИНИИ
Задача заключается в реализации алгоритма движения робота до чёрной линии.
Для организации движения достаточно одного блока управления моторами со значением параметра продолжительности движения «Unlimited».

Следующим блоком в программе будет блок ожидания состояния датчика освещённости (или датчика цвета). Движение будет происходить до тех пор, пока не наступит состояние, задание в параметре «Until». Значение состояния, соответствующего положению датчика над чёрной линии, подбирается экспериментальным путём и зависит от многих факторов, таких как: уровень внешней освещённости, высота датчика над чёрной линией, генерируемый датчиком свет и др.

Если программа запущена с подключенным роботом к компьютеру, то для блока ожидания данных мы сможем наблюдать текущее значение, получаемое сенсором. Это позволит наиболее точнее отладить нашу программу.
Обратите внимание, что после достижения требуемого состояния (в нашем примере – уровень отражённого света стал меньшим 35%, то есть мы достигли чёрного цвета), робот должен перейти к следующему блоку. Если его нет, робот может не остановиться и продолжить движение ещё в течении небольшого времени. Чтобы этого не случилось, можно добавить блок управление движением моторов в режиме «Stop»:

Задачи:
- Робот движется до чёрной линии. После её достижения, он останавливается на 5 секунд, после чего продолжает движение до следующей чёрной линии, затем останавливается.
- Робот движется до чёрной линии. После её достижения он разворачивается на 360̊ и продолжает движение в течении 5 секунд.
4. РАБОТА С ПЕРЕМЕННЫМИ
Создание и удаление переменных
Создать и удалить переменные можно, вызвав диалоговое окно «Edit Variables» пункта меню Edit – Define Variables.

Для использования переменных (для записи в них значения и чтения из них значения для передачи в другой блок) в программе нам понадобятся контейнеры (блок «Variables»). Они расположены в группе блоков «Data».

Передача значений сенсоров в переменную
Для того чтобы передать текущее значение считанное сенсором уровня освещённости (или сенсором цвета, работающего в режиме сенсора освещённости) в переменную EtalonLight нам понадобится блок «Light Sensor» (или «Color Sensor»), расположенные в группе блоков «Sensor» и блок «Variables» с именем переменной EtalonLight.

Для того чтобы передать значение уровня освещенности, необходимо соединить параметр «Intensity» (для Ligth Sensor) или параметр «Detected Color» (для Color Sensor) с входом «Read» блока переменной путем протаскивания мыши.
В программе это выглядит следующим образом:

Для того, чтобы данные с датчика освещённости (или датчика цвета) успели передаться в переменную, часто после блока переменой помещают блок ожидания сенсора касания. На соревнованиях такая кнопка осуществляет старт робота, а все блоки, которые расположены до неё осуществляют калибровку робота под текущие внешние факторы.
Чтение данных из переменной
Очевидно, что данные в переменную можно не только записать (Write), но и считать (Read). Считанные данные из переменной можно передать в другую переменную, передать как параметр в условие или цикл, применить к ним математические или логические операции.
- Производится передача данных (то есть запись) значения ультразвукового датчика в переменную Etalon.
- Значение переменной Etalon считывается (выход «Read») и передаётся в переменную Double (вход «Write»).
- Значение переменной Double считывается (выход «Read») и передаётся в качестве аргумента А блока «Math» с операцией «Addition», осуществляющий сложение с константным значением аргумента B.
- Результат операции сложения (Addition) передаётся, как параметр, в блок Switch.
Значение логической переменной можно использовать в качестве параметра, определяющего время работы цикла.
Рассмотрим пример, в котором цикл завершает свою работу, как только значение ультразвукового датчика становится меньше 10.

- В процессе движения робота в цикле происходит постоянно считывание ультразвуковым датчиком расстояния до объекта, которое передаётся в качестве аргумента А в блок сравнений (Compare).
- Результат сравнения текущего значения ультразвукового датчика (аргумент А) с константным значением (аргумент В) передаётся в логическую переменную Logic1 (вход «Write»).
- Текущее значение логической переменной передаются как параметр в цикл. Если это значение истинно, то цикл завершает свою работу.
Значения переменных можно передавать в значения опций моторов или датчиков.
Рассмотрим пример управления скоростью моторов с помощью переменных, на примере организации равноускоренного движение робота.

- В переменную Power записываем начальное значение, равное 10.
- В бесконечном цикле значение переменной Power передаём (выход «Write») в параметр мощности моторов (вход «Power»).
- Затем значение переменной при помощи операции Addition блока Math к значению переменной Power добавляется константное значение аргумента B, равное 10.
- Через 2 секунды возвращаемся к началу цикла (2).
5. МОДИФИКАЦИЯ АЛГОРИТМА ОБНАРУЖЕНИЯ ЧЁРНОЙ ЛИНИИ
Идея реализации программного решения состоит в том, что робота сначала помещают датчиком освещённости над чёрной линией и берут, так называемую, эталонную пробу. Это позволит избежать конфликта с изменяющимся внешним освещением и необходимостью каждый раз менять программу. А затем уже текущее значение отражённого света сравнивают с эталонной пробой.
Очевидно, что эталонную пробу придётся где-то хранить. Для этого используются переменные.
Таким образом, полная программа движения до чёрной линии с остановкой будет выглядеть таким образом:

Порядок работы программы:
- Робот помещается так, чтобы датчик освещённости был расположен над чёрной линией и запускается программа, первые два блока которой выполняют калибровку робота и значение сохраняется в переменную EtalonColor.
- Робот переносится в место старта и ожидается нажатие кнопки на датчике касания, осуществляющей старт робота.
- В нашей программе старт будет осуществлён с пятисекундной задержкой.
- Движение робота осуществляется в бесконечном цикле. Постоянно считывается текущее показание датчика и оно сравнивается с эталонным. (Блок сравнения, математический блок и блок логических операций расположены в группе блоков «Data»).
- Результаты сравнения в виде логического параметра (истина/ложь) передаются в блок выбора «Switch».
- Если результат сравнения оказался истинным, то есть текущий уровень освещённости меньше эталонного, то мы достигли чёрной линии и нужно остановить моторы.
- В противном случае мы ещё не достигли чёрной линии и нужно продолжить движение.
6. ДВИЖЕНИЕ ВДОЛЬ ЧЁРНОЙ ЛИНИИ
Рассмотрим алгоритмы движения робота вдоль чёрной линии. Эти алгоритмы основаны на понятии регуляторов.
Под регулятором будем понимать некоторое программное решение, которое управляет моторами робота, не позволяя ему покидать чёрную линию. Робот, в процессе своего движения считывает показания датчика освещённости и при их изменении изменяет мощность моторов. В результате робот постоянно поворачивает то в одну, то в другую сторону.
Пусть переменная motor – это первоначальная скорость моторов. При старте робота эта мощность одинаковая для обоих моторов. Переменная UP – это управляющее воздействие на моторы робота. Тогда, для того, чтобы робот начинал поворачивать к чёрной линии или уходить с неё, необходимо на один мотор подать мощность motor + UP, а на другой мотор motor – UP.
В теории управления существует несколько видов регуляторов. Мы рассмотрим два самых простых: релейный регулятор и пропорциональный регулятор.
Для организации любого регулятора нам понадобится правильным способом разместить робота над чёрной линией.
Для начала обратим внимание, что человек и робот видят чёрную линию по-разному. У человека границы чёрной линии и белой чёткие, а у робота размытые.
Поэтому правильным размещением робота над линией является то, когда датчик расположен на границе чёрной и белой линии.
Релейный регулятор
Пусть S – это начальное значение, полученное с датчика при калибровке робота. Если текущее значение уровня отражённого света меньше S, то это означает, что датчик сильнее сместился на чёрную линию и его надо вернуть обратно, то есть робот должен двигаться влево. Если же текущее значение стало меньше S, то робот наоборот сместился ближе к белой линии и его надо вернуть на чёрную линию, то есть он должен двигаться вправо.
Реализация алгоритма выглядит следующим образом:
Настройки блока (1):

Настройки блока (2):

Такой регулятор позволяет роботу пройти по чёрной линии, однако на сильно изогнутой линии (на слаломе в случае «Биатлона») нет плавности движения и робот постоянно теряет скорость. Поэтому данное решение в соревнованиях не применяют.
Пропорциональный регулятор
Данный регулятор позволяет применить к мощностям робота управляющее воздействие, которое вычисляется по формуле:

UP – управляющее воздействие, k – коэффициент управляющего воздействия, S – начальное значение уровня отражённого света (эталон, полученный до старта робота), Light – текущее значение уровня отражённого света.
Задача достижения плавности движения робота на максимально возможной скорости сводится к верному подбору коэффициента k управляющего воздействия.
Управляющее воздействие UP также позволяет роботу поворачивать то влево, то вправо. Если датчик сместился на чёрную линию, то разность
Light – S < 0, а если на белую, то Ligth — S > 0. То есть, мощность одного мотора увеличиваем на UP, а другого уменьшаем.
Таким образом,
motorC = motor + UP
motorB = motor – UP
Реализация алгоритма:

Пропорциональный регулятор для робота с двумя датчиками освещенности.
Управляющее воздействие в случае пропорционального регулятора с использованием двух датчиков вычисляется по формуле:
где S1 – значение левого датчика освещённости, S2 – значение правого датчика освещённости. Напомним, что вместо датчиков освещённости можно использовать датчики цвета, работающие в режиме датчиков освещённости.
Однако, датчики при калибровке могут иметь разные начальные значения, поэтому формулу можно улучшить таким образом:

где Sleft – начальное значение левого датчика, а Sright – начальное значение правого датчика


































