Первый слайд презентации: Регуляторы для движения по границе черного и белого в TRIK Studio
Президентский физико-математический лицей №239 Сергей Александрович Филиппов
Слайд 2: План занятия
Регуляторы Ветвление Задача движения по границе Значение серого Релейные регуляторы Двухпозиционный регулятор Калибровка датчика Корректировка скорости Трехпозиционный регулятор
Слайд 3: Регулятор
Регулятор – это совокупность устройств, обеспечивающих желаемое поведение системы. Поплавковый регулятор Ползунова, 1765 г. Центробежный регулятор Уатта, 1788 г.
Слайд 4: Ветвление
Ветвление – часть алгоритма, в которой в зависимости от условия выполняется один или другой набор действий. Условие Действия 1 Действия 2 Конец условия Да Нет
Задача двигаться по границе черного и белого с помощью датчика освещенности Значение серого находится на границе и вычисляется через среднее арифметическое: grey=( white+black )/2 Для каждого робота свое значение серого, например grey=25 Калибровка – определение пороговых показаний датчика 1 0 4 0 2 5
Слайд 7: Двухпозиционный релейный регулятор
Двухпозиционный релейный регулятор имеет два состояния : освещенность > серого, освещенность ≤ серого. Двухпозиционный регулятор строится на основе ветвления и выполняет одно из двух действий: плавный поворот направо, плавный поворот налево. Миллисекунда нужна для отдыха контроллера B C ≤25 >25
Слайд 8: Релейный регулятор: движение вдоль границы черного и белого
Движение на релейном регуляторе слишком неровное: робота заносит Для стабилизации можно понизить скорость Или наоборот повысить
Слайд 9: Трехпозиционный релейный регулятор
Рассмотрим окрестность вокруг значения серого ±5 процентов свет >30 | 30≥ свет >20 | свет ≤20 белый | серый | черный Если показания датчика попадают в окрестность, робот движется прямолинейно – новое действие 25 3 0 | 2 0
Слайд 10: Пропорциональный регулятор
В задачах автоматического регулирования управляющее воздействие u обычно является функцией динамической ошибки – отклонения e регулируемой величины x от ее заданного значения x 0 : e = x 0 – x Пропорциональный регулятор – это устройство, оказывающее управляющее воздействие на объект пропорционально его отклонению от заданного состояния. u = k · e Здесь k – это коэффициент усиления регулятора.
Слайд 11: Пропорциональный регулятор: движение по линии
Также как и в релейном регуляторе, необходимо определить среднее значение gr e y между черным и белым. Это будет то состояние датчика освещенности s ensor 1, к которому должна стремиться система. e = grey - sensor1
Слайд 12: Пропорциональный регулятор: калибровка датчика освещенности
Краткая калибровка с понижением, датчик над белым полем grey=sensor1-(white-black)/2 Полная калибровка с определением белого и черного Ожидание нажатия кнопки Добавить сигнал с задержкой
Слайд 13: Пропорциональный регулятор: калибровка датчика освещенности
Краткая калибровка с понижением, датчик над белым полем grey=sensor1-(white-black)/2 Полная калибровка с определением белого и черного Ожидание нажатия кнопки Вывод результата на экран
Слайд 15: Релейный регулятор: движение с двумя датчиками освещенности
Оба на белом – движение прямо, левый ( sensor 1) на черном, правый ( sensor 2) на белом – движение налево, левый на белом, правый на черном – движение направо, оба на черном – движение прямо.
Слайд 16: Релейный четырехпозиционный регулятор: вложенное ветвление
На каждой ветви проверки первого датчика идет проверка второго датчика Алгоритм выполняется только по одной из ветвей Для каждого датчика требуется определить свое значение серого (например, 23 или 26)
Слайд 17: Реакция на перекрестки
Издать звуковой сигнал на каждом перекрестке При звуковом сигнале без ожидания один перекресток фиксируется несколько раз При длительном ожидании робот может сойти с линии Ожидание не должно превышать 200 мс
Слайд 18: Подсчет перекрестков
Издать звуковой сигнал на каждом перекрестке При звуковом сигнале без ожидания один перекресток фиксируется несколько раз При длительном ожидании робот может сойти с линии Ожидание не должно превышать 200 мс
Слайд 19: Калибровка с понижением для двух датчиков
Краткая калибровка Откуда взято вычитаемое число? Оно определено заранее как половина разности крайних показаний датчика grey1=sensor1-(white1-black1)/2 grey2=sensor2-(white2-black2)/2 Для точной калибровки желательно чистое одноцветное поле вне линии Для надежности следует сделать паузу перед началом движения Ожидание нажатия кнопки
Слайд 20: Реакция на перекрестки
На старте обнулить счетчик перекрестков count=0 Построить цикл с условием по счетчику count На каждом перекрестке увеличивать счетчик (один раз!)
Слайд 21: Действия на перекрестках
На заданном перекрестке count= =3 остановиться и издать звуковой сигнал Для наглядности создать подпрограмму и вызвать ее после увеличения count=count+1 Для действия на другом перекрестке надо добавить в эту программу еще одну проверку условия
Слайд 22: Действия на перекрестках
На 5 перекрестке сбить объект (после сигнала на 3 перекрестке)
Слайд 23: Пропорциональный регулятор: движение по линии с двумя датчиками
Ошибка рассматривается как разность показаний датчиков Нет зависимости от показаний на сером e=sensor1-sensor2
Слайд 24: Пропорциональный регулятор устранение статической ошибки
Датчики могут быть изготовлены с отклонениями Разность показаний на однотонной поверхности - это статическая ошибка До цикла est =sensor1-sensor2 В цикле статическая ошибка устраняется: e=sensor1-sensor2-est
Слайд 25: Подпрограммы
Вытащите первый блок «Подпрограмма» на сцену Назовите её. Блок подпрограммы появится в палитре Двойным щелчком по подпрограмме перейдем к диаграмме её алгоритма
Слайд 26: Реакция на перекрестки
Издать звуковой сигнал на перекрестке Из-за задержки во время сигнала робот может сбиться с линии, поскольку он долго едет вслепую Нужен сигнал без ожидания завершения
Слайд 27: Пропорциональный регулятор: калибровка с ожиданием
Для точной калибровки желательно чистое одноцветное поле вне линии Для надежности следует сделать паузу перед началом движения Ожидание нажатия кнопки Необходимо объявить все переменные в основной программе
Слайд 28: Реакция на перекрестки
Сигнал без ожидания «пиликает» постоянно… Почему? Скорость робота – примерно 30 см/с Ширина линии перекрестка – 3 см На проезд линии робот тратит примерно 100 мс: 3 см / 30 см/с = 0.1 с Значит, он успевает получить команду на сигнал около 100 раз Установим время движения «вслепую» 200 мс – с запасом
Слайд 29: Реакция на перекрестки
Вложенное ветвление – еще один способ проверки перекрестка
Слайд 30: Полная калибровка для двух датчиков
Для точной калибровки отдельно считывается черное, отдельно белое поле Ожидание нажатия кнопки
Слайд 31: Подсчет перекрестков
П-регулятор поместить в отдельную подпрограмму Обнуляем счетчик count и задаем все переменные до программы Повторяем цикл, пока значение счетчика меньше 5 На каждом перекрестке добавляем в счетчик 1 count = count + 1
Слайд 32: Увеличение счетчика
На каждом перекрестке добавляем в счетчик 1 count = count + 1
Слайд 33: Усовершенствованный проезд перекрестка
В начале запоминаем время На каждом перекрестке обновляем время Засчитываем перекресток только через 200 мс
Слайд 34: Действия на перекрестках
Подпрограмма «Действия» добавляется сразу после увеличения счетчика
Слайд 35: Реакция на объект
Подпрограмма «Действия» сдвигает банки на каждом втором перекрестке Условие четности перекрестка: count % 2 == 0