Статьи

Пропорциональный интегральный дифференциальный ПИД-регулятор в робототехнике Lego Mindstorms. Пропорциональный регулятор.

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



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




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

Пропорциональный интегральный дифференциальный ПИД-регулятор в робототехнике Lego Mindstorms. Релейный регулятор.

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

Робототехника-мультидисциплинарная наука

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

 

     

       Подумаем, какие же научные дисциплины затронет это задание? Первой стадией будет конструирование робота. Допустим, конструировать будем из Lego Mindstorms EV3. Нужно определиться, сколько будет датчиков цвета, определить габариты робота, размер колесной базы и т.д. - оказалось, что первая дисциплина - конструирование. Если бы мы использовали открытые робототехнические платформы - то пришлось бы разбираться с проводами, силой тока, напряжением, - а это микроэлектроника и физика. Какой алгоритм движения мы выберем? От этого напрямую зависит то, сколько датчиков цвета установить. Алгоритм...значит, мы дошли до следуюшей дисциплины - "алгоритмизация". Допустим, мы выбрали пропорциональный регулятор с двумя датчиками цвета. Пропорциональный регулятор? Да это же из теории автоматического управления - еще одной дисциплины (основы которой нужно еще постараться объяснить детям). Итак, робот построен, алгоритм выбран...осталось его запрограммировать - на помощь приходит дисциплина "программирование". Также часто приходится рассчитывать углы поворота робота, скорость движения, сколько оборотов нужно проехать - используем математику. Допустим, нашему роботу не хватает стандартной максимальной скорости, выдаваемой моторами. Придется увеличить скорость с помощью шестеренок - раздел "механика" физики.

       Робототехника является практической инженерной наукой. В чем кроется смысл этого? Если цель теоретической науки - доказательство гипотез, создание теорий, то инженеры должны уместь применять эти знания на практике. Есть практическая задача (и мы говорим не только о робототехнике), и ее нужно решить. Решение задачи опирается на множество фундаментов, именно поэтому нужно иметь широкий технический кругозор.

Пропорциональный интегральный дифференциальный ПИД-регулятор в робототехнике Lego Mindstorms. Применение регуляторов.

  Введение. В мире великое множество самовосстанавливающихся систем, в том числе и технических. И если система создана искусственным образом с помощью человека, иногда требуется, чтобы она сама себя восстанавливала, придерживалась какого-то конкретного "нормального" состояния. В этом нам помогут регуляторы - специальные программные или аппаратные устройства для поддержания системы в состоянии равновесия.   Регуляторы в робототехнике. Где же можно и нужно применять регуляторы в робототехнике? Ярким примером могут служить квадрокоптеры в случае синхронизации скорости вращений моторов.
 Второй пример: роботы-балансиры. Из Lego Mindstorms можно построить Гиробоя. Это робот, который передвигается на двух колесах, балансируя с помощью датчика гироскопа. Сначала робот запоминает свое начальное положение (0 градусов), съезжает с подставки. Если робот откланяется в какую-то сторону, то регулятор выравняет его, заставив проехать в ту же сторону.
 Следующий пример: робот должен строго проехать вперед. Но часто бывает, что одно колесо крутится чуть быстрее другого (или провод мешает, или обо что-то трется, либо особенности моторов). На помощь придет регулятор, который будет выравнивать скорости моторов.
 В продолжении статьи я опишу самый простой регулятор - релейный регулятор. Мы применим его к движению робота по черной линии, проходящей по белому фону, - это самое популярное задание в детской робототехнике.