Введение в разработку приложений для встроенных систем на платформе Intel Atom

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

Разбить на страницы
Показывать лекцию целиком

5.1. Введение

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

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

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

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

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

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

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

    5.1.1. Релейный регулятор

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

    5.1.1. Движение с одним датчиком освещенности

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

    (рис 5.1)

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

    Подключим левый мотор на порт В, правый - на порт С (такой выбор портов - традиция для наборов 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) может быть константой для данной системы или вырабатываться в результате предварительной калибровки как среднее арифметическое черного и белого.

    (рис 5.2)

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

    5.1.2. Движение с двумя датчиками освещенности

    (рис 5.3)

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

  • оба на белом - движение прямо;
  • левый (S1) на черном, правый (S2) на белом - движение налево;
  • левый на белом, правый на черном - движение направо;
  • оба на черном - движение прямо.
  • Этот регулятор реализуется с помощью условных операторов.

        while(true)
        {
          if(S1>grey1)
          {
            if(S2>grey2) // Оба на белом 
            {
              Motor[MotorB]=100 ;
              Motor[MotorC]=100;
            }
            else // Правый на черном
            {
              Motor[MotorB]=100;
              Motor[MotorC]=-100;
            }
          }
          else
          {
            if(S2>grey2) // Левый на черном 
            {
              Motor[MotorB]=-100;
              Motor[MotorC]=100;
            }
            else // Оба на черном 
            {
              Motor[MotorB]=100;
              Motor[MotorC]=100;
            }
          }
        }
        

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

    5.1.2. Пропорциональный регулятор

    5.1.1. Описание

    При автоматическом регулировании управляющее воздействие $$u(t)$$ обычно является функцией динамической ошибки - отклонения $$e(t)$$ регулируемой величины $$x(t)$$ от ее заданного значения $$x_{0}(t)$$:

    $$e(t)=x_{0}(t)-x(t)$$

    Это принцип Ползунова-Уатта регулирования по отклонению, или принцип обратной связи. Математическое выражение функциональной зависимости желаемого управляющего воздействия $$u_{0}(t)$$ от измеряемых регулятором величин называется законом или алгоритмом регулирования.

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

    $$u_{0}(t)=ke(t)$$

    Здесь $$k$$ - это коэффициент усиления регулятора.

    5.1.2. Управление мотором

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

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

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

    Пусть $$e1$$ - показания датчика оборотов на моторе А. Тогда управление мощностью мотора задается командой

    Motor[MotorA]=k*(45-e1);

    Здесь $$k$$- усиливающий коэффициент, например 5.

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

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

    5.1.3. Синхронизация моторов

    (рис 5.4)

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

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

    Итак, задача - двигаться прямолинейно. Пусть $$е2$$ и $$еЗ$$ - показания датчиков оборотов моторов В и С. Их надо будет обнулить перед началом движения. Регулятор определим следующим образом:

    $$up=k*(еЗ-е2);$$

    А воздействие на моторы уже знакомо из предыдущих примеров:

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

    5.1.4. Взять азимут

    Если читателю удалось обзавестись компасом от компании Hitechnic, стоит попробовать и его использовать вместе с П- регулятором.

    Задачка проста. Взять азимут и ехать в заданном направлении, никуда не сворачивая. Пусть alpha - азимут, т.е. угол, полученный с компаса на момент старта, a s1 - показания датчика компаса в каждый момент времени.

    alpha=s1; 
        while (true)
        {
          preg=k*(A-s1);
        
          Motor[MotorB]=50+preg;
          Motor[MotorC]=50-preg;
        }
        

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

    5.1.5. Движение по линии

    (рис 5.5)

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

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

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

    while(true)
        {
          up=k*(s1-grey);
          motor[MotorB]=50+up; 
          motor[MotorC]=50-up; 
          wait1msec(1);
        }
        

    Коэффициент $$k$$ может быть достаточно мал (от 1 до 3) для маневренного устройства.

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

    5.1.6. Движение по линии с двумя датчиками

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

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

    Из первого и третьего утверждений можно заметить, что при равных показаниях датчиков робот едет прямо. Учитывая наши знания о зрении робота, можно утверждать, что при любых равных значениях показаний датчиков (в том числе и на сером) робот должен ехать прямо. Предположим, что наши датчики $$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%. Желательно их не ставить в паре на регулятор с большим коэффициентом, поскольку при резком изменении общей освещенности даже на белом поле отклонения могут несколько разойтись, что может привести к неожиданным последствиям.

    5.1.7. Движение вдоль стенки

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

    (рис 5.6)

    Расстояние до стенки в настоящий момент времени, которое показывает датчик, обозначим $$s1$$.

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

        Motor[MotorB]=50+up;
        Motor[MotorC]=50-up;
        

    Осталось определить, чему будет равно управляющее воздействие. Это нетрудно:

    $$up=k*(s1-L); $$

    Таким образом, при $$sl=L$$ робот не меняет курса и едет прямо. В случае отклонения его курс корректируется. Здесь $$k$$ - это некоторый усиливающий коэффициент, определяющий воздействие регулятора на систему. Для робота NXT средних размеров коэффициент k может колебаться от 1 до 10 в зависимости от многих факторов. Предлагаем подобрать его самостоятельно.

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

    5.1.8. Пропорционально-дифференциальный регулятор

    (рис 5.7)

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

    (рис 5.8)

    Для защиты от подобных ситуаций добавим в регулятор дифференциальную составляющую, которая будет следить за направлением движения робота. Иными словами, вектор скорости будет влиять на управляющее воздействие. Известно, что скорость находится как $$v = \triangle s / \triangle t $$, где $$v = \triangle s$$ - это изменение расстояния за промежуток времени $$\triangle t $$. Определим дифференциальный регулятор через скорость отклонения робота от заданного положения:

    $$ud=k*(S1-Sold)/ \triangle s ,$$

    где $$S1$$ - текущее расстояние до стенки, $$Sold$$ - расстояние на предыдущем шаге.

    Поскольку замеры производятся через равные промежутки времени, то $$\triangle t $$ можно принять за константу.

    $$ud=k2*(S1 - Sold)$$

    Таким образом, ПД-регулятор описывается формулой из двух слагаемых

    $$upd = up+ud = k1*(S1-L) + k2* (S1 -Sold)$$

    Можно показать, что для устойчивого достижения цели коэффициент $$k2$$ при дифференциальной составляющей должен превышать $$k1$$ (см. ниже статью "Элементы теории автоматического управления в школе").

    Алгоритм движения вдоль стенки на ПД-регуляторе в целом будет выглядеть так:

    Sold=L=S1; 
        while(true)
        {
        upd= k1*(S1-L) + k2*(S1-Sold); 
    
        Motor[MotorB]=50+upd;
        Motor[MotorC]=50-upd;
    
        Sold=S1; 
        wait1msec(1);
        }
        

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

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

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

    Рассмотрим, например, задачу построения пропорциональных (П) и пропорционально-дифференциальных (ПД) регуляторов в задаче управления движением мобильного робота вдоль стены. Обозначим через $$x_{t}$$ расстояние робота от стены, через $$\theta_{t}$$ - курсовой угол робота, а через $$u_{t}$$ - управляющее воздействие в момент с порядковым номером $$t$$, соответственно, где $$t = 0, 1,2, ...$$ - номера моментов измерений. Считается, что опрос датчиков и изменения величины управляющего воздействия производится через равные промежутки времени $$h$$. Для задач управления реальными устройствами естественно считать, что управляющим воздействием является разность угловых скоростей вращения колес, пропорциональная скорости изменения курсового угла:

    $$\theta_{t+1}=\theta_{t}+u_{t}hr/b,$$

    где r - радиус колес, b - база транспортного средства (расстояние между колесами). Легко также видеть, что расстояние робота от стены за время ht изменится на величину $$h\,sin\,\theta_{t},$$, т.е. имеет место соотношение

    $$x_{t+1}=x_{t}+v_{t}\,h\,sin\,\theta_{t}.$$

    Считая отклонения курса от номинального $$\theta_{t}=0$$малыми, а среднюю скорость робота постоянной: $$v_{t}=v$$, динамику изменения переменных состояния робота в первом приближении можно описать линейными уравнениями состояния:

    $$x_{t+1}=x_{t}+v_{t}h\theta_{t},\,\,\,\,\theta_{t+1}=\theta_{t}+u_{t}hr/b$$

    Исключая переменную $$\theta_{t}$$, приходим к разностному уравнению 2-го порядка, непосредственно связывающему управляющую и регулируемую переменные:

    $$x_{t+2}-2\,x_{t+1}+x_{t}=gu_{t},$$

    где $$g=h^2vr/b$$.

    Зададим желаемое расстояние до стены $$x^*>0$$ и определим цель управления (ЦУ) соотношением

    $$x_{t}\rightarrow x^*\,\,при\,\, t\rightarrow\infty$$

    Теперь естественным образом вводится на содержательном уровне понятие асимптотической устойчивости, как свойства решений системы (4), обеспечивающего достижение ЦУ (5) при любых начальных условиях, достаточно мало отличающихся от целевых. Легко видеть, что при $$u_{t}=0$$ решением уравнения (4) является любое постоянное значение $$x_{t}=x^*$$. Но поскольку уравнение (4), соответствующее модели двойного интегратора (двойного сумматора), не обладает свойством асимптотической устойчивости, ЦУ (5) при постоянном управлении не достигается. Это легко демонстрируется как аналитически - суммированием ряда натуральных чисел, так и экспериментально, выставляя устройство в различные начальные положения.

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

    $$u,\,=K_{0}(x^*-x_{t}),$$

    где $$K_{0}$$ - коэффициент усиления регулятора. Подстановкой (6) в (4) получаем уравнение замкнутой системы

    $$x_{t+2}-2\,x_{t+1}+(1+gK_{0})x_{t}=gK_{0}x^*,$$

    Переходя к уравнениям для отклонений $$y_{t}=x^*-x_{t}$$, получим однородное уравнение

    $$y_{t+2}-2\,y_{t+1}+(1+gK_{0})y_{t}=0.$$

    Возникающий вопрос об устойчивости системы (7) теперь можно решить в случае общей однородной системы 2-го порядка

    $$x_{t+2}+a_{1}x_{t+1}+a_{0}x_{t}=0,$$

    записав ее общее решение в виде суммы двух геометрических прогрессий со знаменателями $$\lambda_{1}$$ и $$\lambda_{2}$$ (возможно, комплексными) равными корням квадратного трехчлена $$\lambda_{2}+a_{1}\lambda_{1}+a_{0}$$. Условием асимптотической устойчивости оказывается пара неравенств $$\left| \lambda_{1}\right| < l,\,\,\left| \lambda_{2}\right| <1$$ означающая, что обе геометрические прогрессии являются бесконечно убывающими. Теперь стандартное условие устойчивости в терминах коэффициентов

    $$a_{0} <1,\,\,1+a_{0}>\left| a_{1}\right|$$

    школьники могут вывести самостоятельно.

    Применяя правило (9) к уравнению системы с П-регулятором (7), убеждаемся в том, что неравенства (9) несовместны, т.е. что не существует числа $$K_{0}$$, делающего систему (7) асимптотически устойчивой. Таким образом, П-регулятор оказывается неработоспособным, и для решения задачи поиски нужно продолжить.

    Следующим этапом является построение ПД-регулятора, который можно описать соотношением

    $$u_{t} = K_{0}(x^*-x_{0}+K_{1}(x_{t+1}-x_{t}),$$

    где $$K_{1}$$ - коэффициент усиления по разности (дифференциальный). Поскольку в момент времени t измерить хt+1 невозможно, для реализации регулятора (10) можно воспользоваться соотношением

    $$x_{t+1}-x_{t}=vh\theta_{t}=vh\theta_{t-1}+u_{t-1}\,vh^2r/b$$

    Подставляя в (10), получим ПД-закон управления в виде

    $$u_{t}=\left[K_{0}(x^*-x_{t})+K_{1}\,vh(\theta_{t-1}+u_{t-1}hr/b)\right],$$

    т.е. для применения (11) требуется помнить значения курсового угла и управления на предыдущем шаге. Для исследования устойчивости и выбора коэффициентов ПД-регулятора подставим (10) в (4). Получим уравнение замкнутой системы:

    $$x_{t+2}-(2+gK_{1})x_{t+1}+(1+gK_{0}+gK_{1})x_{t}=gK_{0}x^*.$$

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

    $$K_{0}> 0,\,K_{0}+K_{1} <0.$$

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

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

    5.2. Выводы

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

    Страницы:

    5.1. Введение

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

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

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

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

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

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

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

    5.1.1. Релейный регулятор

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

    5.1.1. Движение с одним датчиком освещенности

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

    (рис 5.1)

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

    Подключим левый мотор на порт В, правый - на порт С (такой выбор портов - традиция для наборов 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) может быть константой для данной системы или вырабатываться в результате предварительной калибровки как среднее арифметическое черного и белого.

    (рис 5.2)

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

    5.1.2. Движение с двумя датчиками освещенности

    (рис 5.3)

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

  • оба на белом - движение прямо;
  • левый (S1) на черном, правый (S2) на белом - движение налево;
  • левый на белом, правый на черном - движение направо;
  • оба на черном - движение прямо.
  • Этот регулятор реализуется с помощью условных операторов.

        while(true)
        {
          if(S1>grey1)
          {
            if(S2>grey2) // Оба на белом 
            {
              Motor[MotorB]=100 ;
              Motor[MotorC]=100;
            }
            else // Правый на черном
            {
              Motor[MotorB]=100;
              Motor[MotorC]=-100;
            }
          }
          else
          {
            if(S2>grey2) // Левый на черном 
            {
              Motor[MotorB]=-100;
              Motor[MotorC]=100;
            }
            else // Оба на черном 
            {
              Motor[MotorB]=100;
              Motor[MotorC]=100;
            }
          }
        }
        

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

    5.1.2. Пропорциональный регулятор

    5.1.1. Описание

    При автоматическом регулировании управляющее воздействие $$u(t)$$ обычно является функцией динамической ошибки - отклонения $$e(t)$$ регулируемой величины $$x(t)$$ от ее заданного значения $$x_{0}(t)$$:

    $$e(t)=x_{0}(t)-x(t)$$

    Это принцип Ползунова-Уатта регулирования по отклонению, или принцип обратной связи. Математическое выражение функциональной зависимости желаемого управляющего воздействия $$u_{0}(t)$$ от измеряемых регулятором величин называется законом или алгоритмом регулирования.

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

    $$u_{0}(t)=ke(t)$$

    Здесь $$k$$ - это коэффициент усиления регулятора.

    5.1.2. Управление мотором

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

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

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

    Пусть $$e1$$ - показания датчика оборотов на моторе А. Тогда управление мощностью мотора задается командой

    Motor[MotorA]=k*(45-e1);

    Здесь $$k$$- усиливающий коэффициент, например 5.

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

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

    5.1.3. Синхронизация моторов

    (рис 5.4)

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

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

    Итак, задача - двигаться прямолинейно. Пусть $$е2$$ и $$еЗ$$ - показания датчиков оборотов моторов В и С. Их надо будет обнулить перед началом движения. Регулятор определим следующим образом:

    $$up=k*(еЗ-е2);$$

    А воздействие на моторы уже знакомо из предыдущих примеров:

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

    5.1.4. Взять азимут

    Если читателю удалось обзавестись компасом от компании Hitechnic, стоит попробовать и его использовать вместе с П- регулятором.

    Задачка проста. Взять азимут и ехать в заданном направлении, никуда не сворачивая. Пусть alpha - азимут, т.е. угол, полученный с компаса на момент старта, a s1 - показания датчика компаса в каждый момент времени.

    alpha=s1; 
        while (true)
        {
          preg=k*(A-s1);
        
          Motor[MotorB]=50+preg;
          Motor[MotorC]=50-preg;
        }
        

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

    5.1.5. Движение по линии

    (рис 5.5)

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

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

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

    while(true)
        {
          up=k*(s1-grey);
          motor[MotorB]=50+up; 
          motor[MotorC]=50-up; 
          wait1msec(1);
        }
        

    Коэффициент $$k$$ может быть достаточно мал (от 1 до 3) для маневренного устройства.

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

    5.1.6. Движение по линии с двумя датчиками

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

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

    Из первого и третьего утверждений можно заметить, что при равных показаниях датчиков робот едет прямо. Учитывая наши знания о зрении робота, можно утверждать, что при любых равных значениях показаний датчиков (в том числе и на сером) робот должен ехать прямо. Предположим, что наши датчики $$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%. Желательно их не ставить в паре на регулятор с большим коэффициентом, поскольку при резком изменении общей освещенности даже на белом поле отклонения могут несколько разойтись, что может привести к неожиданным последствиям.

    5.1.7. Движение вдоль стенки

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

    (рис 5.6)

    Расстояние до стенки в настоящий момент времени, которое показывает датчик, обозначим $$s1$$.

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

        Motor[MotorB]=50+up;
        Motor[MotorC]=50-up;
        

    Осталось определить, чему будет равно управляющее воздействие. Это нетрудно:

    $$up=k*(s1-L); $$

    Таким образом, при $$sl=L$$ робот не меняет курса и едет прямо. В случае отклонения его курс корректируется. Здесь $$k$$ - это некоторый усиливающий коэффициент, определяющий воздействие регулятора на систему. Для робота NXT средних размеров коэффициент k может колебаться от 1 до 10 в зависимости от многих факторов. Предлагаем подобрать его самостоятельно.

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

    5.1.8. Пропорционально-дифференциальный регулятор

    (рис 5.7)

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

    (рис 5.8)

    Для защиты от подобных ситуаций добавим в регулятор дифференциальную составляющую, которая будет следить за направлением движения робота. Иными словами, вектор скорости будет влиять на управляющее воздействие. Известно, что скорость находится как $$v = \triangle s / \triangle t $$, где $$v = \triangle s$$ - это изменение расстояния за промежуток времени $$\triangle t $$. Определим дифференциальный регулятор через скорость отклонения робота от заданного положения:

    $$ud=k*(S1-Sold)/ \triangle s ,$$

    где $$S1$$ - текущее расстояние до стенки, $$Sold$$ - расстояние на предыдущем шаге.

    Поскольку замеры производятся через равные промежутки времени, то $$\triangle t $$ можно принять за константу.

    $$ud=k2*(S1 - Sold)$$

    Таким образом, ПД-регулятор описывается формулой из двух слагаемых

    $$upd = up+ud = k1*(S1-L) + k2* (S1 -Sold)$$

    Можно показать, что для устойчивого достижения цели коэффициент $$k2$$ при дифференциальной составляющей должен превышать $$k1$$ (см. ниже статью "Элементы теории автоматического управления в школе").

    Алгоритм движения вдоль стенки на ПД-регуляторе в целом будет выглядеть так:

    Sold=L=S1; 
        while(true)
        {
        upd= k1*(S1-L) + k2*(S1-Sold); 
    
        Motor[MotorB]=50+upd;
        Motor[MotorC]=50-upd;
    
        Sold=S1; 
        wait1msec(1);
        }
        

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

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

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

    Рассмотрим, например, задачу построения пропорциональных (П) и пропорционально-дифференциальных (ПД) регуляторов в задаче управления движением мобильного робота вдоль стены. Обозначим через $$x_{t}$$ расстояние робота от стены, через $$\theta_{t}$$ - курсовой угол робота, а через $$u_{t}$$ - управляющее воздействие в момент с порядковым номером $$t$$, соответственно, где $$t = 0, 1,2, ...$$ - номера моментов измерений. Считается, что опрос датчиков и изменения величины управляющего воздействия производится через равные промежутки времени $$h$$. Для задач управления реальными устройствами естественно считать, что управляющим воздействием является разность угловых скоростей вращения колес, пропорциональная скорости изменения курсового угла:

    $$\theta_{t+1}=\theta_{t}+u_{t}hr/b,$$

    где r - радиус колес, b - база транспортного средства (расстояние между колесами). Легко также видеть, что расстояние робота от стены за время ht изменится на величину $$h\,sin\,\theta_{t},$$, т.е. имеет место соотношение

    $$x_{t+1}=x_{t}+v_{t}\,h\,sin\,\theta_{t}.$$

    Считая отклонения курса от номинального $$\theta_{t}=0$$малыми, а среднюю скорость робота постоянной: $$v_{t}=v$$, динамику изменения переменных состояния робота в первом приближении можно описать линейными уравнениями состояния:

    $$x_{t+1}=x_{t}+v_{t}h\theta_{t},\,\,\,\,\theta_{t+1}=\theta_{t}+u_{t}hr/b$$

    Исключая переменную $$\theta_{t}$$, приходим к разностному уравнению 2-го порядка, непосредственно связывающему управляющую и регулируемую переменные:

    $$x_{t+2}-2\,x_{t+1}+x_{t}=gu_{t},$$

    где $$g=h^2vr/b$$.

    Зададим желаемое расстояние до стены $$x^*>0$$ и определим цель управления (ЦУ) соотношением

    $$x_{t}\rightarrow x^*\,\,при\,\, t\rightarrow\infty$$

    Теперь естественным образом вводится на содержательном уровне понятие асимптотической устойчивости, как свойства решений системы (4), обеспечивающего достижение ЦУ (5) при любых начальных условиях, достаточно мало отличающихся от целевых. Легко видеть, что при $$u_{t}=0$$ решением уравнения (4) является любое постоянное значение $$x_{t}=x^*$$. Но поскольку уравнение (4), соответствующее модели двойного интегратора (двойного сумматора), не обладает свойством асимптотической устойчивости, ЦУ (5) при постоянном управлении не достигается. Это легко демонстрируется как аналитически - суммированием ряда натуральных чисел, так и экспериментально, выставляя устройство в различные начальные положения.

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

    $$u,\,=K_{0}(x^*-x_{t}),$$

    где $$K_{0}$$ - коэффициент усиления регулятора. Подстановкой (6) в (4) получаем уравнение замкнутой системы

    $$x_{t+2}-2\,x_{t+1}+(1+gK_{0})x_{t}=gK_{0}x^*,$$

    Переходя к уравнениям для отклонений $$y_{t}=x^*-x_{t}$$, получим однородное уравнение

    $$y_{t+2}-2\,y_{t+1}+(1+gK_{0})y_{t}=0.$$

    Возникающий вопрос об устойчивости системы (7) теперь можно решить в случае общей однородной системы 2-го порядка

    $$x_{t+2}+a_{1}x_{t+1}+a_{0}x_{t}=0,$$

    записав ее общее решение в виде суммы двух геометрических прогрессий со знаменателями $$\lambda_{1}$$ и $$\lambda_{2}$$ (возможно, комплексными) равными корням квадратного трехчлена $$\lambda_{2}+a_{1}\lambda_{1}+a_{0}$$. Условием асимптотической устойчивости оказывается пара неравенств $$\left| \lambda_{1}\right| < l,\,\,\left| \lambda_{2}\right| <1$$ означающая, что обе геометрические прогрессии являются бесконечно убывающими. Теперь стандартное условие устойчивости в терминах коэффициентов

    $$a_{0} <1,\,\,1+a_{0}>\left| a_{1}\right|$$

    школьники могут вывести самостоятельно.

    Применяя правило (9) к уравнению системы с П-регулятором (7), убеждаемся в том, что неравенства (9) несовместны, т.е. что не существует числа $$K_{0}$$, делающего систему (7) асимптотически устойчивой. Таким образом, П-регулятор оказывается неработоспособным, и для решения задачи поиски нужно продолжить.

    Следующим этапом является построение ПД-регулятора, который можно описать соотношением

    $$u_{t} = K_{0}(x^*-x_{0}+K_{1}(x_{t+1}-x_{t}),$$

    где $$K_{1}$$ - коэффициент усиления по разности (дифференциальный). Поскольку в момент времени t измерить хt+1 невозможно, для реализации регулятора (10) можно воспользоваться соотношением

    $$x_{t+1}-x_{t}=vh\theta_{t}=vh\theta_{t-1}+u_{t-1}\,vh^2r/b$$

    Подставляя в (10), получим ПД-закон управления в виде

    $$u_{t}=\left[K_{0}(x^*-x_{t})+K_{1}\,vh(\theta_{t-1}+u_{t-1}hr/b)\right],$$

    т.е. для применения (11) требуется помнить значения курсового угла и управления на предыдущем шаге. Для исследования устойчивости и выбора коэффициентов ПД-регулятора подставим (10) в (4). Получим уравнение замкнутой системы:

    $$x_{t+2}-(2+gK_{1})x_{t+1}+(1+gK_{0}+gK_{1})x_{t}=gK_{0}x^*.$$

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

    $$K_{0}> 0,\,K_{0}+K_{1} <0.$$

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

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

    5.2. Выводы

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

    Вернуться к учебному плану