- Подробности
-
Автор: Коновалов Игорь
Пропорциональный регулятор является усовершенствованием релейного регулятора . Главный минус релейного в том, что ему все равно, насколько текущие значения отличаются от нормального значения датчика. У него только два состояния - либо попытаться повысить значения датчика на определенное постоянное число, если они меньше нормального значения, либо повысить. Из-за этого происходят колебания с постоянной амплитудой, что очень неэффективно.
Намного более логично определять, насколько "далеко" находятся текущие показания от нормальных, и в зависимости от этого менять амплитуду. Чтобы стало более понятно, разберем на примере. Пример, как и в прошлой статье, тот же самый: робот из Lego Mindstorms EV3 едет по черной линии с помощью одного датчика цвета в режиме освещенности.

Робот пытается ехать вдоль границы между белым и черным, а там датчик показывает примерно 50 % освещенности. И чем дальше он от нормального положения, тем больше усилий прилагает робот, чтобы вернуться к 50 %.
Для написания программы воспользуемся терминами "ошибка", "управляющее воздействие".
Ошибка - разность текущего показания датчика и нормального. В нашем случае, если сейчас робот видит 20 % освещенности, то ошибка равна 20-50= -30 %. Знак ошибки указывает, в какую сторону роботу стоит повернуть, чтобы избавиться от ошибки.
Теперь мы должны указать моторам, в какую сторону роботу поворачивать, с какой скоростью и насколько резко. Нужно оказать управляющее воздействие на моторы, под которым подразумевается, насколько резко ему стоит возвращаться к нормальному положению. Управляющее воздействие (UP) рассчитывается как ошибка (error) умноженная на коэффициент пропорциональности (k). Этот коэффициент используется для усиления или уменьшения влияния ошибки на управляющее воздействие. Управляющее воздействие подается в рулевое управление, где устанавливается средняя скорость робота.
Как же настроить коэффициент пропорциональности? Опытным путем подбирать значения, для проезда траектории он может быть, например, от 0,2 до 1,5 в зависимости от скорости и конструкции робота. Если коэффициент слишком большой, то робот будет сильно вилять, если маленький - ехать плавно, но в какой-то момент на повороте съехать из-за недостаточной величины управляющего воздействия.
Напишем две версии программы - с переменными (для тех, кто их уже изучал) и без.


Но и этот регулятор можно усилить с помощью введения пропорциональной и интегральной составляющей, описание будет в следующих статьях. До скорых встреч!
- Подробности
-
Автор: Коновалов Игорь
Эта статья является логическим продолжением статьи о пропорциональном регуляторе . Эта тема уже ни раз поднималась в литературе, но моя цель - объяснить ее понятным языком начинающим преподавателям робототехники и ребятам - самоучкам, у которых либо нет возможности обучаться в кружках робототехники, либо нет желания.
Напомню, регулятор мы применяем к роботу Lego Mindstorms EV3, проезжающего по черной линии с помощью 1 датчика цвета (хотя можно и двумя, суть не поменяется). Можно применить данный регулятор к чему угодно, требующему автоматическое регулирование, меняя датчик цвета на любой другой в зависимости от задачи.

В прошлой статье мы говорили о том, что ошибка - разность текущего показания датчика и нормального (идеального). А что если ввести кроме термина "ошибка" еще и "скорость изменения ошибки", то есть то число, которое показывает, насколько быстро меняется ошибка? Тогда можно было бы придавать роботу дополнительное управляющее воздействие, когда скорость изменения ошибки растет. Когда может возникнуть такая ситуация резкого увеличения скорости ошибки? Приведу наглядный пример: робот спокойно едет по границе между черным и белым, ошибка при этом имеет небольшое значение по модулю, недалеко уходящее от 0, так как текущие показания датчика и идеальные почти одинаковы. Но впереди робота ждет некоторая стрессовая ситуация - поворот трассы на 90 градусов. Ошибка резко возрастет, робот попытается ее исправить и, возможно, проедет нормально. А с помощью дифференциальной составляющей мы можем помочь роботу выравняться, ведь робот сможет распознать стрессовую ситуацию, так как скорость изменения ошибки вырастит.
Разберемся, как же робот сможет посчитать скорость изменения ошибки. Нужно вычесть из текущей ошибки (той, которая посчиталась роботом именно сейчас) прошлую. А что же такое прошлая ошибка? Все просто: это та же текущая ошибка, только на прошлом шаге.
В прошлой статье мы говорили, что нужно использовать коэффициент k для пропорциональной составляющей. Сегодня же мы назовем его k1, так как появляется второй коэффициент (k2) у дифференциальной составляющей. Как его выбрать? Обычно это довольно больше число (относительно k1) в пределах примерно от 2 до 20.
Рассмотрим подробный алгоритм пропорционально-дифференциального регулятора.
(Все действия в цикле)
1) Найти ошибку
2) Пропорциональная составляющая = ошибка * k1
3) Дифференциальная составляющая = (ошибка - старая_ошибка)*k2
4) старая ошибка = ошибка
5) Управляющее воздействие = Пропорц. составл-я + Дифференц. составл-я
6) Управляющее воздействие отправить в рулевое управление.
- Подробности
-
Автор: Коновалов Игорь
В прошлой статье мы обсуждали, зачем нам нужны регуляторы в робототехнике. Сегодня мы рассмотрим самый простой из регуляторов - релейный регулятор. В чем же его задумка? Приведем пример поддержания определенной температуры в помещении с помощью датчика температуры и газового котла. Итак, допустим, мы хотим добиться постоянной температуры воздуха 25 градусов по Цельсию. Регулятор проверяет: если температура меньше, то увеличивает подачу газа, а если больше - то уменьшает. Все очень просто по смыслу и реализации. Но этот релейный регулятор не будет учитывать, какова была разность нормальной и текущей температуры, он просто увеличивает или уменьшает температуру, поэтому будут происходить постоянные колебания температуры.

А теперь применим релейный регулятор к Lego Mindstorms EV3. Одна из самых популярных задач соревновательной робототехники - проезд по черной линии на белом фоне(толщиной примерно 2 см), или наоборот - белой линии на черном фоне. Простой, но малоэффективный метод: метаться от белого к черному или в терминах освещенности - от хорошей освещенности к плохой освещенности.
Если робот видит плохую освещенность (<50%), то поворачивает в одну сторону, если видит хорошую - то в другую. Т.е. робот двигается по волнообразной траектории. Улучшенный регулятор - пропорциональный - мы рассмотрим в следующей статье. До скорых встреч!
- Подробности
-
Автор: Коновалов Игорь
Шестеренки являются составной частью многих механизмов, в том числе и в конструкторе Lego, Lego Mindstorms и Lego Technic. Что же они такого умеют, без чего существование таких механизмов было бы практически невозможным?
Главная функция шестеренок - передача движения. Например, колесо нужно привести в движение с помощью мотора, но расстояние от колеса до мотора не позволяет сделать это напрямую. Почему бы не прикрепить несколько шестеренок в ряд, чтобы "дотянуться" мотором до колеса.
Вторая функция - изменение направления движения. На картинке первая шестеренка крутится в одну сторону, а вторая уже в другую. Третья важная функция - это изменение скорости движения. На картинке две шестеренки. Представим, что главная шестеренка - это левая, она называется ведущая. От нее движение передается ведомой. У ведущей размер больше ведомой, значит у ведомой скорость вырастит (скоро узнаем, во сколько раз). Четвертая функция - изменение тяговой силы. Мощность мотора расходуется на тягу и на силу. Но с увеличением тяги скорость падает, и наоборот. В нашем примере тяговая сила понизилась от большей шестеренки к меньшей.
Как же узнать, на сколько выросла либо уменьшилась скорость (тяговая сила)? На помощь приходит понятие "передаточное число". Это число, которое можно найти либо поделив диаметр ведущей шестеренки на диаметр ведомой, либо поделив количество зубчиков ведущей шестеренки на количество зубчиков ведомой шестеренки. Вторым способом в Lego пользоваться удобнее.
А что если мы захотим поменять скорость еще в большее число раз, чем это позволяют стандартные шестеренки? Тогда нужно соединять их попарно, как это показано на картинке. Тогда общее передаточное число рассчитывается так: 1) Посчитать передаточные отношения в парах. 2) Перемножить все передаточные числа. Надеюсь, статья была полезной!
- Подробности
-
Автор: Коновалов Игорь
Введение. В мире великое множество самовосстанавливающихся систем, в том числе и технических. И если система создана искусственным образом с помощью человека, иногда требуется, чтобы она сама себя восстанавливала, придерживалась какого-то конкретного "нормального" состояния. В этом нам помогут регуляторы - специальные программные или аппаратные устройства для поддержания системы в состоянии равновесия.
Регуляторы в робототехнике. Где же можно и нужно применять регуляторы в робототехнике? Ярким примером могут служить квадрокоптеры в случае синхронизации скорости вращений моторов. 
Второй пример: роботы-балансиры. Из Lego Mindstorms можно построить Гиробоя. Это робот, который передвигается на двух колесах, балансируя с помощью датчика гироскопа. Сначала робот запоминает свое начальное положение (0 градусов), съезжает с подставки. Если робот откланяется в какую-то сторону, то регулятор выравняет его, заставив проехать в ту же сторону.

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

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