Августовская конференция
руководящих и педагогических работников в 2015 году
Секционное заседание «Технологии развития технического творчества учащихся
в системе дополнительного образования»
Мастер-класс «Программирование робота
на выполнение задания «Движение вдоль черной линии»
,
педагог дополнительного образования МБУ ДО «ЦТТ»
Теория управления роботом.
В настоящее время в развитии робототехники появляются новые средства разработки и прототипирования, в том числе и автономных устройств, способных самостоятельно передвигаться и выполнять механические действия. Появился большой выбор платформ, способных перемещаться по земле, воздуху и даже в воде. Универсальные принципы построения этих платформ позволяют работать с ними людям, не обладающим специальными техническими знаниями. Появились универсальные робототехнические наборы, позволяющие быстро и просто конструировать прототипы моделей роботов. В этом случае от учащихся требуется знание стандартных языков и инструментов программирования. Автоматическое управление стало широко востребованным.
Управление осуществляется с помощью алгоритма. Он может быть использован для вычисления управляющих входов по измеренным значениям выходов объекта управления. Полученные значения входов в виде некоторых сигналов подаются на исполнительное устройство. Пример: задача состоит в поддержании системы в определенном заданном состоянии. Тогда для осуществления автоматического регулирования к объекту подключается комплекс устройств, представляющих собой в совокупности регулятор. Регулятор - устройство (или программа), вырабатывающее входные величины, необходимые для достижения заданной цели (устройство с помощью чувствительного элемента (датчика) измеряет регулируемую величину и в соответствии с законом регулирования вырабатывает воздействие на регулирующий орган объекта). Система, стоящая из объекта и регулятора, называется системой управления, или замкнутой системой управления. Исполнительное устройство, осуществляющее механическое перемещение регулирующего органа, обычно называется сервоприводом.
Релейным двухпозиционным регулятором называется регулятор, у которого регулирующий орган под действием сигнала от датчика может принимать одно из двух крайних положений: «открыт» - «закрыт». При этом приток энергии к регулируемому объекту может быть только максимальным или минимальным.
Движение с одним датчиком освещенности.
Пример трехколесной (одно колесо пассивное) роботизированной тележки с одним датчиком освещенности, который должен двигаться по плоской поверхности вдоль границы черного и белого:
Регулирующим органом объекта в данном случае будут два колеса, подключенные к сервоприводам. Регулируемая величина - положение датчика освещенности, привязанное к конкретному значению уровня освещенности. Нагрузка на объект (возмущающее воздействие) - это движение робота вперед вдоль линии границы. Поскольку линия может быть кривой, а также вследствие других факторов при отсутствии регулирующего воздействия робот непременно съедет с линии.
Подключим левый мотор на порт В, правый - на порт С (такой выбор портов - традиция для наборов Mindstorms NXT). Стартовая позиция робота - датчик на белом. Построим программный регулятор, который обеспечит движение по дуге в сторону черного, пока робот на белом, и движение по дуге в сторону белого, пока робот на черном. Для этого выключается или резко понижается мощность одного из моторов. Реализация на RobotC: while (true) { // grey - значение серого if (SensorValue[S1]>grey) { Motor[MotorB]=100; Motor[MotorC]=0; } else { Motor[MotorB]=0; Motor[MotorC]=100; } wait1msec(1); } Здесь SensorValue[S1] - получение результатов измерения датчика подключенного к порту S1 (датчик освещенности). Команда Motor[MotorC]=100 устанавливает скорость вращения мотора C на 100 процентов вперед, диапазон при этом от -100 до 100. Команда wait1msec(1) устанавливает задержку в одну миллисекунду, необходимую для того, что бы устройство успело выполнить подаваемую команду. Значение «серого» (grey) может быть константой для данной системы или вырабатываться в результате предварительной калибровки как среднее арифметическое черного и белого.
Под управлением такого регулятора робот движется вдоль линии границы по ломаной кривой, периодически наезжая то на черное, то на белое. Скорость его невысока, стабильность тоже - это издержки использования двухпозиционного релейного регулятора.
Пропорциональный регулятор.
При автоматическом регулировании управляющее воздействие u(t) обычно является функцией динамической ошибки – отклонения e(t) регулируемой величины x(t) от ее заданного значения x0(t): e(t) = x0(t) - x(t). Это принцип Ползунова-Уатта регулирования по отклонению, или принцип обратной связи. Математическое выражение функциональной зависимости желаемого управляющего воздействия u0(t) от измеряемых регулятором величин называется законом или алгоритмом регулирования. Пропорциональный регулятор - это устройство, оказывающее управляющее воздействие на объект пропорционально его линейному отклонению от заданного состояния: u0(t) = ke(t). Здесь k - это коэффициент усиления регулятора.
Управление мотором.
Первая задача при управлении манипулятором - это отработка заданных углов звеньев манипулятора, чтобы заданное фиксированное положение. Соответственно надо придумать алгоритм, который задержит мотор, удерживающий звено манипулятора, в строго фиксированном положении. При этом может помочь п-регулятор. Балку, прикрепленную к мотору, можно трактовать как первое звено манипулятора. В момент запуска его надо поднять на 45 градусов и удерживать в этом положении, что бы ни случилось. Алгоритм таков: обнулить показания датчика оборотов, задать желаемое положение в 45 градусов и в цикле поддерживать это положение, учитывая возможные отклонения.
еl - показания датчика оборотов на моторе А. Тогда управление мощностью мотора задается командой Motor[MotorA]=k*(45-e1). Здесь k - усиливающий коэффициент, например 5. При отклонении в положительную сторону на мотор будет подаваться отрицательная мощность и наоборот. Это управление можно применять к мотору в цикле с небольшой задержкой в 1-10 мс, чтобы разгрузить процессор. Далее, чтобы изменить положение звена, достаточно, имея вместо числа 45 переменную, изменить ее значение из параллельной задачи.
Движение по линии.
Движение по границе черного и белого можно построить на П-регуляторе. Хотя внешне задача представляется решаемой только с помощью релейного регулятора, поскольку в системе присутствует всего два видимых человеческому глазу состояния: черное и белое. Но робот все видит иначе, для него отсутствует резкая граница между этими цветами. Можно сказать, он близорук и видит градиентный переход оттенков серого.

Так же как и в релейном регуляторе, необходимо определить среднее значение между черным и белым, обозначим его grey. Это будет то состояние датчика освещенности s1, к которому должна стремиться система. while(true) { up=k*(s1-grey); motor[MotorB]=50+up; motor[MotorC]=50-up; wait1msec(1); }
Коэффициент k может быть достаточно мал (от 1 до 3) для маневренного устройства. Такой регулятор эффективно работает только для малых углов отклонения, поэтому устройство надо ставить в направлении движения так, чтобы датчик оказался по левую сторону от черной линии. Если датчик заедет на черную линию, регулятор станет отрицательным и левый мотор будет ехать медленнее правого, что выровняет робота. Нетрудно заметить, что движение по линии на П-регуляторе отличается плавностью и на некоторых участках робот движется практически прямолинейно, или точно повторяя изгибы линии.
Движение по линии с двумя датчиками.
Этот регулятор интересен тем, что на него практически не влияют колебания освещенности в помещении, которые обычно доставляют немало проблем начинающим робототехникам. Релейный регулятор на двух датчиках работает следующим образом: при двух белых едет прямо, при одном черном поворачивает в сторону черного, при двух черных едет прямо.
Из первого и третьего утверждений можно заметить, что при равных показаниях датчиков робот едет прямо. Учитывая наши знания о зрении робота, можно утверждать, что при любых равных значениях показаний датчиков (в том числе и на сером) робот должен ехать прямо. Предположим, что наши датчики s1 и s2 откалиброваны абсолютно одинаково, и построим регулятор для идеальной системы, который будет равен нулю при равных показаниях. up=k1*(s1-s2); Motor[MotorB]=50+up; Motor[MotorC]=50-up.
Если на левом датчике s1 потемнеет, управление и станет отрицательным, мотор В станет медленнее, чем С, и робот начнет подруливать влево. И наоборот. Все сходится.
Теперь спустимся с небес на землю. Может оказаться, что датчики откалиброваны по-разному. Для этого следует приспособиться под их показания, т. е. произвести автокалибровку перед запуском. И сравниваться в регуляторе будут не абсолютные показания, а их отклонения. left=s1; right=s2; while (true) { up=k1*((s1-left)-(s2-right)); Motor[MotorB]=50+up; Motor[MotorC]=50-up; wait1msec(1); }
Коэффициент k1 может изменяться в достаточно широком диапазоне (от 1 до 20 и более) в зависимости от кривизны линии, маневренности робота и разницы между черным и белым на поле. Автокалибровка должна производиться на одноцветной поверхности и желательно при той освещенности, которая будет занимать наибольшую часть пути. Например, если устройство едет вдоль черной линии на белом поле, то калиброваться надо на белом. Встречаются датчики, показания которых расходятся на 10-20 процентов. Желательно их не ставить в паре на регулятор с большим коэффициентом, поскольку при резком изменении общей освещенности даже на белом поле отклонения могут несколько разойтись, что может привести к неожиданным последствиям.


