Элементы математической логики в среде NXT-G. Работа с данными

№17-1,

технические науки

Данная статья посвящена изучению темы "Основы робототехники с Lego Mindstorms NXT 2.0", непосредственно для начинающих, при изучении палитры данных: их настроек, возможностей и примеры программирования в среде NXT-G 2.0

Похожие материалы

Образовательная робототехника – это новая технология обучения, позволяет вовлечь в процесс инженерного творчества детей, начиная с младшего школьного возраста. Знания по робототехнике способствуют глубокому изучению составляющих современных роботов, а визуальная программная среда позволяет легко и эффективно изучать алгоритмизацию и программирование. То есть изучение в данном направлении поможет учащимся повысить свою общенаучную подготовку, а именно развитие их мышления, логики, математических и алгоритмических способностей, исследовательских навыков.

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

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

Таблица 1. Описание палитры в среде Lego Mindstorms NXT 2.0

Название палитры

Изображение палитры

Название блоков/палитры, составляющих

Общая палитра

Элементы математической логики в среде NXT-G

1 – блок движения

2 – блок запись-воспроизведение

3 – блок звук

4 – блок дисплей

5 – блок жди (имеются дополнительные блоки)

6 – блок цикл

7 – блок переключатель (условия)

Полная палитра

Элементы математической логики в среде NXT-G

1 – общая палитра

2 – палитра действий

3 – палитра датчиков

4 – палитра управления выполнением программы

5 – палитра данных

6 – палитра дополнения

Пользовательская палитра

Элементы математической логики в среде NXT-G

1 – палитра моих блоков, созданная при установке программ на компьютер. Сюда по умолчанию помещаются созданные программные блоки пользователя

2 – палитра загружаемых из Интернет блоков

Рассмотрим более подробно «палитру работы с данными» и один блок из «палитры дополнения» - перевод «числа в текст», а также их настройки (см. таблицу 2.).

Таблица 2. Описание блоков

Блок

Назначение

Logic/Логика

Элементы математической логики в среде NXT-G

Команда Логика позволяет работать с логическими переменными, константами или значениями, переданными в блок от других команд через концентратор данных. К двум значениям может применяться одна из логических операций И (AND), ИЛИ (OR), ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR), ОТРИЦАНИЕ (NOT). При этом, если значения не передаются в команду, они задаются в параметрах для переменных А и В (галочка - истина, крестик - ложь). Изображение кругов внутри прямоугольника, называемых кругами Эйлера-Венна - это подсказка. Закрашенная оранжевым часть обозначает результат, который команда выдаст после применения выбранной операции.

Элементы математической логики в среде NXT-GНастройки блока:

Math/Математика

Элементы математической логики в среде NXT-G

Команда Математика предназначена для расчетов. С ее помощью можно выполнять над числами различные операции: сложение, вычитание, умножение, деление, абсолютная величина (модуль) и извлечение квадратного корня. Внутри прямоугольника, в нижнем правом углу, отображается соответствующий символ выбранной операции. Входные параметры задаются теми же способами, что и у остальных команд этой группы, вводимые значения могут быть как положительными, так и отрицательными целыми (целое – число без десятичных величин). Результат применения команды - число (ответ, полученный после применения операции к значениям А и В). Например, если А равно 5, В равно 7, операция Сложение, то результатом работы команды будет число 12.

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

Элементы математической логики в среде NXT-G

Compare/Сравнение

Элементы математической логики в среде NXT-G

Команда Сравнение предназначен для сравнения, принимает четыре значения сравнения: больше, меньше, равно. Отметим только, что результат у нее логического типа, тогда как входные данные должны быть числовыми. Знак операции указывается в параметре Action (Действие).

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

Элементы математической логики в среде NXT-G

Rang/Диапазон

Элементы математической логики в среде NXT-G

Команда Диапазон предназначен для определения принадлежности числа к определенному диапазону чисел, или находится вне этого интервала. Данный блок может принимать два значения: в пределах интервала, за пределом. Задаваемый интервал должен быть числовым, как и проверяемое значение. Если значение входит (не входит) в интервал, команда передает в программу логическое значение Истина.

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

Элементы математической логики в среде NXT-G

Random/Случайное значение

Элементы математической логики в среде NXT-G

Команда Случайное значение является важным элементом теории программирования. В более сложных языках ее называют «Генератор случайных (псевдослучайных) чисел». Вам нужно указать диапазон, задав максимальное и минимальное значение в окне настройки параметров команды. Результатом ее работы будет случайное число из указанного диапазона.

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

Элементы математической логики в среде NXT-G

Variable/Переменная

Элементы математической логики в среде NXT-G

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

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

Элементы математической логики в среде NXT-G

Мы также можем вводить собственные переменные, для этого нужно выбрать в меню Edit (Правка) à Define Variables (Определитель переменных) и появиться окно Edit Variables (Редактирование переменных) à Create (Создать), в которых и создаются новые переменные.

Элементы математической логики в среде NXT-G

Переменные могут изменять свои значения во время работы программы. Но тип значений переменной задается один раз, и в программе изменяться не может. (В более сложных языках возможно и это, но NXT-G не поддерживает функцию приведения типов). Переменную можно создать только для чтения значений, тогда ее содержимое менять будет запрещено. Чтобы снять запрет, в параметрах нужно указать вариант Write (Записать). В одной и той же программе переменная может быть и только для чтения, и для чтения и записи. Например, в начале программы Вы создали переменную V1 с параметром Read (только чтение), а в середине кода в еще одном блоке Variable указали для нее значение Write (Записать).

Constant/Константа

Элементы математической логики в среде NXT-G

Константы во многом похожи на переменные, но их главная особенность в том, что значение константы задается один раз и больше изменяться не может. Они также бывают трех типов: число, текст и логическое значение. По умолчанию Вы можете создать три константы, соответственно числового, текстового и логического типа.

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

Элементы математической логики в среде NXT-G

Значения их устанавливаются в окне настройки параметров вручную. Для создания большего количества констант, как и в случае с переменными, есть Define Constants (Редактор констант), расположенный в меню Edit (Правка).

Элементы математической логики в среде NXT-G

В окне редактора можно создать, удалить или редактировать константу. После нажатия на кнопку Create (Создать) Вам нужно указать имя константы, ее тип и значение. Нажмите кнопку ОК. Ваша константа создана и автоматически добавлена к списку всех констант блока Constant и данное окно можно закрыть.

Number to Text /Число в текст

Элементы математической логики в среде NXT-G

Команда Число в текст, прежде всего, относится к «палитре дополнения», которая позволяет преобразовать число в текст, например для вывода на экран дисплея.

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

Элементы математической логики в среде NXT-G

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

Элементы математической логики в среде NXT-G

Рис. 1 Концентратор данных блока

Шины данных, передающие входящие данные на блок, подключены к разъемам, находящимся на левой стороне их концентраторов данных. Шины данных, передающие исходящие данные, подключены к разъемам, находящимся на правой стороне.

Элементы математической логики в среде NXT-G

Рис. 2 Внешний вид разъемов данных и цветовая окраска шин данных

[A] Входной разъем

[B] Выходной разъем

[C] Числовая шина данных (желтая)

[D] Логическая шина данных (зеленая)

[E] Текстовая шина данных (оранжевая)

[F] Поврежденная шина данных (серая)

Если для входного разъема есть соответствующий выходной разъем (см. выше A), входящие данные будут проходить от входного разъема на выходной разъем без изменений. В этом случае можно использовать выходной разъем, если входной разъем подключен к шине данных входа; подключение шины данных выхода к такому выходному разъему без подключенной шины данных входа приведет к «неисправности» шины данных выхода (она будет окрашена в серый цвет).

Каждая шина данных осуществляет обмен специфическими типами данных между блоками. Например, если шина данных перетянута с логического разъема на концентратор данным блока, ее можно подключить только к логическому разъему на концентраторе данных другого блока.

Рассмотрим два примера программ на применения рассмотренных блоков.

Пример 1. Даны два числа х=25 и у=-5, выведите на экран сумму этих двух чисел.

Программа реализации решения:

Элементы математической логики в среде NXT-G

1

Элементы математической логики в среде NXT-G

 

Используем математический блок с операцией (Operation) à сложение (Addition), в данном блоке используются две переменные А и В, то есть вводим наши значения в данные поля.

Далее, как ввели данные значения, мы воспользуемся блоком число в текст, что бы отобразить результат вычисления на дисплей лего-робота. После чего мы раскрыли концентратор данных блоков, из выходных данных математического блока () объединим с входными данными блока число в текст ().

2

Элементы математической логики в среде NXT-G

В блоке дисплей выбираем действие (Actoin) à текст (Text), вводимый текст в данном случае можно не удалять, он удалиться автоматически, так как мы объединили выходные данные блока число в текст () с входными данными блока дисплей (), раскрыв концентратор данных блоков.

3

Элементы математической логики в среде NXT-G

После блока дисплей, мы поставили блок ожидания, для того чтобы смогли увидеть результат вычисления в течение 3 секунд, то есть указав в пункте контроль (Control) à время (Time).

Примечание: Также в данной задаче можно было использовать переменн(-ую/-ые), для введения значений переменной х и у.

Пример 2. Даны два случайных числа хÎ[-25;0] и y=36. Вычислите значение \left|x\right|+\sqrt{y} и определите, принадлежит ли данное число данному отрезку [1;25].

Программа реализации решения:

Элементы математической логики в среде NXT-G

1

Элементы математической логики в среде NXT-G

 

Выбираем блок случайных значений, для того чтобы программа выбирало значение х из заданного отрезка [-25,0].

2

Элементы математической логики в среде NXT-G

Математический блок используем для вычисления формулы |х|, то есть в пункте операция (Operation) à абсолютная величина (Absolute Value), причем значение А и В мы не вносим, так как значение А берется из выходных данных блока случайных значений, а значение В равно 0 (работаем с одной переменной).

3

Элементы математической логики в среде NXT-G

Создали константу, используя блок константы, а именно в главном меню выбрали пункт править (Edit) à редактор констант (Define Constants), в появившемся окне (Edit Constants) нажимаем на кнопку создать (Create) и перед вами станут активны следующие пункты константы:

- имя (Name);

- тип данных(Datatype);

- значение (Value).

В данных пунктах указываем имя переменной у, типа число равное 36, и нажимаем на кнопку ОК, после чего можно закрыть данное окно.

После чего в настройке блока константы в пункте действие (Actoin) à выберите из списка (Choose from list) и в поле лист (List) выберите нужную константу.

Элементы математической логики в среде NXT-G

4

Элементы математической логики в среде NXT-G

Математический блок используем для вычисления формулы \sqrt{y}, то есть в пункте операция (Operation) à квадратный корень (Square Root), причем значение А берется из выходных данных блока константы (), а значение В равно 0 (работаем с одной переменной).

5

Элементы математической логики в среде NXT-G

Математический блок используем для вычисления формулы \left|x\right|+\sqrt{y}, то есть в пункте операция (Operation) à сложение (Addition), причем значение А берется из выходных данных математического блока (под номером 2), а значение В - выходных данных математического блока (под номером 4)

6

Элементы математической логики в среде NXT-G

 

Блок диапазон используем для того чтобы определить принадлежит ли результат нашего вычисления отрезку [1,25], выбрав операцию (Operation) à в пределах интервала (Inside Range).

Далее, раскрыли концентратор блоков (диапазон, число в текст, переключатель) и объединим блок диапазон с блоком число в текст, что бы отобразить результат вычисления на дисплей лего-робота (используя блок дисплей), и с блоком переключателя (условием), чтобы сообщить соответствующую информацию на включения данного значения, а именно:

- выходные данные блока диапазон (), с входными данными блока число в текст ().

- выходные данные блока диапазон (), с входными данными блока переключатель

(), который принимает значение в настройках данного блока контроль (Control) логическое значение (Logic).

7

Элементы математической логики в среде NXT-G

В блоке дисплей выбираем действие (Actoin) à текст (Text), вводимый текст в данном случае можно не удалять, он удалиться автоматически, так как мы объединили выходные данные блока число в текст () с входными данными блока дисплей (), раскрыв концентратор данных блоков.

8 - 10

Элементы математической логики в среде NXT-G

Блок ожидания, необходим для того чтобы смогли увидеть соответствующую информацию в течение 2 секунд, указав в пункте контроль (Control) à время (Time).

9

Элементы математической логики в среде NXT-G

Блок переключателя (условия), как раннее было сказано, необходим чтобы, сообщить информацию на включения данного значения в отрезок [1,25], в соответствии «да» или «нет».

Элементы математической логики в среде NXT-G

В блоке дисплей выбираем действие (Actoin) à текст (Text), в данном пункте вели текст «- Yes» и установили его позицию (Position) на дисплеи блока NXT, указав значение координат Х=22 и У=32, так же можно указать расположение текста по линии (Line).

Элементы математической логики в среде NXT-G

В блоке дисплей выбираем действие (Actoin) à текст (Text), в данном пункте вели текст «- Not» и установили его позицию (Position) на дисплеи блока NXT, указав значение координат Х=22 и У=32.

 

Список литературы

  1. James Floyd Kelly. Lego Mindstorms NXT-G Programming Guide: Second Edition [текст] / Apress, 2010. – 317с.
  2. Owen Bishop. Programming Lego Mindstorms NXT [текст] / Syngress, 2007. – 187c.
  3. Piotr Czekalski. Programming Lego Mindstorms NXT robots. Macrofaculty profiled documents [текст] / Silesian University of Technology, Gliwice, 2009. – 117с.
  4. Основы робототехники: учебное пособие 5-6 класс [текст] / Д.А. Каширин, Н.Д. Федорова. – Курган: ИРОСТ, 2013. – 240с.