Лего ев3 движение по линии

Обновлено: 18.04.2024

Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.

Обращаем Ваше внимание, что c 1 сентября 2022 года вступают в силу новые федеральные государственные стандарты (ФГОС) начального общего образования (НОО) №286 и основного общего образования (ООО) №287. Теперь требования к преподаванию каждого предмета сформулированы предельно четко: прописано, каких конкретных результатов должны достичь ученики. Упор делается на практические навыки и их применение в жизни.

Мы подготовили 2 курса по обновлённым ФГОС, которые помогут Вам разобраться во всех тонкостях и успешно применять их в работе. Только до 30 июня Вы можете пройти дистанционное обучение со скидкой 40% и получить удостоверение.

Нахождение оптимальных коэффициентов усиления PID регулятора для робота lego mindstorms EV3 при движении по чёрной линии

Постников Владимир Викторович, педагог дополнительного образования МБОУ Токарёвской СОШ № 2, post . vladimir _68@ mail . ru

В статье автор делится опытом работы по нахождению оптимальных коэффициентов PID регулятора для робота lego mindstorms EV3 при подготовке к соревнованиям в категории «Движение по чёрной линии» .

Ключевые слова

регуляторы, робототехнические устройства, LEGO MINDSTORMS Education EV3, среда программирования, решение задач, коэффициенты для ПИД-регулятора, рабочие программы.

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

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

Что такое ПИД-регулятор ( PID -контроллер)?

Пропорционально-интегрально-производное (ПИД) управление является наиболее распространенным алгоритмом управления, используемым в промышленности, и является общепринятым в промышленном управлении.

Что стоит за ПИД-контроллером?

Основная идея ПИД-регулятора заключается в считывании датчика, а затем вычислении требуемой выходной мощности привода путем вычисления пропорциональных, интегральных и производных откликов и суммирования этих трех компонентов для вычисления выходной мощности.

Наша цель - сделать так, чтобы робот следовал черной линии как можно быстрее!

Первая часть является пропорциональной. Пропорциональный (P): просто умножает ошибку на пропорциональное усиление (Kp), чтобы получить выход контроллера. В целом, увеличение пропорционального усиления приведет к увеличению скорости реакции системы управления. Однако, если пропорциональное усиление слишком велико, переменная процесса начнет колебаться, и ваша установка станет неустойчивой.

Вторая часть является интегральной.

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

Третья часть - это D, что обозначает производное.

Производное (D): это просто математический термин, означающий скорость изменения. Производный компонент вызывает уменьшение выходной мощности, если переменная процесса быстро увеличивается. Производный ответ пропорционален скорости изменения переменной процесса. Увеличение параметра производного времени - de(t) - заставит систему управления сильнее реагировать на изменения члена ошибки и увеличит скорость общего отклика системы управления.

Изображение для поста

Рис 1. Чистый PID регулятор.

Итак, для начала, вот общая формула для PID:

PID = (целевое значение) kp + (интеграл + ошибка) ki + (ошибка-последняя ошибка ) kd.

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

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

Давайте сразу приступим к выполнению нашего алгоритма для робота LEGO MINDSTORMS EV 3.

Изображение для поста

Наша цель

Рис. 2 - показания датчика цвета в разных положениях, чем меньше отражение света, тем ниже значение датчика.

Если мы найдем центральную точку, мы получим 72 + 8, деленное на 2, и получим 40; давайте подведем немного больше к черной линии и используем число 35.

Значение 35 - это показание датчика освещенности для нашей цели. С этим значением робот должен идеально строго следовать по чёрной линии.

P для пропорционального регулятора

Пропорциональные меры отклонения от целевого пути, который мы установили здесь на 35.

Пропорциональный ( Kp ) измеряет отклонение от целевого пути (ошибка) с помощью датчика освещенности цель = 35 (между черно-белой линией) error_correction = target - sensor_value пропорциональный_гейн = ошибка. кпp_gain = (target - значение). кпкп - произвольное значение

Изображение для поста

Рис 3. Код PID_01.ev3 - P для пропорционального алгоритма (рабочий код)

IP для пропорциональных и интегральных регуляторов

Integral (ki)
Сумма всех значений «error» интеграл = интеграл + ошибка Ки является произвольным значением

Изображение для поста

Рис 4. Код PID_02.ev3 - PI для Пропорционального и Интегрального алгоритма

PID для пропорциональных, интегральных и производных регуляторов

PID = (целевое значение).kp + (интеграл + ошибка).ki + (error-last_error).kd PID = error.kp + интеграл.ки + производная.кд PID = пропорциональный-коэффициент + интеграл-коэффициент + производный-коэффициентPID = p_gain + i_gain + d_gain

Изображение для поста

Рис 5. Код PID_03.ev3 - рабочий код алгоритма PID

Изображение для поста

Мой блок PID

Рис 6. MyBlock: PID

Больше PID теории

Что такое термин замкнутый цикл? Система управления по замкнутому контуру (CLCS) - это процесс считывания датчиков для обеспечения постоянной обратной связи, и вычисление требуемой выходной мощности привода повторяется непрерывно и с фиксированной частотой контура.

Наша цель - настроить ПИД- регулятор для уменьшения перерегулирования в отслеживании эталонов или для улучшения подавления помех на входе установки.

Термин «отклонение от нарушения» используется для того, чтобы описать цель обратной связи. С обратной связью контроллер EV 3 может использовать выходные данные для формирования входных данных системы.

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

Симуляция является важным инструментом для получения правильного PID. ПИД-регулятор смотрит на заданное значение и сравнивает его с фактическим значением переменной процесса (PV).

Режимы контроля

Есть несколько режимов, вот несколько комбинаций:

P - иногда используется

PI - чаще всего используется

PID - иногда используется

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

Настройка ПИД-регулятора.

Процесс установки оптимальных коэффициентов усиления для P, I и D для получения идеального отклика от системы управления называется настройкой.

Чтобы настроить свой PID-контроллер, выполните следующие действия:

1. Установите значения Ki и Kd на ноль, что отключает эти термины и заставляет контроллер действовать как простой P-контроллер.

2. Установите термин Tp на минимальное значение. Для наших моторов значение 25 может стать хорошим местом для старта.

3. Установите термин Kp на «разумное» значение. Что такое «разумный»?

Для нашего робота.

1. Берём максимальное значение, которое мы хотим передать в регулятор мощности двигателя (100), и делим на максимально допустимое значение ошибки. Для нашего робота, следующего за линией, мы предположили, что максимальная ошибка равна 5, поэтому наше предположение для Kp равно 100/5 = 20. При ошибке +5 мощность двигателя будет колебаться на 100 единиц. Когда ошибка равна нулю, мощность двигателя будет находиться на уровне Tp.

2. Или просто установите Kp на 1 (или 100) и посмотрите, что произойдет.

3. Если вы поняли, что все K вводятся в 100 раз больше их действительного значения, вы должны принять это во внимание здесь. 1 вводится как 100, 20 как 2000, 100 как 10000.

4. Запустите робота и посмотрите, что он делает. Если он не может следовать по линии и уходит, тогда увеличьте Kp. Если он сильно колеблется, уменьшите Kp. Продолжайте изменять значение Kp, пока не найдете значение, которое следует за линией и дает заметные колебания, но не очень большие. Мы будем называть это значение Kp - «Kc» («критическое усиление» в литературе по PID).

5. Используя значение Kc в качестве Kp, запустите робот вдоль линии и попытайтесь определить, насколько быстро он колеблется. Это может быть сложно, но, к счастью, измерение не должно быть настолько точным. Период колебаний (Pc) - это время, которое требуется роботу, чтобы переместиться с одной стороны линии на другую, а затем обратно на ту сторону, с которой он начал. Для типичных роботов lego mindstorms ev 3 Pc, вероятно, будет находиться в диапазоне от 0,5 секунды до секунды или двух.

6. Необходимо знать, как быстро робот проходит цикл управления. Установливаем цикл на фиксированное количество шагов (например, 10000) и время, которое требуется роботу, чтобы закончить (или пусть робот выполняет синхронизацию и отображает результат.) Время на цикл ( d Т ) - это измеренное время, разделенное на по количеству петель. Для контроллера с полным PID, написанного на EV 3, dT будет находиться в диапазоне от 0,015 до 0,020 секунд на цикл.

7. Используйте приведенную ниже таблицу для расчета набора значений Kp, Ki и Kc. Если вы просто хотите P-контроллер, используйте строку в таблице, помеченную P, чтобы вычислить «правильный» Kp (Ki и Kd оба равны нулю). Если вам нужен PI-контроллер, используйте следующую строку. Полный ПИД-регулятор является нижней строкой.

8. Если вы поняли, что все K вводятся как 100-кратное их действительному значению, вы не должны принимать это во внимание в этих вычислениях. Этот коэффициент 100 уже учитывается в определенном вами значении Kp = Kc.

9. Запустите робота и посмотрите, как он себя ведет.

10. Настройте значения Kp, Ki и Kd, чтобы получить максимальную производительность. Можно начать с довольно больших настроек, скажем 30%, затем попробовать меньшие настройки, чтобы получить оптимальную (или, по крайней мере, приемлемую) производительность.

11. Как только у вас будет хороший набор коэффициентов K, попробуйте увеличить значение Tp, которое контролирует прямую скорость робота.

12. Повторно настройте коэффициенты K или, возможно, вернитесь к шагу 1 и повторите весь процесс для нового значения Tp.

13. Продолжайте повторять, пока поведение робота не будет оптимальным.

Метод Циглера-Николса, дающий значения K (время цикла считается постоянным и равным dT)

Тип управления

Простые числа (апострофы) на Ki и Kd просто напоминают вам, что они вычисляются, если dT является постоянным, а dT свернуто в значения K.

Вот значения, которые измерены для нашего робота Kc составлял 300, и когда Kp = Kc, робот колебался со скоростью примерно 0,8 секунды на одно колебание, поэтому Pc составлял 0,8. Период колебаний Pc, просто подсчитывается каждый раз, когда робот полностью поворачивался в определенном направлении. Время цикла, dT, составляет 0,014 секунды / цикл, определяемый простым запуском программы для 10000 циклов и отображением времени выполнения EV 3. Используя приведенную выше таблицу для PID-контроллера, получаем:

Kp = (0,60) (Kc) = (0,60) (300) = 180
Ки = 2 (Kp)* (dT) / ( Pc ) = 2 (180)* (0,014) / (0,8) = 6,3 (что округляется до 6 )
Kd = ( Kp )* ( Pc ) / ((8) ( dT )) = (180)* (0,8) / ((8)* (0,014)) = 1286

После дальнейшей пробной и ошибочной настройки конечные значения составили 220, 7 и 500 для Kp, Ki и Kd соответственно. Помните, что все коэффициенты K введены как 100-кратное их действительное значение, поэтому фактические значения равны 2,2, 0,07 и 5.

Как изменения в Kp, Ki и Kd влияют на поведение роботов

Описанные выше таблица и метод являются хорошей отправной точкой для оптимизации нашего PID-контроллера. Иногда это помогает лучше понять, каков будет результат увеличения (или уменьшения) одного из трех Ks. Таблица ниже доступна со многих веб - сайтов.

Эффекты увеличения параметров

Время нарастания

Расчетное время

Ошибка в
равновесии

Неопределенный
(небольшое уменьшение
или увеличение)

«Ошибка в равновесии» - это оставшаяся ошибка, поскольку система работает без помех. Для нашего линейного последователя это будет смещение от линии, поскольку робот следует по длинной прямой линии. Часто контроллеры P и PD приводят к такого рода ошибкам. Его можно уменьшить, увеличив Kp, но это может заставить робота колебаться. Включение члена I и увеличение Ki часто фиксируют контроллер P или PD, который имеет постоянную ошибку в равновесии. (Это предполагает, что вы даже заботитесь о небольшой оставшейся ошибке, когда робот следует за линией. Это просто означает, что она смещена в одну или другую сторону на небольшое количество.)

Как это работает.

Датчики освещенности находятся примерно на 1/2 "над полем и смещены в одну сторону от центральной линии робота. Tp (целевая мощность) была установлена ​​на уровне от 55 до 70%. Программа начинается с поворота робота и поиска самых высоких и самых низких значений освещенности.


ПИД-контроллер должен работать для множества различных проблем управления и, конечно, может использоваться как П или ПИ-контроллер вместо ПИД. Нужно будет придумать новое определение ошибки, и PID должен быть настроен для конкретной задачи.

Контроллер PID (или PI или P) является примером обратной связи.

Существуют расширенные методы настройки ПИД-регулятора.

Удобно запустить программу данных со списком значений Tp, Kp, Ki и Kd. Хорошие данные для регистрации каждый раз, когда выполняется контур ПИД, - это время, ошибка, выход ПИД и угол одной из осей двигателя. Из этих данных можно восстановить интеграл и производную, чтобы их не нужно было регистрировать.

Для нашего ПИД-регулятора экспериментально найдены следующие конечные значения, где дополнительно: Куст – коэффициент устойчивости робота, Pc – период колебания робота относительно траектории движения, см. таблицу 1.

Инструкция для сборки робота ev3 для движения по черной линии

Достаточно простая и эффективная схема робота lego ev3 для движения по черной линии с двумя датчиками. В данной схеме лего представлен переднеприводный робот с большими колесами, это обеспечивает хорошую манёвренность, которая необходима при движении робота ev3 вдоль черной линии. Программа для движения робота ev3 по черной линии
Инструкция сборки робота Lego для движения по черной линии

детали для крепления мотора к роботу ev3

1

крепление мотора ev3

2

крепление мотора ev3

3

крепление датчика к роботу ev3

4

крепление мотора

5

крепление мотора к блоку ev3

6

Анологично собирается правая сторона робота ev3 для движения по черной линии

крепление к блоку ev3 моторов

7

Датчики цвета можно разместить и по другому прикрепив их внутри


8


9

крепление балки

10

Крепим большие колеса через втулку

крепление колес к блоку ev3

11

Детали для крпеления заднего колеса


12

крепление маленького колеса у ev3

13

крепление маленького колеса к ev3

14.

Датчик цвета можно опустить на одно деление для лучшей контрастности


15

Если есть в наборе шаровое колесо , то можно использовать его в качестве заднего колеса

детали для крепления шарового колеса

16


17


18

Крепим провода датчики к портам 1 и 3 мотора к портам A и B


19

Полезно почитать по теме движение по черной линии
Движение по черной линии Ev3
Циклические алгоритмы ev3

На данном уроке мы разберем движение робота Ev3 вдоль черной линии.

Напишем программу для движения робота по черной линии для Lego Ev3. Познакомимся с логическими операциями Ev3.

Для того, чтобы робот Ev3 двигался постоянно вдоль черной линии в программе используется бесконечный цикл в нем происходит считывание данных с датчиков цвета, освещенности, анализ данных датчиков и соответсвующие маневры робота. В нашем роботе левый датчик цвета подключен к порту 3, правый датчик подсоединен к порту 1. Левый мотор подключен к порту В, правый мотор к порту А.

На рисунке показан блок считывания данных с датчика освещенности.


Если значение меньше 5 (знак сравнения 4) , то значит датчиком мы заехали на черную линию.

Если значение больше 5 (знак сравнения 2), то заехали на белое поле

Алгоритм движения по черной линии для робота с двумя датчиками следующий.

Если робот заехал левым датчиком на черную линию, то робот сворачивает (съезжает с линии) налево. Если робот заехал правым датчиком на черную линию, то поворачивает направо. Если обоими датчиками видит белое поле, то робот едет вперёд. Если обоими датчиками он видит чёрную линию, то это перекрёсток, он едет вперёд и съезжает с перекрестка.

Чтобы обрабатывать одновременно данные с нескольких датчиков, необходимо использовать логические операции. Для того чтобы выполнялись оба условия, используется логическая операция И.


Напишем программу для движения вдоль черной линии для робота Ev3.

У нашего робота левый датчик освещенности подключен к порту 3, правый датчик освещенности подключен к порту 1.

1 действие. Считываем данные с датчиков освещенности заходим в яркость, отраженного света Записываем их в логический блок И ( Красный блок)


2 действие. Соединяем логический блок с переключателем, который выставлен в логическое значение.



3 действие. В условие ставим поворот налево. Смотри урок 1 Повороты Ev3

движение робота по черной линии налево

4 Действие. Повторяем считывание датчиков освещенности и логический блок

Значение датчика освещенности 1 становится меньше 5, а датчика с портом 3 больше 5. В этом случае чёрную линию видит правый датчик. Поворот делается направо, поэтому правый мотор (порт А) вращается назад , мощность со знаком минус, а левый мотор (порт B) вращается вперед. Осуществляется поворот направо. В цикле движения выставите не очень большое время порядка 0,1 секунды, чтобы робот реагировал быстрее на изменение траектории.


движение по черной линии

5 действие. Если оба датчика освещенности фиксируют белое поле, то робот движется вперед. Опять считываем данные с обоих датчиков. Ставим в считывании датчиков знак больше, мощность обоих моторов положительная.

движение по черной линии

6 действие. . Если оба датчика освещенности фиксируют чёрную линию, то движемся вперёд. Считывание датчиков, для обоих датчиков ставим меньше 5, для обоих моторов выставляем движение вперед

движение по черной линии

Для изменения скорости движения по черной линии необходимо поменять мощность моторов при движении вперед. Если траектория будет слишком крута и робот будет слетать с черной линии, необходимо уменьшить мощность при движении вперед и увеличить мощность при поворотах.

Вернуться к содержанию Перейти к уроку Движение по линии до перекрестка

На этом уроке мы напишем программу для движения робота ev3 по черной линии с одним датчиком. Движение по черной линии используется на различных соревнованиях, таких как шортрек, евролинии, траектория и других. Мы познакомимся с различными алгоритмами движения по черной линии

Алгоритм движения робота вдоль черной линии с одним датчиком.

В конструкции робота впереди по центру устанавливается датчик освещенности. Робот будет двигаться следующим образом. Если он датчиком заезжает на черную линию, то сворачивает с нее одним мотором, если он датчиком не видит линию, то он сворачивает другим мотором на линию. Робот будет двигаться зигзагами вдоль черной линии

Программа для робота ev3 движение по черной линии с одним датчиком

движение по черной линии

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

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

движение робота по черной линии

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

Вернуться к содержанию Перейти к уроку Движение по черной линии с двумя датчиками

Рассмотрим простейший алгоритм движения по черной линии на одном датчике цвета на EV3.

Данный алгоритм является самым медленным, но самым стабильным.

Робот будет двигаться не строго по черной линии, а по ее границе, подворачивая то влево, то вправо и постепенно перемещаясь вперед.

Алгоритм очень простой: если датчик видит черный цвет, то робот поворачивает в одну сторону, если белый — в другую.

Реализация в среде Lego Mindstorms EV3

В обоих блоках движения выбираем режим «включить». Переключатель настраиваем на датчик цвета — измерение — цвет. В нижней части не забудьте изменить «нет цвета» на белый.

Также, необходимо правильно указать все порты.

Не забудьте добавить цикл, без него робот никуда не поедет.

Проверьте. Для достижения лучшего результата попробуйте изменить значения рулевого управления и мощности.

Алгоритм:

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

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

Более устойчиво алгоритм работает, если использовать моторы с управлением скоростью –100. 100.

В этом случае есть возможность отрегулировать плавность поворота в соответствии с кривизной линии

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

Читайте также: