• Что можно приготовить из кальмаров: быстро и вкусно

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

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


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

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

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

    В нашем примере будет разобрано три примера робота на основе основной учебной модели Robot Educator.

    Для начала, собираем базовую модель учебного робота Robot Educator, для этого можно использовать инструкцию в программном обеспечении MINDSTORMS EV3.

    Так же, для примеров нам понадобятся, датчики света-цвета EV3. Эти датчики света, как никакие другие, наилучшим образом подходят для нашей задачи, при работе с ними, нам не придётся забоится о интенсивности окружающего света. Для этого датчика, в программах мы будем использовать режим отражённого света, при котором оценивается количество отражённого света красной подсветки датчика. Границы показаний датчика 0 - 100 единиц, для «отсутствия отражения» и «полного отражения» соответственно.

    Для примера мы разберём 3 примера программ для движения по чёрной траектории изображённой на ровном, светлом фоне:

    · Один датчик, с П регулятором.

    · Один датчик, с ПK регулятором.

    · Два датчика.

    Пример 1. Один датчик, с П регулятором.

    Конструкция

    Датчик света устанавливается на балку, удобно расположенную на модели.


    Алгоритм

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


    Так как на реальной траектории датчик формирует значения во всём своём рабочем диапазоне (0-100), то значением к которому стремиться робот, выбрано 50. В этом случае значения передаваемые функции поворота формируются в диапазоне -50 - 50, но этих значений недостаточно для крутого поворота траектории. По этому следует расширить диапазон в полтора раза до -75 - 75.

    В итоге, в программе, функция калькулятора является простым пропорциональным регулятором. Функция которого ((a-50)*1.5 ) в рабочем диапазоне датчика света формирует значения поворота в соответствии с графиком:

    Пример работы алгоритма

    Пример 2. Один датчик, с ПK регулятором.

    Этот пример составлен на той же конструкции.

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

    К нашему пропорциональному регулятору мы добавляем ещё и простой кубический регулятор, который добавит изгиб в функции регулятора. Это позволит уменьшить раскачивание робота рядом нужной границей траектории, а так же совершать более сильные рывки при сильном удалении от неё

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

    Общая теория и конкретные примеры создания программы описаны на сайте wroboto.ru

    Опишу, каким образом мы это реализуем в среде EV3, поскольку есть отличия.

    Первое, что необходимо знать роботу – значение “идеальной точки”, расположенной на границе черного и белого.

    Расположение красной точки на рисунке как раз соответствует этой позиции.

    Идеальный вариант расчета – измерить значение черного и белого и взять среднее арифметическое.

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

    Значит, можно заставить это делать робота.

    В ходе экспериментов мы выяснили, что измерять и черное, и белое необязательно. Можно измерить только белое. А значение идеальной точки рассчитывается как значение белого, деленное на 1,2 (1,15), в зависимости от ширины черной линии и скорости движения робота.

    Рассчитанное значение нужно записать в переменную, чтобы потом обращаться к нему.

    Расчет “идеальной точки”

    Следующий параметр, участвующий в движении – коэффициент поворота. Чем он больше, тем резче робот реагирует на изменение освещенности. Но слишком большое значение приведет к “вилянию” робота. Значение подбирается экспериментально индивидуально для каждой конструкции робота.

    Последний параметр – базовая мощность моторов. Она влияет на скорость движения робота. Увеличение скорости движения приводит к увеличению времени реагирования робота на изменение освещенности, что может привести к вылету с траектории. Значение тоже подбирается экспериментально.

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

    Коэффициент поворота и базовая мощность

    Логика движения по черной линии такова: измеряется отклонение от идеальной точки. Чем оно больше, тем сильнее робот должен стремиться вернуться к ней.

    Для этого высчитываем два числа – значение мощности каждого из моторов В и С по отдельности.

    В виде формул это выглядит так:

    Где Isens – значение показаний датчика освещенности.

    Наконец, реализация в EV3. Удобнее всего оформить в виде отдельного блока.

    Реализация алгоритма

    Именно такой алгоритм был реализован в роботе для средней категории WRO 2015

    Робототехника — новое интересное направление, которое, по-видимому, будет дальше развиваться в рамках школьных курсов информатики и технологии. Бум робототехники во многом связан с тем, что она позволяет ответить на вопрос: »А зачем же мы, собственно, учим программирование?». Кроме того, в курсе робототехники можно познакомиться с элементарными понятиями теории автоматического управления.

    На этой странице представлены разработанные автором тренажёры для программирования и платы Arduino . Они могут помочь в тех случаях, когда по каким-то причинам нет возможности использовать реальное аппаратное обеспечение.

    Тренажёры используют возможности HTML5, поэтому будут работать только в современных браузерах (лучше всего использовать Google Chrome или Mozilla Firefox ).

    Новости теперь и в Telegram-канале

    27 ноября 2015 г.
    В тренажёры добавлена трасса «зародыш» (М.В. Лазарев , г. Орехово-Зуево).

    13 октября 2015 г.
    Теперь в тренажёрах для LEGO-робота можно загружать свои трассы (поля для робота). Как это сделать? Смотрите .
    Добавлены новые тренажёры — LEGO-роботы с двумя , тремя , четырьмя датчиками освещённости.

    Язык управления роботами

    Для управления роботами в тренажёрах используется простой язык программирования, который получил рабочее название SiRoP (Simple Robot Programming ).

    Управление роботом с датчиком освещённости

    Датчик освещённости позволяет роботу ориентироваться на поверхности стола, например, ехать вдоль границы между белой и чёрной областями (по краю чёрной линии). Фотодиод подсвечивает поверхность, фотоприёмник «ловит» отражённые лучи и измеряет их интенсивность.

    Наиболее популярная задача этого типа — движение по линии. С помощью тренажёра можно изучить различные законы управления — релейный, пропорциональный, и даже ПИД-управление (пропорционально-интегрально-дифференциальное).

    Примеры программ для робота с датчиком освещённости

    Пока 1 { если датчик > 128 { мотор = 100 мотор = 0 } иначе { мотор = 0 мотор = 100 } ждать(10) }

    KP = 0.2 пока 1 { u = kP*(датчик-128) мотор = 50 + u мотор = 50 - u ждать(20) }

    Main { пока 1 { пока датчик > 128 { мотор = 100 мотор = 100 ждать(10) } назад() поворот() } } назад { мотор = -100 мотор = -100 ждать(260) } поворот { мотор = -50 мотор = 50 ждать(50) }

    Управление роботом с двумя датчиками освещённости

    Два датчика освещённости позволяют роботу лучше ориентироваться и ехать вдоль тонкой линии. Они вынесены немного вперед и разведены в стороны. Как и для задач с одним датчиком, c помощью этого тренажёра можно изучать различные законы управления.

    Примеры программ для робота с тремя датчиками освещённости

    Управление роботом с четырьмя датчиками освещённости

    Четыре датчика освещённости позволяют роботу лучше определять крутые повороты. Внутренние датчики служат для тонкой регулировки, для них используется пропорциональное регулирование. Два внешних датчика вынесены немного вперед и разведены в стороны. Они используются тогда, когда встречается крутой поворот. Коэффициент усиления для управления по показаниям датчиков внешней пары выбирается больше, чем для внутренней пары (см. Л.Ю. Овсяницкая и др., Алгоритмы и программы движения робота Lego Mindstorms EV3 по линии , М.: «Перо», 2015).

    Примеры программ для робота с четырьмя датчиками освещённости

    Пока 1 { d0 = датчик > 128 d1 = датчик > 128 d2 = датчик > 128 d3 = датчик > 128 если d1 & !d2 { мотор = 100 мотор = 0 } если!d1 & d2 { мотор = 0 мотор = 100 } если d1 == d2 { мотор = 100 мотор = 100 } если d0 & !d3 { мотор = 30 мотор = 0 } если!d0 & d3 { мотор = 0 мотор = 30 } ждать(10) }

    K1 = 0.2 k2 = 0.4 пока 1 { u1 = датчик - датчик u2 = датчик - датчик мотор = 50+k1*u1+k2*u2 мотор = 50-k1*u1-k2*u2 ждать(10) }

    Управление роботом с датчиком расстояния (сонаром)

    Датчик расстояния (сонар) позволяет во время движения робота определить расстояние до ближайшего препятствия. Он излучает ультразвуковой сигнал и принимает отражённый сигнал. Чем больше время между излучённым и принятым сигналами, тем больше расстояние.

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