Системы управления с обратной связью

Системы управления с обратной связью Реферат

Системы управления с обратной связью

Введение

Обра́тная связь (англ. feedback — «фидбэк» — «обратное питание») —
в широком смысле означает отзыв, отклик,
ответную реакцию на какое-либо действие
или событие:

Обра́тная связь в технике — это процесс, приводящий к тому, что
результат функционирования какой-либо
системы влияет на параметры, от которых
зависит функционирование этой системы.
Другими словами, на вход системы подаётся
сигнал,пропорциональный её выходному сигналу 

Система управления — систематизированный
(строго определённый) набор средств 
сбора сведений о подконтрольном
объекте и средств воздействия 
на его поведение, предназначенный 
для достижения определённых целей.
Объектом системы управления могут 
быть как технические объекты, так 
и люди. Объект системы управления
может состоять из других объектов,
которые могут иметь постоянную
структуру взаимосвязей.

Техническая структура управления
— устройство или набор устройств 
для манипулирования поведением
других устройств или систем.

Объектом управления может 
быть любая динамическая система 
или её модель. Состояние объекта 
характеризуется некоторыми количественными 
величинами, изменяющимися во времени,
то есть переменными состояния. В 
естественных процессах в роли таких 
переменных может выступать температура,
плотность определенного вещества
в организме, курс ценных бумаг и 
т. д. Для технических объектов это 
механические перемещения (угловые 
или линейные) и их скорость, электрические 
переменные, температуры и т. д. Анализ
и синтез систем управления проводится
методами специального раздела математики
— теории управления.

Структуры управления
разделяют на два больших класса:

Автоматизированные системы 
управления (АСУ) — с участием человека
в контуре управления;

Система автоматического 
управления(САУ) — без участия 
человека в контуре управления.

Система автоматического 
управления, как правило, состоит 
из двух основных элементов — объекта 
управления и управляющего устройства.

Объект управления — изменение состояния объекта в соответствии
с заданным законом управления. Такое
изменение происходит в результате внешних
факторов, например, вследствие управляющих
или возмущающих воздействий.

По виду информации
в управляющем устройстве

Замкнутые САУ

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

Разомкнутые САУ

Сущность принципа разомкнутого
управления заключается в жестко
заданной программе управления. То
есть управление осуществляется «вслепую»,
без контроля результата, основываясь 
лишь на заложенной в САУ модели
управляемого объекта. Примеры таких 
систем: таймер, блок управления светофора,
автоматическая система полива газона,
автоматическая стиральная машина и 
т. п.

В свою очередь, различают:

Разомкнутые по задающему 
воздействию

Разомкнутые по возмущающему
воздействию

Примеры систем автоматического
управления

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

Системы дискретного действия
или автоматы (торговые, игровые, музыкальные).

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

Системы управления с участием
людей как объектов управления зачастую
называют системами менеджмента.

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

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

        
В любом процессе управления 
всегда происходит взаимодействие 
двух систем — управляющей 
и управляемой. Если они соединены 
каналами прямой и обратной 
связи, то такую систему называют 
замкнутой или системой с обратной 
связью.

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

     Рассмотрим 
простейший пример управления 
— поддержание постоянно заданной 
температуры в электрической 
печи (или термостате). Выполняя эту 
задачу вручную (без применения 
средств автоматики), человек должен:
1) наблюдать за показаниями термометра,
2) сравнивать эти показания с 
заданной температурой и 3) при 
наличии разности между заданным 
и наблюдаемым значениями передвигать 
ползунок регулируемого реостата,
изменяя силу тока и температуру 
электронагревательного прибора 
таким образом, чтобы эта разность 
стремилась к нулю.

        
Структура автоматической системы, 
предназначенной для решения 
такой задачи, сводится к схеме, 
изображенной на рисунке.

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

        
Такие системы представляют собой 
типичный пример систем автоматического 
регулирования.

Управление без обратной связи

В задачах управления обычно существуют два объекта: управляющий и управляемый. В простейшем варианте от управляющего объекта поступает команда и управляемый выполняет ее, ничего не сообщая о результате или об изменившихся условиях работы. В этом суть прямой связи (рис. 8.1).

Системы управления с обратной связью  

Рис. 8.1. Прямая связь в управлении.

С точки зрения мобильного робота управляющий объект — это его контроллер с запущенной программой, объект управления — это его колеса и корпус (шасси). Управляющие команды контроллер подает на моторы, при прямой связи руководствуясь показаниями своих внутренних часов — таймера.

Первый класс задач, с которых начинается программирование, — это управление перемещениями робота. Рассмотрим их по порядку. В качестве сред программирования используем Robolab 2.9.4 для начинающих и RobotC для подготовленных программистов. В качестве модели робота — любую двухмоторную тележку.

Движение в течение заданного времени вперед и назад

Для движения вперед используются команды управления моторами. Эти команды просто включают моторы. Особенность NXT заключается в том, что после окончания выполнения программы сохраняются все установки в поведении робота, но на моторы перестает подаваться напряжение. Таким образом, просходит пуск и сразу плавное торможение (рис. 8.2).

Системы управления с обратной связью  

Рис. 8.2. Включение моторов.

Task main()

{ motor[motorB] = 100; // моторы вперед с motor[motorC] = 100; // максимальной мощностью

}

Обе команды выполняются практически мгновенно. Если сразу следом за ними выключить моторы, то тележка просто дернется и останется стоять на месте (рис. 8.3):

Системы управления с обратной связью  

Рис. 8.3. Остановка при попытке начать движение.

Task main()

{ motor[motorB] = 100; motor[motorC] = 100; motor[motorB] = 0; // стоп мотор motor[motorC] = 0;

}

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

Системы управления с обратной связью  

Рис. 8.4. Правильный порядок управления моторами.

Task main()

{ motor[motorB] = 100; motor[motorC] = 100; wait1Msec(1000); // Ждать 1000 мс motor[motorB] = 0; motor[motorC] = 0; }

Движение вперед или назад, очевидно, определяется направлением вращения моторов (рис. 8.5). Для смены направления не требуется остановка:

Системы управления с обратной связью  

Рис. 8.5. Проехать секунду вперед, секунду назад и остановиться.

Task main()

{ motor[motorB] = 100; motor[motorC] = 100; wait1Msec(1000);

motor[motorB] = -100; // «Полный назад» motor[motorC] = -100; wait1Msec(1000); motor[motorB] = 0; motor[motorC] = 0;

}

В момент смены направления на высокой скорости возможен занос. Плавное торможение возможно. Для этого перед подачей команды «назад» с моторов снимается напряжение и робот некоторое время едет по инерции (рис. 8.6). 

Системы управления с обратной связью  

Рис. 8.6. Перед сменой направления полсекунды ехать по инерции.

Более краткий промежуток, чем 1 секунда, задается с помощью команды «N/100» и модификатора. В Robolab 2.9.4 можно задавать время в миллисекундах командой «N/1000»:

Task main()

{ motor[motorB] = 100; motor[motorC] = 100; wait1Msec(1000);

// Включить плавающий режим управления моторами bFloatDuringInactiveMotorPWM = true; motor[motorB] = 0; motor[motorC] = 0; wait1Msec(500); motor[motorB] = -100; motor[motorC] = -100; wait1Msec(1000);

// Включить режим «торможения» bFloatDuringInactiveMotorPWM = false; motor[motorB] = 0; motor[motorC] = 0;

}

В Robolab обычными командами моторы включаются в плавающем режиме, а в RobotC по умолчанию используется режим «торможения», который позволяет достичь более точного управления. Но и в Robolab существуют «продвинутые» команды управления моторами в режиме торможения да еще с диапазоном мощностей –100…100. 

Повороты

Для выполнения поворота на месте достаточно включить моторы в разные стороны. Тогда робот будет вращаться приблизительно вокруг центра оси ведущих колес со смещением в сторону центра тяжести. Для более точного поворота надо подбирать время в сотых долях секунды (рис. 8.7). Однако при изменении заряда батареек придется вводить новые параметры поворота:

Системы управления с обратной связью  

Рис. 8.7. Поворот на месте.

Task main()

{ motor[motorB] = 100; // Моторы в разные motor[motorC] = -100; // стороны wait1Msec(300); motor[motorB] = 0; motor[motorC] = 0;

}

Существует другой тип поворотов. Если один из моторов остановить, а другой включить, то вращение будет происходить вокруг стоящего мотора. Поворот получится более плавным (рис. 8.8):

Системы управления с обратной связью  

Рис. 8.8. Плавный поворот.

Task main()

{ motor[motorB] = 100; motor[motorC] = 0;

wait1Msec(1000); // вращается только мотор B motor[motorB] = 0;

}

Движение по квадрату

Используя полученные знания управления моторами, можно запрограммировать движение по квадрату или другому многоугольнику с помощью цикла или безусловного перехода (рис. 8.9):

Системы управления с обратной связью  

Рис. 8.9. Движение по многоугольнику с плавными поворотами.

Task main()

{ while (true){ motor[motorB] = 100; motor[motorC] = 100; wait1Msec(1000); motor[motorC] = 0; wait1Msec(1000); motor[motorB] = 0;

}

}

Уточнив длительность поворотов и число повторений, научим тележку объезжать квадрат по периметру 1 раз (рис. 8.10). Для точности поворотов снизим мощность моторов примерно вдвое. Задержки придется подобрать самостоятельно:

Системы управления с обратной связью  

Рис. 8.10. Для поворота на 90 градусов длительность придется подобрать самостоятельно.

Task main()

{ for(int i=0;i<4;i ){ // Цикл выполняется 4 раза motor[motorB] = 50; motor[motorC] = 50; wait1Msec(1000); motor[motorC] = -50; wait1Msec(400); motor[motorB] = 0;

}

}

Управление с обратной связью

Обратная связь

Появление обратной связи в системе означает то, что управляющий объект начинает получать информацию об объекте управления       

(рис. 8.11).

Системы управления с обратной связью  

Рис. 8.11. Управление с обратной связью.

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

Точные перемещения

Чтобы поворот не зависел от заряда батареек, можно воспользоваться встроенным в двигатели датчиком оборотов, «энкодером», который позволяет делать измерения с точностью до 1 градуса. Для более эффективного управления задействуем в Robolab «продвинутые» команды, считая что при повороте тележки на 90 градусов левое колесо поворачивается на 250 градусов вокруг своей оси (рис. 8.12):

Системы управления с обратной связью  

Рис. 8.12. Точный поворот на месте.

task main() {

nMotorEncoder[motorB]=0; // Инициализация энкодера motor[motorB] = 100; motor[motorC] = -100;

// Пустой цикл ожидания показаний энкодера while(nMotorEncoder[motorB]<250); motor[motorB] = 0; motor[motorC] = 0;

}

Движение вдоль линии

Один датчик

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

Системы управления с обратной связью  

Рис. 8.32. Варианты расположения датчика освещенности относительно ведущих колес.

Задача такова: двигаться вдоль окружности по границе черного и белого. Решается элементарно применением релейного (или пропорционального) регулятора, который рассмотрен в главе «Алгоритмы управления». Только алгоритм будет записан не в виде ветвления, а с использованием блоков «Жди темнее» и «Жди светлее». Базовая конструкиця приведена на рис. 8.33—8.35, а простейшая программа для начинающих — на рис. 8.36. Без модификаторов предполагается, что датчик освещенности подключен к первому порту, а на моторы подается максимальная мощность.

Системы управления с обратной связью  

Рис. 8.33. Крепление датчика освещенности к трехколесной тележке.

Системы управления с обратной связью  

Рис. 8.34. Ось для регулировки высоты датчика может быть любой длины.

Системы управления с обратной связью  

Рис. 8.35. Высота датчика над поверхностью поля — от 5 до 10 мм.

Системы управления с обратной связью  

Рис. 8.36. Алгоритм движения по линии с одним датчиком освещенности.

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

Возможные проблемы

Перечислим трудности, которые могут возникнуть:

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

— робот проскакивает линию, не успевая среагировать. Следует понизить мощность моторов;

— робот реагирует на мелкие помехи на белом, не доезжая до черного. Надо увеличить порог чувствительности датчика (например, не на 5, а на 8 пунктов). Вообще говоря, это число можно рассчитать. Для этого следует снять показания датчика на белом, затем на черном, вычесть одно из другого и поделить пополам. Например, (56 – 40) / 2 = 8.

Усовершенствованная программа показана на рис. 8.37.

Системы управления с обратной связью  

Рис. 8.37. Алгоритм движения по линии с одним датчиком освещенности: понижена скорость, увеличена разность между черным и белым.

Более устойчиво алгоритм работает, если использовать моторы с управлением скоростью –100…100. В этом случае есть возможность отрегулировать плавность поворота в соответствии с кривизной линии

(рис. 8.38).

Системы управления с обратной связью  

Рис. 8.38. Алгоритм движения по линии с одним датчиком освещенности: улучшено управление моторами.

В этом алгоритме притормаживающие моторы на повороте не останавливаются полностью, а лишь понижают скорость до 20 пунктов. Это делает поворот более плавным, но может привести и к потере линии на резком повороте. Поэтому числа 80 и 20 поставлены условно, их стоит подобрать самостоятельно. 

П-регулятор

И, наконец, для сравнения надо посмотреть, как будет работать П-регулятор для одного датчика. Этот пример уже приводился в главе 7. Но его стоит повторить с некоторыми дополнениями (рис. 8.39).

Системы управления с обратной связью  

Рис. 8.39. Алгоритм движения по линии с одним датчиком освещенности на пропорциональном регуляторе.

Число 48, использованное в формуле управления u, — это среднее арифметическое показаний датчика освещенности на черном и на белом, например (40 56) / 2 = 48. Однако показания датчиков часто меняются по разным причинам: другая поверхность, изменение общей освещенности в помещении, небольшая модификация конструкции и т.п. Поэтому имеет смысл научить робота самостоятельно вычислять среднее арифметическое, т. е. значение границы белого и черного.

Есть несколько способов выполнить калибровку датчика. В простейшем случае вместо вычисления среднего арифметического просто понижается значение белого. Смысл способа в том, что робот снимает показания на белом, вычитает из него некоторое предполагаемое значение и полученное число считает границей белого и черного. Например, 56 – 7 = 49 можно считать значением серого (рис. 8.40).

Системы управления с обратной связью  

Рис. 8.40. Алгоритм движения по линии с одним датчиком освещенности на пропорциональном регуляторе с предварительной калибровкой (определением значения серого).

task main() { int u, v=50; float k=2; int red=SensorValue[S1]-7; while(true) {

u=k*(SensorValue[s1]-red); motor[motorB]=v u; motor[motorC]=v-u; wait1Msec(1);

}

}

По умолчанию значение освещенности с датчика на порту 1 считывается в красный контейнер, после чего оно уменьшается на число 7, и в формуле управления u используется уже измененное значение красного контейнера red. Если указывать все модификаторы, программа будет выглядеть так, как показано на рис. 8.41.

Системы управления с обратной связью  

Рис. 8.41. Алгоритм движения по линии с одним датчиком освещенности на пропорциональном регуляторе — с модификаторами.

Надо иметь ввиду, что такой способ калибровки не учитывает все возможные варианты, а только экономит время на программирование и отладку. Если же времени достаточно, есть другой способ, при котором действительно производится расчет среднего арифметического показаний датчика освещенности на черном и на белом (рис. 8.42). 

Системы управления с обратной связью  

Рис. 8.42. Алгоритм движения по линии с одним датчиком освещенности на пропорциональном регуляторе с расчетом значения серого.

task main() { int u, v=50; float k=2; int c4=SensorValue[S1]; PlaySound(soundBeepBeep); wait1Msec(2000); int c5=SensorValue[S1]; PlaySound(soundBeepBeep); int grey=(c4 c5)/2; while(true) {

u=k*(SensorValue[S1]-grey); motor[motorB]=v u; motor[motorC]=v-u; wait1Msec(1);

}

}

Предложенный алгоритм обладает некоторым неудобством: при запуске потребуется быть внимательным и не пропустить звукового сигнала, после которого робота надо переместить так, чтобы датчик освещенности оказался над белым полем. Понятно, что в начале следует поместить робота точно над черной линией. В контейнере с номером 4 (обозначается c4) будет сохранено значение черного, в контейнере с номером 5 (c5) — значение белого. В переменную grey помещается значение серого, которое используется в регуляторе. Сразу после второго звукового сигнала робот начнет движение.

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

Рассмотрим простейший пример с дополнительным датчиком касания, подсоединенным ко второму порту. Запустить программу имеет смысл, аккуратно установив тележку датчиком освещенности над черной линией (рис. 8.43).

Системы управления с обратной связью  

Рис. 8.43. Калибровка датчика освещенности с ожиданием касания.

task main() { int u, v=50; float k=2; int c4=SensorValue[S1]; PlaySound(soundBeepBeep);

while(SensorValue[S2]==0); // Жди, пока не нажато wait1Msec(100);        // Защита от залипаний while(SensorValue[S2]==1); // Жди, пока нажато wait1Msec(100); int c5=SensorValue[S1]; PlaySound(soundBeepBeep); int grey=(c4 c5)/2; while(SensorValue[S2]==0); wait1Msec(100); while(SensorValue[S2]==1); while(true)

{

u=k*(SensorValue[S1]-grey); motor[motorB]=v u; motor[motorC]=v-u; wait1Msec(1);

}

}

После первого звукового сигнала нужно переставить тележку так, чтобы датчик освещенности оказался над белым. После второго сигнала подготовиться к старту (датчик освещенности на границе между черным и белым) и по нажатию кнопки стартовать.

Рефераты:  Правовые аспекты борьбы с терроризмом . Реферат. Военная кафедра. 2010-09-30

Аналогичный опыт можно провести, используя датчик расстояния вместо датчика нажатия. Преимущество здесь в том, что старт робота будет осуществляться бесконтактно. Это поможет стартовать в точно выбранном положении. Только надо быть внимательным и несвоевременно не провести рукой возле датчика расстояния (рис. 8.44).

Системы управления с обратной связью  

Рис. 8.44. Калибровка датчика освещенности с ожиданием объекта (руки).

В примере использованы именованные контейнеры (black и white), которые по сути являются переменными, как в обычном языке программирования. Обратите внимание, что звуковой сигнал между двумя ожиданиями изменения расстояния способствует тому, чтобы робот не среагировал дважды подряд на одно приближение руки.

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

Поле для следования по линии

Более интересную траекторию, чем окружность, стоит сделать самостоятельно на светлой поверхности достаточно большой площади с помощью той же черной изоленты. В качестве поверхности подойдет лист фанеры или оргалита, обратная сторона листа линолеума, белая клеенка и многое другое. Размеры поля желательно делать не меньше, чем 100 · 150 см. При разметке траектории следует учесть отступ от линии до края поля не менее 20 см, чтобы колеса робота не съезжали с трассы во время движения. 

Имея определенный навык, можно наклеить изоленту так, что получится замкнутая кривая. Если не получается с одним куском изоленты, смело пользуйтесь ножницами, чтобы изгибы с малым радиусом кривизны составить из нескольких кусочков. Для начала не стоит рисовать слишком резких поворотов. Линию можно составить как из одной, так и из двух и даже трех полос изоленты. Тогда роботу будет легче ориентироваться и не съехать с курса. Помимо изоленты может быть использована матовая черная самоклеющаяся пленка. И, наконец, оптимальное решение печать графического файла на баннерной ткани. Стоимость такой печати обычно не превосходит 400 руб. за 1 м2. Небольшое поле для движения по линии приведено на рис. 8.45.

Системы управления с обратной связью  

Рис. 8.45. Пример самодельного поля для движения по линии.

На рис. 8.46 приведен пример траектории для состязаний по правилам Открытого турнира на кубок Политехнического музея (г. Москва). Ширина линии составляет 5 см, а минимальный радиус кривизны 30 см. Актуальные регламенты состязаний размещены на сайте http://railab.ru. Регламент состязаний «Гонки по линии» и само поле в векторном формате можно найти на сайте http://myrobot.ru[11].

Системы управления с обратной связью  

Рис. 8.46. Поле для состязаний «Гонки по линии».

Путешествие по комнате

Маленький исследователь

Естественно, нормальная среда обитания для робота, построенного из домашнего конструктора, — это комната с мебелью. И для начала

Системы управления с обратной связью неплохо было бы научиться путешествовать по ней, по возможности не натыкаясь на предметы и не застревая.

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

препятствие или, наоборот,   что-то серьезное не будет за- Рис. 8.78. Маленький исследователь из мечено.     набора 9797 с ультразвуковым датчиком.

Более простой вариант конструкции (рис. 8.79) можно построить на основе тележки, которая рассматривалась в главе 3. Программа очень похожа алгоритм на путешествия в круге. Меняется лишь датчик (рис. 8.80).

Системы управления с обратной связью

Системы управления с обратной связью  

Рис. 8.79. Датчик, прикрепленный к корпусу тележки, должен смотреть строго горизонтально.

 250

Системы управления с обратной связью  

Рис. 8.80. Алгоритм путешествия по комнате.

Можно сделать несколько короче, если заменить отъезд назад с поворотом на месте одним действием: плавным поворотом задним ходом

(рис. 8.81). 

Системы управления с обратной связью  

Рис. 8.81. Алгоритм путешествия по комнате с поворотом задним ходом.

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

Защита от застреваний

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

Не увидев препятствие (тапок или ножку стула), робот может застрять и будет бесконечно пытаться продолжать движение вперед. Однако если поразмыслить, можно прийти к выводу, что в комнате движение не должно быть бесконечным. Скажем, от одной стенки до другой робот может доехать за 10 с. Если за это время он не увидит ни одного препятствия, можно с уверенностью утверждать, что произошло застревание и надо предпринять экстренные меры. Что же делать? Ничего особенного. Просто отъехать назад и развернуться. Поможет в этом «сторожевой таймер» (рис. 8.82). Такие устройства применяются в микроконтроллерах и защищают их от зависаний.

                                                                                                           251

Системы управления с обратной связью  

Рис. 8.82. Если на сторожевом таймере «натикает» 10 с, включается защита от застреваний.

Можно заметить в нашей программе повторяющиеся группы блоков. Их стоит объединить в подпрограмму, которая будет осуществлять отъезд назад с разворотом (рис. 8.83). Таким образом, подпрограмма отъезда будет вызываться в двух случаях: 1) при наличии препятствия, 2) при срабатывании сторожевого таймера.

Системы управления с обратной связью  

Рис. 8.83. Защита от застреваний с использованием подпрограмм.

Но в этой программе есть один существенный недостаток. Из двух параллельных задач происходит обращение к одним и тем же моторам. Если эти обращения совпадут во времени, может возникнуть непредвиденное поведение робота. В чем-то это даже интересно. Но наиболее корректная программа описана в следующем разделе.

252

Объезд предметов

Новая конструкция

может увидеть краем глаза. Учитывая это свойство, разместим датчик расстояния не перпендикулярно курсу движения, а под острым углом (рис. Рис. 8.89. Датчик расстояния устанавливается под острым углом к направлению движения.

Системы управления с обратной связью Первые шаги к объезду предметов сделаны в главе «Алгоритмы управления». Движение вдоль стены с небольшими отклонениями возможно с помощью ПД-регулятора. Однако описанный робот сможет объезжать стены только при малых отклонениях от прямой линии. При резких изгибах робот может потерять контакт со стеной и начать крутиться на месте. Эту проблему можно отчасти разрешить конструктивно.

Рассмотрим вариант, при котором на пути движения будут возникать серьезные повороты, вплоть до прямых углов. Потребуется внести модификации и в конструкцию, и в программу.

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

(рис. 8.89). Это напоминает периферийное зрение человека: кое-что он

8.90 8.91). Так можно «убить сразу двух зайцев». Во-первых, робот будет видеть препятствия спереди; во-вторых, более стабильно будет придерживаться курса вдоль стены, постоянно находясь на грани видимости. Таким образом без добавления новых устройств можно более эффективно использовать возможности дальномера.

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

256

Системы управления с обратной связью

Системы управления с обратной связью  

Рис. 8.90. Крепление размещается на левой стороне. Как и в первой конструкции, датчик располагается вертикально.

Системы управления с обратной связью  

Рис. 8.91. Увеличенное за счет корпуса робота расстояние до стены способствует расширению области обзора.

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

Поворот за угол

Следующим шагом необходимо ограничить реакцию робота на «бесконечность». Как известно, когда в поле видимости нет объекта, показания датчика расстояния NXT равны 250 или 255 см. Если это число попадает на пропорциональный регулятор, робот начинает кру-

257

титься на месте. А в ситуации, когда роботу следует завернуть за угол, именно это и произойдет. 

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

Рассмотрим пример поворота направо «за угол» (рис. 8.92). Если робот движется на расстоянии L от стены, то и поворот, очевидно, он будет выполнять по окружности с радиусом L

Системы управления с обратной связью  

Рис. 8.92. Выполнение поворота при потере контакта со стенкой.

Нетрудно рассчитать, каким должно быть отношение скоростей колес, чтобы радиус поворота оказался равен L. Для этого достаточно измерить расстояние между передними колесами. Пусть в нашем роботе оно будет равно k = 16 см, а его половина d = 16 / 2 = 8 см. Тогда левое и правое колеса движутся по окружностям радиусов, соответственно, R1 = L d и R2 = L d. Пройденные ими пути за единицу времени должны быть пропорциональны радиусам, следовательно, скорости точек крепления колес v1 и v2 связаны следующим отношением:

v1 = R1 . v2 R2

Выражая скорости перемещения колес через базовую скорость v и неизвестную x, а радиусы через L, получаем следующее: v x L d

= , vL xLvdxd =vL vdxLxd , 2xL=2vd , v x Ld x = vd , v1 = v vd = v(1 d ), v2 = v vd = v(1- d).

                L             L         L               L         L

258

Линейная скорость v пропорциональнаугловой скорости колеса ω, которая в свою очередь пропорциональна мощности, подаваемой на моторы (в режиме торможения). Мы привели закон управления к стандартному виду, что позволяет задать управляющее воздействие на время поворота за угол. Таким образом, получаем расчет для управления моторами нашего робота.

 u=v*8/L; motor[motorB]=v u; motor[motorC]=v-u;

Когда расстояние до стены становится больше 2L (используем такой порог видимости), т. е. открывается поворот за угол, управляющее воздействие начинает вычисляться по приведенным формулам

(рис. 8.93). 

Системы управления с обратной связью  

Рис. 8.93. Объезд предметов на заданном расстоянии по правилу правой руки.

task main() {

float u, k1=2, k2=10; int v=50, d=8, Sold, L, Snew;

Sold=L=SensorValue[S1]; // Запомнили начальное состояние while(true) {

Snew=SensorValue[S1]; // Получили показания датчика if (Snew>L*2) {  u=v*d/L;  Sold=L*2; } else {

u = k1*(Snew-L) k2*(Snew-Sold);

Sold=Snew;

} motor[motorB]=v u; motor[motorC]=v-u; wait1Msec(1); }

}

259

task main() {

float u, k1=2, k2=10, a=0.2, Snew;   int v=50, d=8, Sold, L; Snew=Sold=L=SensorValue[S1]; while(true)

{

Snew=(1-a)*Snew a*SensorValue[S1]; if (Snew>L*2) {  u=v*d/L;  Sold=L*2; } else {

u = k1*(Snew-L) k2*(Snew-Sold);

Sold=Snew;

}   motor[motorB]=v u; motor[motorC]=v-u; wait1Msec(1);

}

}

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

Роботы-барабанщики

Предыстория

Идея построить робота-барабанщика из Lego появилась в 2009 году на кружке робототехники физико-математического лицея № 239 г. Санкт-Петербурга. Ребятам она понравилась и вскоре было создано несколько моделей, которые запоминали и воспроизводили ритм, импровизировали, управлялись удаленно, играли заранее записанные мелодии и даже аккомпанировали компьютеру в проигрывании midiфайлов. Через 10 месяцев робот-барабанщик получил бронзовую медаль на Всемирной олимпиаде роботов в Южной Корее (фотография награждения команды лицея «Старый барабанщик» на задней стороне обложки). Впоследствии он много путешествовал по России от Москвы до Сибири, выступая на фестивалях, выставках и форумах.

Системы управления с обратной связью

Системы управления с обратной связью  

Рис. 8.96. Первые версии робота-барабанщика с игрушечным и пионерским барабанами.

Первые версии робота были сделаны целиком из деталей Lego и программировались через Robolab. Основой служил игрушечный барабан (рис. 8.96). Андроид-барабанщик был построен из пластиковых водопроводных труб (рис. 8.97), перед ним стояла целая барабанная установка, а программировался он на языках RobotC и Java.

Системы управления с обратной связью  

Рис. 8.97. Андроид-барабанщик.

Алгоритмы управления роботами-барабанщиками основаны на П-регуляторах, что дает возможность повысить точность позиционирования барабанных палочек. Это описано далее.

Калибровка и удар

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

Системы управления с обратной связью

Рис. 8.98. Движения «барабанной палочки».

Робот опускает «палочку» на низкой скорости в течение достаточно большого промежутка времени, около 2 с (рис. 8.99). Поскольку скорость и мощность моторов взаимосвязаны, то, упершись в поверхность, палочка не причинит роботу никакого вреда и просто остановится. Полученное положение мотора запоминается как нулевое. Калибровка произведена. 

Системы управления с обратной связью  

Рис. 8.99. Простейшая импровизация одной палочкой.

Удар будет представлять из себя поднятие палочки в абсолютное положение под углом 15 градусов (замах) и опускание в нулевое положение (удар). Однако, учитывая люфт моторов Lego, а также инерцию их движения, следует прекращать опускание не в нулевом положении, а значительно раньше, например при достижении угла 10 градусов. Это позволит сократить длительность соприкосновения с поверхностью и воспользоваться энергией отскока, что значительно ускорит движение палочек. Робот получит возможность воспроизводить довольно быстрый ритм. 

Управление с помощью датчика

Заменив ожидание таймера ожиданием нажатия датчика касания, можно получить управляемую игрушку (рис. 8.100). Человек будет нажимать на кнопку, а робот послушно выполнять удар.

Системы управления с обратной связью  

Рис. 8.100. Управление палочкой с помощью датчика касания.

В этом алгоритме стоит естественная защита от слишком частого нажимания датчика: робот будет барабанить с той скоростью, с которой успевает (рис. 8.101). 

Системы управления с обратной связью  

Рис. 8.101. Датчики можно прикрепить на робота или вынести отдельно.

Чтобы настроить управление двумя палочками, потребуется поместить калибровку второго мотора и удар в параллельный процесс. Вытянем алгоритм в цепочку и сдублируем его. Единственное незначительное изменение — это изменение типа и мощности управления моторами при калибровке. Поскольку уже два двигателя будут прижимать палочки к полу, то во избежание поднятия всего робота стоит понизить их мощность до 5—10 %.

Дублируя часть алгоритма, постарайтесь внимательно заменить все команды мотору A на команды мотору B (рис. 8.102). 

Системы управления с обратной связью  

Рис. 8.102. Алгоритм управления палочками с помощью двух датчиков.

Системы управления с обратной связью

Системы управления с обратной связью  

Рис. 8.103. Конструкции для управления роботом-барабанщиком: слева — на датчиках касания, справа — на гироскопических датчиках.

Ребята из команды «Старый барабанщик» сконструировали специальную перчатку с закрепленным на ней двумя датчиками касания (рис. 8.103, слева). Быть может, и читатель придумает нечто подобное. А при наличии пары гироскопических датчиков не составит труда настроить управление роботом с помощью настоящих барабанных  

(рис. 8.103, справа).

Создаем свой ритм

Вернемся к одномоторному барабанщику. Преобразуем удар в процедуру, которая вызывается через определенные промежутки времени. Задавая длительность этих промежутков, создадим ритмический рисунок (рис. 8.104). Лучше будет использовать длительности, кратные 0.2 секунды: 20 сотых, 40 сотых, 60 сотых и т. д. Если задать чересчур малую длительность, то либо робот не успеет произвести удар, либо удар будет слишком тихим. Эту особенность можно использовать для регулирования громкости.

Очевидно, что для повышения точности процесса надо поднимать палочку не до удара, а сразу после него.

Системы управления с обратной связью  

Рис. 8.104. Создаем собственный ритимический рисунок.

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

Системы управления с обратной связью  

Рис. 8.105. Ритмический рисунок соответствует реальному времени.

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

Лабиринт

Виртуальные исполнители

Перед решением задачи прохождения лабиринта стоит познакомиться со средой «Исполнители»[12], созданной проф. К. Ю. Поляковым из Санкт-Петербургского Государственного морского технического университета. Исполнитель робот, реализованный в ней, очень подходит для начального освоения алгоритмики. Среда полностью русифицирована и содержит Си-ориентированный язык программирования с русской и английской лексикой. Задача поиска выхода из лабиринта решается в этой среде различными способами. Наиболее интересный набор задач[13] для робота разработан учителем информатики Д. М. Ушаковым из физико-математического лицея № 239 Центральнго района Санкт-Петербурга. Среда «Исполнители» особенно актуальна для желающих в будущем освоить язык RobotC.

Рефераты:  Курсовая работа: Основные особенности робототехнических систем -

Также можно порекомендовать систему программирования «КуМир»[14], в которой есть исполнитель робот, способный найти выход из лабиринта. В системе «КуМир» используется школьный алгоритмический язык с русской лексикой, ориентированный на язык Паскаль. Система «КуМир» разработана в Научно-исследовательском институте системных исследований (НИИСИ) РАН по заказу Российской Академии Наук.

Обе среды распространяются бесплатно.

Полигон

На первый взгляд, построение поля лабиринта может вызвать затруднения, однако вложенные усилия вполне окупаются результатом. Поиск выхода из лабиринта является классической задачей, которую решают не только робототехники, но и программисты. Одно из самых ярких соревнований — состязания роботов Micromouse — проводится среди студентов. В нем участвуют разные роботы, совсем не из Lego, оборудованные большим числом датчиков и сложными алгоритмами. И размеры лабиринта составляют 16 · 16 квадратных ячеек.

Наш лабиринт может быть поменьше, например, размером 5 · 5 ячеек, а размер ячейки специально подобран для Lego-роботов: около 30 · 30 см. С учетом толщины стенок, как правило, сторона квадрата ячейки колеблется в диапазоне от 28 до 30 см. Число ячеек и структура лабиринта могут быть любыми. Распространена столешница 150 · 150 см, что и соответствует размеру 5 · 5 ячеек. Обеспечим ее съемными внутренними стенками. Стенки лабиринта желательно сделать повыше, до 16 см, однако подойдут и стандартные, высотой 10 см (рис. 8.110). 

Итак, особенность лабиринта в том, что его можно в любой момент изменить, сделав задачу более интересной.

Системы управления с обратной связьюСистемы управления с обратной связью  

Рис. 8.110. Примеры лабиринтов.

Робот для лабиринта

Каковы характеристики робота? Поскольку приходится иметь дело с замкнутым пространством, робот не должен быть быстрым. В «прямоугольном мире» поворот на 90 градусов должен осуществляться с высокой точностью, как и проезд одной ячейки вперед. Соприкосновение со стеной для робота нежелательно, но не должно вызывать немедленного выхода его из строя. Кроме того, стоит предусмотреть способность двигаться вдоль стены при непрерывном касании. Датчики ультразвука, которые помогут определять расстояние до стен, следует располагать не на самом краю корпуса, чтобы соблюсти минимальное расстояние видимости ультразвукового датчика 5 см.

Исходя из перечисленных условий, оптимальным будет выбор конструкции компактного гусеничного робота. Построить его можно на основе одного конструктора 8547 или конструктора 9797 с добавлением двух гусениц из ресурсного набора 9695. Модель подобного робота предлагается в наборе 8547 в качестве одного из примеров. В нашей версии постараемся сделать робота более компактным за счет извлечения третьего мотора (рис. 8.111—8.117). Самую важную часть — гусеницы — следует закрепить наиболее прочно, по возможности с предельным натяжением.

Системы управления с обратной связью

Системы управления с обратной связью  

Рис. 8.111. Крепление моторов с помощью 11-модульной балки и угловых соединительных штифтов.

Системы управления с обратной связью  

Рис. 8.112. Дополнительные уголки размером 3 · 5 для крепления блока NXT.

Системы управления с обратной связьюСистемы управления с обратной связью  

Рис. 8.113. Для крепления колесных дисков используются 8-модульные оси в задней части робота.

Системы управления с обратной связью

Системы управления с обратной связью  

Рис. 8.114. Вертикальные балки для крепления NXT спереди могут быть любой длины. В оранжевые диски моторов вставляются 10-модульные оси.

Системы управления с обратной связью  

Рис. 8.115. Колесные диски прижимаются к желтым втулкам.

Системы управления с обратной связью  

Рис. 8.116. Гусеницы можно закрепить 16-модульными балками с выступами.

Системы управления с обратной связью  

Рис. 8.117. Первая версия тележки готова.

Направление движения робота — вперед оранжевыми дисками моторов, подключенный на порты B (левый) и C (правый). Протестируйте работоспособность модели на примере программ из NXT Program.

Известный лабиринт

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

Моторы B, C вперед

Жди 1000 на энкодере B

Моторы стоп

Системы управления с обратной связью  

Рис. 8.118. Реализация трех базовых команд для лабиринта на языке Robolab.

Конструкция гусеничного робота такова, что проезд ячейки длиной 30 см требует поворота моторов примерно на 1000 градусов. А поворот на 90 градусов на месте выполяняется при повороте одного мотора на 500 градусов вперед, а другого на –500 градусов назад.

Пример на языке Robolab показывает прохождение первых трех ячеек лабиринта (рис. 8.119). Программа составлена из трех блоков команд, повторяющихся в разном порядке.

Системы управления с обратной связью  

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

Первые запуски, скорее всего, приведут к тому, что робот начнет зацепляться за неровности в стенах лабиринта своими бортами. Для защиты от зацепов существует элементарное решение, уже использованное в шагающем роботе для NXT 2.0. Это горизонтальные свободно вращающиеся колесики (рис. 8.120).

Системы управления с обратной связью

Системы управления с обратной связью  

Рис. 8.120. Горизонтальные колесики устанавливаются на гладкие штифты или оси в круглые отверстия на изогнутых балках.

После установки колесиков в передней части робота можно добиться выравнивания при движении вдоль стен лабиринта даже при недостаточно точных поворотах. 

Возвращаясь к программированию, придется признать, что действуя по предложенному выше алгоритму, можно составить программу прохождения лабиринта размером 5 · 5, которая уже не уместится в один экран Robolab. Копирование блоков сильно удлиняет программу, что увеличивает вероятность возикновения ошибок, а при смене структуры лабиринта делает редактирование затруднительным. Опытный программист сразу догадается, что можно использовать подпрограммы! 

Для ясности управления следует представить робота как классического исполнителя с тремя базовыми командами: «Вперед», «Налево», «Направо». Каждая из них является высокоуровневой и с точки зрения реального исполнителя — довольно сложной. Команда «Вперед» — это проезд одной клетки лабиринта с последующей остановкой. Команды «Налево» и «Направо» — это повороты на 90 градусов с максимально возможной точностью. Недостатки исполнения команд, связанные с люфтом и трением, придется компенсировать конструктивно.

По принципу нумерования верхних кнопок контроллера NXT три процедуры получат соответствующие номера: 3 — «Вперед», 2 — «Налево», 1 — «Направо». В процедуры стоит включить необязательные, но полезные действия, которые позволят лучше контролировать выполнение отдельных команд: остановки, задержки и звуковые сигналы.

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

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

Системы управления с обратной связью  

Рис. 8.121. Три базовых действия в процедурах и начало программы прохождения лабиринта.

§

{

motor[motorB]=-100; motor[motorC]=100; nMotorEncoder[motorC]=0; while(nMotorEncoder[motorC]<500); motor[motorB]=motor[motorC]=0; PlaySound(soundUpwardTones); wait1Msec(1000);

}

Task main() // Основной алгоритм

{ while(true) {

if(SensorValue[S1]>30) { // Если справа проем  right();  forward(); } else

if(SensorValue[S2]>30) // Если спереди свободно    forward();    else    left();

}

}

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

Удаленное управление

Передача данных

Контроллер NXT оснащен устройством беспроводной передачи данных Bluetooth второго класса. Это значит, что бесперебойная связь гарантирована на расстоянии до 10 м. Но качество и скорость обмена данными во многом будут зависеть от команд и алгоритмов, которые используются при программировании. Соединить можно как два контроллера между собой, так и контролер с компьютером или мобильным телефоном, оснащенным Bluetooth. Существует специальное программное обеспечение, которое с компьютера или мобильного телефона позволяет передавать на NXT команды управления подключенными к нему устройствами: моторами, датчиками и пр. В этом случае нет необходимости запускать какую-либо программу на NXT-приемнике, достаточно установить соединение. Если же необходимо передавать данные, то на приемнике и получателе запускаются разные программы, которые отправляют и обрабатывают полученные данные.

Обмен информацией следует разделить на четыре составляющих:

1) установка соединения,

2) передача данных или управляющих команд, 3) прием данных или выполнение управляющих команд, 4) завершение соединения.

Bluetooth-устройство, которое инициирует подключение, называется ведущим (master). Устройство, которое принимает подключение, называется ведомым (slave). К одному «мастеру» может быть подключены до трех ведомых NXT, по одному на каждый виртуальный порт (соответственно на 1-й, 2-й и 3-й). 

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

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

1. Включить два NXT и убедиться, что у них уникальные имена.

2. На обоих контроллерах включить Bluetooth, вследствие чего в левом верхнем углу экрана должен появиться фирменный значок.

3. На ведомом контроллере включить опцию «Виден всем» (Visibility → Visible). 

4. На ведущем контроллере включить режим поиска соседних устройств (Search).

5. Из списка найденных устройств выбрать ведомый и подключиться к нему.

6. При первом подключении потребуется ввести числовой код (по умолчанию «1234») и нажать «галочку». При последующих подключениях нужный контроллер можно будет найти по инмени в разделе My Contacts.

7. Выбрать любой порт: 1, 2 или 3.

8. При успешном соединении ведомый издаст звуковой сигнал (если включен звук) и на экране каждого из контроллеров рядом со значком Bluetooth появится ромбик «<>». Если подключения нет, то останется значок «<», т. е. левая половинка ромбика.

282

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

Со времен инфракрасной связи в RCX по «почте» передавался 1 байт, а в NXT допускаются большие числа: от –215 до 215 – 1, т.е. в диапазоне –32768…32767. Ноль в «почтовом ящике» означает, что ничего не было принято, поэтому отправлять его не имеет смысла.

На NXT-приемник и NXT-передатчик загружаются разные программы (рис. 8.125).

Системы управления с обратной связью  

Рис. 8.125. Передача числа 5 по нажатию датчика (слева) и ответный звуковой сигнал (справа).

В общем случае перед приемом данных необходимо изначально инициализировать (т. е. обнулить) почтовый ящик, чтобы очистить его от писем, которые могли остаться от предыдущих сеансов. Команда «Жди письма» (Wait for mail) сама обнуляет его и ждет очередного письма с заданным значением. Если конкретное число не задано, ожидается письмо с ненулевым значением.

Теперь рассмотрим пример с передачей двух различных чисел 

(рис. 8.126).

Системы управления с обратной связью  

Рис. 8.126. Передача чисел 4 или 5 по нажатию соответствующего датчика и ответные звуковые сигналы.

На передатчике две параллельные задачи осуществляют отправку значений 4 или 5 в зависимости от того, какой из двух датчиков касания был нажат. Для повторного срабатывания после нажатия требуется отпустить датчик. На приемнике также две параллельные задачи «заглядывают» в почтовый ящик и вызывают соответствующий звуковой сигнал. При этом вызовы сигналов могут «наслаиваться» друг на друга, поскольку письма с разными значениями могут приходить довольно часто.

Передача данных является довольно медленной операцией, на гарантированную доставку одного сообщения тратится 0.03 — 0.05 с. Можно, конечно, отправлять сообщения слишком часто, не заботясь о том, будут ли они приняты. В некоторых случаях работает и такой подход. Мы будем стремиться к устранению потерь пакетов при передаче. В двух приведенных выше примерах естественную задержку перед отправкой письма создает сам человек, нажимая на датчик с некоторыми перерывами. 

Теперь рассмотрим пример удаленного управления мотором, в котором задержки задаются программно (рис. 8.127). Чтобы увидеть его в действии, необходимо на приемник и передатчик прикрепить по мотору, подключив каждый к порту A (8.128).

Системы управления с обратной связью  

Рис. 8.127. Передача значения энкодера и управление скоростью удаленного мотора.

Для передачи значения энкодера мотора A используется соответствующий модификатор (Value of Encoder A из палитры NXT Commands), значение которого отправляется в виде письма с задержкой 0.05 с на доставку пакета. На приемнике после обнуления почты используется модификатор (Value of Mail из палитры Modifiers), который несет в себе значение полученного письма (т. е. содержимое почтового ящика). Это значение подается в качестве скорости управляемого мотора A.

Системы управления с обратной связью  

Рис. 8.128. Приемник вращает колесо со скоростью, заданной на передатчике поворотом балки.

284

Системы управления с обратной связью  

Рис. 8.129. Отображение принимаемого значения: слева — в виде числа, справа — в виде диаграммы.

Усовершенствуем приемник, добавив отображение принимаемого значения на экране в виде числа или даже диаграммы (рис. 8.130).

На рис. 8.129 слева показано, что одновременно с управлением скоростью мотора на экране приемника отображается принимаемое значение. Задержка отсутствует, поскольку вывод на экран сам по себе является довольно существенной задержкой.

На рис. 8.129 справа принимаемое значение в нижней части экрана отображается в виде изменяющегося прямоугольника, а в центральной — в виде числа. Поскольку максимальная ширина прямоугольника на экране 100 точек, что в 2 раза меньше диапазона скоростей мотора    –100…100, то полученное по почте значение m смещается в неотрицательный диапазон и сокращается вдвое. Координата X одной пары вершин отображаемого прямоугольника находится в позиции 50 (визуальная точка отсчета), а координата противоположной пары (значение красного контейнера) колеблется в диапазоне 0…100. 

Системы управления с обратной связью

Системы управления с обратной связьюСистемы управления с обратной связью  

Рис. 8.130. Диаграмма на экране NXT.

Читатель может добавить в программу управление скоростью мотора, показанное на рис. 8.129, самостоятельно. 

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

Системы управления с обратной связью  

Рис. 8.131. Управление положением удаленного мотора.

§

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

Алгоритм управления следует Рис. 8.143. Датчик касания на несколько изменить. До сих пор мы джойстике.

тратили на каждый двигатель по 8 бит информации, что при имеющейся точности движений является избыточным. Займем 1 бит для передачи показания датчика касания, у которого вариантов всего два: 0 (отпущен) и 1 (нажат). Заменив младший бит четности, мы потеряем в точности управления в 2 раза, что будет практически незаметно (рис. 8.144).

Закодированное значение

644в диапазоне44740465535448

00110100142431001001142431{

старший байт, 7бит, S1 значение e1 128 значение

                                         в диапазоне 255         (e1 128) / 2 2

Рис. 8.144. Замена бита четности на показания датчика касания S1.

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

L = (e1 128) ∙ 256 (e2 128) / 2 ∙ 2 S1 – 32 768.

На принимающей стороне несколько изменится анализ младшего байта, а старшего останется прежним:

292

v = (m 32 768) / 256 – 128, u = (m 32 768) % 256 / 2 ∙ 2 – 128, k = (m 32 768) % 2, v = v ∙ (k 1), u = u ∙ (2 – k) / 2.

В переменную k будет записано переданное значение S1. Используя ее, смоделируем режим «турбо», т. е. увеличение скорости v и понижение чувствительности к управлению u (рис. 8.145). Выбрав курс робота в обычном режиме, можно включить «турбо» нажатием кнопки, и робот выполнит рывок в нужном направлении.

Рефераты:  Исследование понятия и характеристик преступлений террористического характера в законодательстве российской Федерации – тема научной статьи по праву читайте бесплатно текст научно-исследовательской работы в электронной библиотеке КиберЛенинка

Системы управления с обратной связью  

Рис. 8.145. Режим «турбо» включается датчиком касания на передатчике.

Другой пример использования дополнительного бита — это нанесение удара по мячу с помощью третьего мотора. По правилам игры в управляемый футбол, которая с 2021 г. проводится на Математикомеханическом факультете Санкт-Петербургского государственного университета (СПбГУ), размер робота в момент удара по мячу не должен превышать цилиндра диаметром 22 см и высотой 22 см. 

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

293

Системы управления с обратной связью  

Рис. 8.146. Удар по мячу роботом с третьим мотором.

Для управления третьим мотором используется параллельная задача, вход в которую контролируется контейнером-семафором udar. На время выполнения удара семафор «запрещает» повторный вызов задачи и обеспечивает корректную работу программы. 

Пример робота с ударным механизмом изображен на рис. 8.147. Его разработал ученик физико-математического лицея № 239 Илья Балташов. Игра в футбол с такими роботами происходит в формате 3 · 3 или 5 · 5 на поле размером 4 · 6 м. В качестве покрытия используется ковролин. Мяч для гольфа оказался наиболее подходящим для такого размера роботов, хотя можно использовать и мячик из набора 9797.

Системы управления с обратной связью  

Рис. 8.147. Робот с ударным механизмом для игры в футбол.

Существует множество приложений для ноутбуков и мобильных телефонов, с помощью которых можно управлять таким роботом (например, nxtremote). Их преимущество — высокое быстродействие. Их недостаток — отсутствие возможности развития алгоритма. Если же составлять программу самостоятельно, то, используя методы кодирования, можно достичь интересных результатов во взаимодействии человека с роботом. 

294

ClearMessage(); // Может не работать в RobotC 3.0  temp = message;

}

if (message!=0)

{

k=message-1; // Сообщение приходит на 1 больше  v=messageParm[1]; u=messageParm[2];

motor[motorA]=v u;

motor[motorB]=v-u;  

nxtDisplayTextLine(0, «k=%d», k); nxtDisplayTextLine(1, «v=%d», v); nxtDisplayTextLine(2, «u=%d», u); wait1Msec(10);

}

}

}

В среде RobotC реализованы команды подключения к другому устройству в программном режиме, а также ряд других возможностей Bluetooth, позволяющих повысить стабильность работы. Примеры находятся в папке Sample ProgramsNXTBluetooth Communication.

Роботы-манипуляторы

Использование манипуляторов стало обыденным явлением еще в 20-м веке. На сегодняшний день ни одно крупное промышленное производство не обходится без них. Кроме того, манипуляторы устанавливают и на мобильных роботах, чтобы расширить возможности управления в труднодоступных для человека местах. При однообразных и монотонных действиях робот также может заменить человека, например раскладывать пирожные по коробочкам.

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

Стрела манипулятора

Для освоения управления манипулятором следует вернуться к контролю положения двигателя с помощью П-регулятора, которое описано в главе «Алгоритмы управления». Только конструкция будет несколько отличаться от описанной (рис. 8.148 8.149).

296

Системы управления с обратной связью  

Рис. 8.148. Крепление мотора к корпусу NXT горизонтально на уровне поверхности. Штифт-полуось вствляется в вал мотора снизу.

Системы управления с обратной связью  

Рис. 8.149. Первое колено манипулятора.

Стрела манипулятора расположена горизонтально. Алгоритм управления состоит из двух параллельных задач. В первой работает П-регулятор, который удерживает мотор в положении alpha. Во второй положение alpha изменяется со временем (рис. 8.150).

Системы управления с обратной связью  

Рис. 8.150. Управление горизонтальным положением стрелы манипулятора.

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

297

Манипулятор с захватом

Системы управления с обратной связью  

Рис. 8.151. Установка захвата на второй мотор.

Системы управления с обратной связью  

Рис. 8.152. Мотор с захватом закрепляется на диске первого мотора.

Программирование робота с двумя степенями свободы (рис. 8.151 8.152) осуществляется аналогично. Новая переменная beta будет определять положение второго мотора. Расширьте вторую задачу, подобрав подходящие значения для открывания и закрывания захвата (рис. 8.153). Не забывайте, что стартовое положение определяет все.

Системы управления с обратной связью  

Рис. 8.153. Заготовка для управления двумя моторами на основе П-регуляторов. Необходимо продолжить цикл в параллельной задаче.

298

Заключение

Если читатель добрался до Заключения, проделав все опыты, изложенные в этой книге, можно быть уверенным, что впереди у него множество собственных находок и изобретений. Мы коснулись лишь малой части замечательной науки, которая все больше становится современной реальностью. 

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

Ваши вопросы и предложения автору отправляйте по адресу robobook@mail.ru.

Литература

1. Ананьевский М. С., Болтунов Г. И., Зайцев Ю. Е., Матвеев А. С., Фрадков А. Л., Шиегин В. В. Санкт-Петербургские олимпиады по кибернетике. Под ред. Фрадкова А. Л., Ананьевского М. С. СПб.: Наука, 2006.

2. Boogaarts M., Torok R., Daudelin J., et al. The LEGO Mindstorms NXT Idea Book. San Francisco: No Starch Press, 2007.

3. Isogawa Y. LEGO Technic Tora no Maki, Version 1.00 Isogawa Studio,

Inc., 2007, //Электронный ресурс

[http://www.isogawastudio.co.jp/legostudio/toranomaki/en/].

4. Constructopedia NXT Kit 9797, Beta Version 2.1, Center for Engineering

Educational Outreach, Tufts University, 2008, //Электронный ресурс [http://www.legoengineering.com/library/doc_download/150-nxtconstructopedia-beta-21.html].

5. Kelly J. F. Lego Mindstorms NXT. The Mayan adventure. Apress, 2006.

6. Wang E. Engineering with LEGO Bricks and ROBOLAB. Third edition. College House Enterprises, LLC, 2007.

7. Perdue D. J. The Unofficial LEGO MINDSTORMS NXT Inventor’s Guide. San Francisco: No Starch Press, 2007.

8. Белиовская Л.Г., Белиовский А.Е. Программируем микрокомпьютер NXT в LabVIEW. М: ДМК Пресс, 2021.

9. Азимов А. Я, робот. Серия: Библиотека приключений. М: Эксмо, 2002.

Приложения

П.1. Названия деталей

Системы управления с обратной связьюСистемы управления с обратной связьюСистемы управления с обратной связьюСистемы управления с обратной связьюСистемы управления с обратной связью  

П.2. Правила состязаний

Регламент соревнований роботов «Кегельринг»[15]

(по версии Ассоциации спортивной робототехники)

10. Условия состязания:

 в наиболее короткое время робот, не выходя за пределы круга,

очерчивающего ринг, должен вытолкнуть расположенные в нем кегли;  на очистку ринга от кеглей дается максимум две минуты;  если робот полностью выйдет за линию круга более чем на 5 се-

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

Системы управления с обратной связью  

Рис. П.2.1. Поле для кегельринга.

11. Ринг:

 цвет ринга — светлый;  цвет ограничительной линии — черный;  диаметр ринга 1 м (белый круг);  ширина ограничительной линии 50 мм;

12. Кегли:

 кегли — жестяные цилиндры, изготовленые из пустых стандарт-

ных жестяных банок, используемых для напитков;

диаметр кегли 70 мм;  высота кегли 120 мм;  вес кегли — не более 50 г.

13. Робот:

 максимальная ширина робота 20 см, длина — 20 см;  высота и вес робота не ограничены;  робот должен быть автономным;

 во время соревнования размеры робота должны оставаться неиз-

менными и не должны выходить за пределы 20 · 20 см;  робот не должен иметь никаких приспособлений для выталкива-

ния кеглей (механических, пневматических, вибрационных, акустических и др.);

 робот должен выталкивать кегли только своим корпусом;  запрещено использование каких-либо клейких приспособлений на

корпусе робота для сбора кеглей.

14. Игра:

 робот помещается строго в центр ринга.  на ринге устанавливается восемь кеглей.

 кегли равномерно расставляются внутри окружности ринга. На каждую четверть круга должно приходиться не более двух кеглей. Кегли ставятся не ближе 12 и не далее 15 см от черной ограничительной линии. Перед началом игры участник состязания может поправить расположение кеглей. Окончательная расстановка кеглей принимается судьей соревнования;  главная цель робота состоит в том, чтобы вытолкнуть кегли за

пределы круга, ограниченного линией;  кегля считается вытолкнутой, если никакая ее часть не находится

внутри белого круга, ограниченного линией;  один раз покинувшая пределы ринга кегля считается вытолкнутой

и может быть снята с ринга в случае обратного закатывания;  робот должен быть включен или инициализирован вручную в на-

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

15. Правила отбора победителя:

 каждой команде дается не менее двух попыток (точное число оп-

ределяется судейской коллегией в день проведения соревнований);  в зачет принимается лучшее время из попыток или максимальное

число вытолкнутых кеглей за отведенное время;  победителем объявляется команда, чей робот затратил на очистку

ринга от кеглей наименьшее время, или если ни одна команда не справилась с полной очисткой ринга — команда, чей робот вытолкнул за пределы ринга наибольшее количество кеглей. 

§

§

РОБОТОТЕХНИКА ДЛЯ ДЕТЕЙ И РОДИТЕЛЕЙ

Издание 3-е, дополненное и исправленное 

Утверждено к печати

Ученым советом Института проблем машиноведения РАН

Редактор издательства А. Б. Иванова Художник О. Скворцова

Книга печатается с оригинал-макета, подготовленного автором

Санкт-Петербургская издательская фирма «Наука» РАН

199034, Санкт-Петербург, Менделеевская линия, 1

E-mail: main@nauka.nw.ru

Internet: www.naukaspb.spb.ru Лицензия ИД № 02980 от 06 октября 2000 г.

Подписано к печати 30.01.2021. Формат 70 · 90 1/16.

Бумага офсетная. Печать офсетная. Гарнитура Таймс.

Объем 20 усл. печ. л. Тираж 3000 экз. Стр. 319

Отпечатано в типографии ООО «Дитон»

Санкт-Петербург, Б. Сампсониевский пр., 60, литер М

Тел.: (812) 333-15-42 Факс: (812) 333-15-41

Системы управления с обратной связью  

[1] В ноябре 2021 г. команда из Санкт-Петербурга Hand-Friend под руководством С. А. Филиппова в составе сборной России завоевала золотую медаль на Всемирной олимпиаде роботов в г. Куала-Лумпур, Малайзия, с проектом «Грета играет в ладушки». Вот имена чемпионов: Мария Муретова, Денис Никитин, Андрей Свечинский.

[2] Если у Вас уже есть Lego Technic, будьте уверены: они с Lego Mindstorms дополнят друг друга.

[3] В связи с прекращением выпуска набора 8527 в некоторых Интернетмагазинах остались раритетные экземпляры, цена на которые может быть завышена. Зато цена набора 8547 пока что держится стабильной.

[4] Поддерживаемое программное обеспечение для адаптера Bluetooth – Widcomm® Bluetooth для Windows не ниже версии v.1.4.2.10 SP5 и драйверы для поддержки технологии Bluetooth, включенные в Microsoft Windows XP с Service Pack 2 или Service Pack 3, Windows Vista или Vista Service Pack 1, Apple MacOS X 10.3.9, 10.4 и 10.5.

[5] Входит в комплект образовательного набора Lego Mindstorms NXT 9797.

[6] В 2021 г. в России вышла книга «Программируем микрокомпьютер NXT в LabVIEW» [8], ориентированная на старших школьников.

[7] Robolab 2.9 с установленным патчем до версии 2.9.4.

[8] NXT, вышедший из строя при несанкционированном отключении во время загрузки операционной системы, можно восстановить из другой системы. Например, временно загрузить Firmware из RobotC.

[9] Не стоит путать математическое обозначение невязки e (от error) с показаниями энкодера e1 (от encoder), предопределенной переменной среды Robolab.

[10] Автор статьи – д. техн. наук, профессор А. Л. Фрадков.

[11] http://myrobot.ru/sport/index.php?n=Reglaments.LineFollowing

[12] http://kpolyakov.narod.ru/school/robots/robots.htm

[13] http://inform239.narod.ru/robot.html

[14] http://www.niisi.ru/kumir/

[15] Идея взята с сайта http://www.myrobot.ru

🚀 доклад на тему «информация и управление. обратная связь» — готовая работа бесплатно

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

Системы управления с обратной связью

Достаточно ли односторонней передачи информации (только от управляющего объекта к управляемому)? Иногда, да. Но чаще желательно (а нередко, и необходимо) иметь возможность реагировать на изменения реальной ситуации, т.е. управляющий объект должен получать информацию от управляемого объекта и, в зависимости от его состояния, так или иначе менять управляющее воздействие. Для передачи информации о состоянии управляемого объекта служит обратная связь. Системы управления, содержащие ветвь обратной связи, называются замкнутыми, а не имеющие ее — разомкнутыми.

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

Чтобы автоматическая система могла получить информацию о состоянии управляемого объекта и внешней среды, необходимы специальные устройства — датчики (Например, датчик температуры, датчик вибрации, датчик освещенности и т.д.). В ЛогоМирах тоже есть датчики — функции, передающие компьютеру значения, в зависимости от состояния системы или своих аргументов. Например, датчик «ответ». Его значение зависит от того, что набрал человек в ответ на последний вопрос компьютера. Существуют датчики, значение которых зависит от состояния черепашки. Например, «цвет_поля» (цп, colorunder) выдает код цвета, на котором в данный момент находится черепашка.

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

Взгляните на программу «уравнение» из предыдущей главы. Она будет нормально работать, если человек задаст корректные исходные данные. Но что произойдет, если в качестве коэффициента а будет введен ноль? Программа аварийно завершится с сообщением «не могу разделить на ноль». Лучше сделать так, чтобы компьютер и не пытался выполнять такое действие. Для этого мы можем записать фрагмент программы вот так:

если не :a = 0

[

пусть “x 0 — :b / :a

сообщи пред [Корень уравнения x=] 😡

]

Теперь при ошибочном значении переменной «а» программа будет завершаться нормально. Правда, при этом человек не получит никакого сообщения. Это, опять-таки, не слишком хорошо. Желательно, чтобы пользователь получал сообщение об ошибке. Придется еще немного усложнить программу.

если_иначе :a = 0

[

сообщи [При а=0 уравнение не имеет решений!]

]

[

пусть “x 0 — :b / :a

сообщи пред [Корень уравнения x=] 😡

]

Мы использовали условные команды, с помощью которых реализовали алгоритмическую структуру «ветвление» (другое название — альтернатива21). Ветвление — выбор одной из двух последовательностей команд в зависимости от выполнения некоторого условия. Ветвление бывает неполным (как в первом примере — выбиралось, делать что-то или не делать ничего) и полным (когда выбирается вариант действия). Им соответствуют краткая и полная формы условной команды.

если <условие> if <условие>

[<действия>] [<действия>]

если_иначе <условие> ifelse<условие>

[<действия1>] [<действия>]

[<действия2>] [<действия2>]

Условие — это некоторое выражение, о котором можно сказать, что оно истинно или ложно. При его записи можно использовать знаки сравнения (<, >, =), а также логические операции: и (and), или (or), не (not).

В краткой условной команде действия выполняются только в том случае, когда условие истинно. В полной — когда условие истинно, выполняется первый список действий, а когда ложно — второй. Затем начинает выполняться команда, следующая за условной.

Условные команды, как и циклы, могут быть вложенными. Это полезно, например, если нужно выбрать один вариант действий не из двух, а из трех, четырех или более.

Примечания

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

Alternative (фр. от лат. Alter) — один из двух

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

Для подготовки данной работы были использованы материалы с сайта http://macedu.narod.ru

Оцените статью
Реферат Зона
Добавить комментарий