Слайд 1Регуляторы для движения по границе черного и белого
в TRIK Studio
Президентский
физико-математический лицей №239
Сергей Александрович Филиппов
Слайд 2План занятия
Регуляторы
Ветвление
Задача движения по границе
Значение серого
Релейные регуляторы
Двухпозиционный регулятор
Калибровка датчика
Корректировка скорости
Трехпозиционный
регулятор
Слайд 3Регулятор
Регулятор – это совокупность устройств, обеспечивающих желаемое поведение системы.
Поплавковый регулятор
Ползунова,
1765 г.
Центробежный регулятор Уатта,
1788 г.
Слайд 4Ветвление
Ветвление – часть алгоритма, в которой в зависимости от условия
выполняется один или другой набор действий.
Да
Нет
Слайд 5Движение вдоль границы черного и белого
Задача двигаться по границе черного
и белого с помощью датчика освещенности
Значение серого находится на границе
и вычисляется через среднее арифметическое:
grey=(white+black)/2
Для каждого робота свое значение серого, например
grey=25
Калибровка – определение пороговых показаний датчика
25
Слайд 6Тележка с одним датчиком освещенности
1
B
C
Слайд 7Двухпозиционный релейный регулятор
Двухпозиционный релейный регулятор имеет два состояния:
освещенность >
серого,
освещенность ≤ серого.
Двухпозиционный регулятор строится на основе ветвления и
выполняет одно из двух действий:
плавный поворот направо,
плавный поворот налево.
Миллисекунда нужна для отдыха контроллера
Слайд 8Релейный регулятор: движение вдоль границы черного и белого
Движение на релейном
регуляторе слишком неровное: робота заносит
Для стабилизации можно понизить скорость
Или наоборот
повысить
Слайд 9Трехпозиционный релейный регулятор
Рассмотрим окрестность вокруг значения серого ±5 процентов
свет>30
| 30≥свет>20 | свет≤20
белый | серый
| черный
Если показания датчика попадают в окрестность, робот движется прямолинейно – новое действие
Слайд 10Пропорциональный регулятор
В задачах автоматического регулирования управляющее воздействие u обычно является
функцией динамической ошибки – отклонения e регулируемой величины x от
ее заданного значения x0:
e =x0 – x
Пропорциональный регулятор – это устройство, оказывающее управляющее воздействие на объект пропорционально его отклонению от заданного состояния.
u = k·e
Здесь k – это коэффициент усиления регулятора.
Слайд 11Пропорциональный регулятор: движение по линии
Также как и в релейном регуляторе,
необходимо определить среднее значение grey между черным и белым. Это
будет то состояние датчика освещенности sensor1, к которому должна стремиться система.
e = grey - sensor1
Слайд 12Пропорциональный регулятор: калибровка датчика освещенности
Краткая калибровка с понижением, датчик над
белым полем
grey=sensor1-(white-black)/2
Полная калибровка с определением белого и черного
Ожидание нажатия кнопки
Добавить
сигнал с задержкой
Слайд 13Пропорциональный регулятор: калибровка датчика освещенности
Краткая калибровка с понижением, датчик над
белым полем
grey=sensor1-(white-black)/2
Полная калибровка с определением белого и черного
Ожидание нажатия кнопки
Вывод
результата на экран
Слайд 14Движение по линии с двумя датчиками освещенности
Слайд 15Релейный регулятор: движение с двумя датчиками освещенности
Оба на белом –
движение прямо,
левый (sensor1) на черном, правый (sensor2) на белом –
движение налево,
левый на белом, правый на черном – движение направо,
оба на черном – движение прямо.
Слайд 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
Слайд 36Благодарю за внимание!
Сергей Александрович Филиппов
Президентский физико-математический лицей № 239
Санкт-Петербург
safilippov@gmail.com