Меню

Движение по черной линии пид регулятор

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

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

Выходной сигнал регулятора u(t) определяется по следующей формуле:

  • P — пропорциональная составляющая;
  • I — интегрирующая составляющая;
  • D — дифференцирующая составляющая;
  • Kp — пропорциональный коэффициент;
  • Ki — интегральный коэффициент;
  • Kd — дифференциальный коэффициент;
  • e(t) — ошибка рассогласования.

Задачи ПИД-регулятора в системах АСУ ТП

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

Сравнение ПИД —регулятора с позиционным регулированием

В системах АСУ ТП наибольшее распространение получили два типа регуляторов — двухпозиционный и ПИД.

Двухпозиционный регулятор наиболее простой в использовании и широко распространенный. Он сравнивает значение входной величины с заданным параметром уставки. Если значение измеренной величины ниже заданного значения уставки, регулятор включает исполнительное устройство; при превышении заданного значения, исполнительное устройство выключается. Для предотвращения слишком частого срабатывания устройства вследствие колебаний системы и, следовательно, изменении значений, задается минимальный и максимальный порог срабатывания — гистерезис, или по-другому — зона нечувствительности, мертвая зона, дифференциал. Например, нам необходимо поддерживать температуру в 15 °С. Если гистерезис задан 2°, то регулятор будет включать нагрев при 14 и отключать соответственно при 16.

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

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

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

  • фактическая величина,
  • заданное значение,
  • разность,
  • скорость.

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

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

Составляющие ПИД-регулятора

В стандартном ПИД-регуляторе есть три составляющие и каждая из них по своему воздействует на управление.

Пропорциональная P(t)=Kp*e(t)

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

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

Интегральная I(t)=Ki ∫e(t)dt

Интегральная составляющая используется для устранения статической ошибки. Она складывает значение предыдущих ошибок рассогласования и компенсирует их. Можно сказать — учится на предыдущих ошибках. То есть, ошибка рассогласования умножается на коэффициент интегрирования и прибавляется к предыдущему значению интегрирующего звена. При выходе системы на заданный режим, интегральная составляющая перестает изменяться и не оказывает какого-либо серьезного воздействия на систему. Физически интегральная составляющая представляет задержку реакции регулятора на изменение величины рассогласования, внося в систему некоторую инерционность, что может быть полезно для управления объектами c большой чувствительностью.

Дифференциальная D(t)=Kd de(t)/dt

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

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

Методика настройки ПИД-регулятора

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

Объект регулирования — камерная электрическая печь. Число зон регулирования от 24 до 40. Каждая зона есть набор электронагревателей. Материал нагревателей нихром. Тип — проволочные, навитые на керамические трубки. Требование: поддержание температуры по зонам печи ±5 °C.

Настройка пропорциональной компоненты (X p)

Перед настройкой зоны пропорциональности интегральная и дифференциальная компоненты отключаются:

  • Постоянная интегрирования устанавливается минимально возможной (Т и=0).
  • Постоянная дифференцирования минимально возможной (Т д=0).
  • Т ο — начальная температура в системе;
  • Т sp — заданная температура (уставка);
  • ∆T — размах колебаний температуры;
  • ∆t — период колебаний температуры.

Меняем значение пропорциональной составляющей X p от минимума (0) до момента, пока не появятся устойчивые колебания системы с периодом ∆t. Система должна находится в постоянном колебательном процессе, притом колебательный процесс незатухающий, где ∆T — характеристика колебания, равная значению величины рассогласования (±10 °C, или как по заданию). Колебания должны быть одинаковы от Т sp.

Читайте также:  Регулятор температуры для электрогриля

После получения данной кривой на нашем объекте, засекаем время периода колебаний ∆t — полный период. Данное время — характеристика системы, оборудования.

Используя полученные параметры, рассчитываем Т и и Т д.

Зона пропорциональности Коэффициент передачи Постоянная времени интегрирования Постоянная времени дифференцирования
П-регулятор 2⋅PBs 0.5⋅X p
ПИ-регулятор 2.2⋅PBs 0.45⋅X p 0.83⋅ ∆T
ПИД-регулятор 1.67⋅PBs 0.6⋅X p 0.5⋅ ∆T 0.125⋅ ∆T

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

Вывод

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

Источник

Как настроить ПИД-регулятор для гоночного робота?

Конструкторы для обучения детей робототехнике

Что такое ПИД-регулятор? Как сделать расчет рассогласования и обратную связь для движущегося по линии робота? Как не перерегулировать? Рассказывает Вячеслав Нефедов (GoodLancer.com).

Как настроить ПИД-регулятор для гоночного робота?

Абсолютное большинство современных роботов для гонок по линии высокого класса как основу алгоритма движения по линии используют ПИД-регулятор (он же ПИД-контроллер). В то же время для многих юных поклонников робогонок ПИД-регулятор остается сложным и малопонятным механизмом. Давайте попробуем вместе разобраться что такое ПИД-регулятор и как он работает.

Что такое «регулятор»?

Само понятие ПИД-регулятор пришло из теории автоматического управления. Кто читает по-английски, то там эта дисциплина называется control theory. Эта наука занимается исследованием систем автоматического управления, а такие системы мы встречаем на каждом шагу. Автопилоты, системы наведения торпед и ракет, системы управления температурой в химическом производстве, регуляторы положения поглощающих стержней в атомном реакторе, система регулирования температуры в кондиционерах, поплавковый клапан в сливном бачке унитаза — это всё системы автоматического управления.

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

  1. Объект управления — это то, чем управляет система. В случае гоночного робота это сам робот, а точнее, положение робота относительно линии;
  2. Уставка (цель, целевое значение) — это то условие, за соблюдением которого «смотрит» автомат. Для нашего случая целью является то, чтобы робот не отклонялся от линии;
  3. Рассогласование (ошибка, ошибка управления) — это отклонение текущего состояния от желаемого. В нашем случае это отклонение робота от линии;
  4. Датчики — то, чем мы определяем рассогласование. Для гоночного робота это обычно «линейка» — система из датчиков серого (пара светодиод/фототранзистор);
  5. Обратная связь — сигнал с датчиков, ориентируясь на который автомат принимает решение об управляющем воздействии;
  6. Регулятор. Ключевой элемент системы. Именно регулятор «принимает решение» о том что сделать, чтобы система вернулась к цели. В сливном бачке это механическая система, в случае гоночного робота это часть программы, реализующая ПИД-алгоритм;
  7. Управление (управляющее воздействие, корректировка) — это действия, которые принимает система, чтобы вернуться к цели. В нашем случае это изменение скорости моторов робота;
  8. Привод. Это та часть системы, которая реализует управляющее воздействие. В нашем случае это моторы.

Схема ТАУ

Для демонстрации работы ПИД-контроллера дальше мы используем робота нашего клиента Марка из Казахстана.

Расчет рассогласования

Первый расчетный блок в этом перечне — расчет рассогласования. Как пример расчета согласования можно взять такой: считаем, что в нашей линейке датчиков каждый датчик даёт выходной сигнал, например, 200 на белом поле и 1000 на черной линии. В этом случае мы можем считать, что если датчик показывает больше, чем 600, то он находится над линией. Меньше или равно 600 — над белым полем.

Этот алгоритм для системы из восьми датчиков линии на Arduino будет выглядеть примерно так:

float bot_position()
<
int posSum = 0;
int posMedian = 0;
int signal[8];
int signal_corrected;
qtr.read(signal);
for (int i = 0; i 600)
<
signal_corrected = 1;
>
else
<
signal_corrected = 0;
>
posSum += signal_corrected ;
posMedian += signal_corrected ;
>
return posMedian / posSum — 7;
>

Здесь signal — массив для хранения результатов замера сигнала с каждого из восьми датчиков, а qtr.read(signal) — это функция, которая заполняет массив значениями с датчиков. Нетрудно убедиться, что данная функция вернет 0 в том случае, если линия находится точно посередине линейки датчиков и положительное или отрицательное значение — в случае, если робот отклонился вправо или влево.

Это сильно упрощённый расчет рассогласования, который обычно требует большого количества датчиков (8-14 на робогонках). Есть другой вариант — рассчитывать дробное значение положения робота на линии, пользуясь тем, что наш датчик по мере приближения с белого поля к черной линии будет показывать промежуточные значения между 200 и 600. В каких-то ситуациях при такой схеме даже робот с массивом из трёх датчиков линии может показывать хороший результат.

Обратная связь

Второй расчетный блок — обратная связь. Для простого робота обычно обратная связь реализована таким образом — регулятор рассчитывает величину поправки, которая добавляется к скорости одного мотора и вычитается из скорости другого мотора.

Например, задаем среднюю скорость для моторов как ШИМ 150 при 255 — максимальном ШИМ для нашего контроллера. Далее если рассчитанное управление равно 50, то мы к правому мотору добавляем 50 (получаем ШИМ 200), от левого вычитаем 50 (получаем ШИМ 100). В случае, если рассчитанное управление будет отрицательным, -50, то у нас наоборот левый мотор будет двигаться быстрее.

П-регулятор

Буква «П» в названии П-регулятора означает слово «пропорциональный». П-регулятор берет в расчет текущее отклонение робота от линии и рассчитывает управление пропорционально текущему отклонению.

Читайте также:  Схема подключении регулятор генератора бош

Например, наш расчет рассогласования написан таким образом, что смещение робота на пол-датчика в сторону от линии выдает ошибку рассогласования в одну единицу. Т.е. в случае если робот отклонился на полдатчика, то мы получим ошибку 1, если на один датчик, то ошибка будет 2, а если робот сместится на два датчика в сторону, то величина ошибки на выходе у нашей функции bot_position() будет четыре.

В этом случае мы можем написать П-регулятор так:

int avgSpeed = 150; // средняя скорость моторов
int kP = 10; // коэффициент пропорциональной обратной связи
int error; // Это ошибка положения
error = bot_position();
correction = kP * error;
motor1.move(avgSpeed*(1+correction));
motor2.move(avgSpeed*(1-correction));

Здесь функции motor1.move() и motor2.move() будут управлять скоростью левого и правого моторов, от -255 до 255. Видно, что если робот сместится в сторону на полдатчика, то скорости моторов изменятся, один мотор получит на вход ШИМ 165, а другой 135 и робот начнет двигаться по дуге. Представим, что линия под роботом делает резкий поворот и радиус движения робота все равно оказался недостаточным, чтобы вернуться на линию. В этом случае робот скоро сместиться от линии в сторону уже на целый датчик, ошибка станет равна двум, а коррекция — 20. Скорости моторов изменятся и станут равны 180 и 120 соответственно и робот еще активнее попытается вернуться на линию. Т.е. чем резче поворачивает линия под роботом, тем больше робот будет смещаться в сторону и тем больше будет разница скорости между моторами.

Как мы подберем коэффициент kP? Робот с низким kP называется недорегулированным. Такой робот не умеет поворачивать достаточно резко для того, чтобы оставаться на линии. Робот с высоким kP называется перерегулированным. Он начинает «дергаться» и двигаться зигзагами, отклоняясь от линии то вправо, то влево. На видео выше видно, что робот немного перерегулирован — он двигается не «как влитой», а колеблется, причем бывает, что колебаниями линейку отводит влево от линии, несмотря, что робот в этот момент совершает поворот влево. Нормально отрегулированный робот с П-контроллером всегда поворачивает вправо когда нос находится слева от линии и влево — когда нос находится справа от линии, т.к. он «ищет потерянную линию».

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

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

ПД-регулятор

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

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

int prev_error;
void loop(void)
<
int avgSpeed = 150; // средняя скорость моторов
int kP = 10; // коэффициент пропорциональной обратной связи
int kD = 1; // коэффициент дифференциальной обратной связи
int error; // Это ошибка положения
error = bot_position();
correction = kP * error + kD * (error-prev_error);
prev_error = error;
motor1.move(avgSpeed*(1+correction));
motor2.move(avgSpeed*(1-correction));
delay(10);
>

Мы добавили здесь переменную prev_error, расчёт дифференциальной коррекции kD * (error-prev_error), а также задержку в цикле — delay(10). Д-регулятор как видно из формулы, борется с высокой скоростью изменений ошибки. Т.е. он борется с инерцией и с колебаниями, и является обязательным для роботов, которые двигаются с высокими скоростями.

Недостаток Д-регулятора — это то, что в нашем случае он требует задержки в цикле управления. Значение ошибки error в нашем случае меняется редко, надо чтобы робот проехал какое-то расстояние чтобы ошибка изменилась, поэтому если мы задержку не введём, то Д-регулятор будет действовать очень кратковременно, только в тот короткий момент когда робот будет переходить с датчика на датчик. Величина задержки в цикле должна быть достаточной, чтобы за этот момент значение ошибки могло измениться на пару датчиков. Но то, что хорошо для Д-регулятора, то плохо для П-регулятора, который потеряет возможность быстро реагировать на изменение положения робота.

Второй недостаток Д-регулятора — подверженность шумам. Случайные скачки освещенности могут привести к неожиданному его срабатыванию.

Давайте рассмотрим более профессиональный код ПД-регулятора для нашего робота:

int avgSpeed = 150; // средняя скорость моторов
int kP = 10; // коэффициент пропорциональной обратной связи
int kD = 5; // коэффициент дифференциальной обратной связи
int correction;
int err;
int err_arr[] = <0, 0, 0, 0, 0, 0, 0, 0, 0, 0>;
int err_p = -1;
prevErr = bot_position();
void loop(void)
<
err = bot_position();
err_p = (err_p + 1) % 10;
err_arr[err_p] = err;
P = err * KP;
D = (err_arr[err_p] — err_arr[(err_p+11) % 10])*KD;
correction = P + D;
motor1.move(avgSpeed*(1+correction));
motor2.move(avgSpeed*(1-correction));
delay(2);
>

Читайте также:  Схема мощного симисторного регулятора

В данном примере последние десять ошибок хранятся в массиве err_arr и Д-регулятор берет за основу вычисления коррекции разницу между текущим значением ошибки и значением ошибки 20 миллисекунд назад (время цикла 2мс * 10, где 10 — количество элементов в массиве). Д-регулятор позволяет значительно повысить скорость движения робота.

Если значение коэффициента обратной дифференциальной связи слишком велико, то робот с ПД-контроллером начнет «злиться» или «нервничать» — для такого робота характерны высокочастотные колебания, причем если для перерегулированной связи по «П» характерны колебания вправо-влево от желаемого направления движения, то перерегулировка по «Д» приводит к тому, что робот просто «дрожит».

Давайте уменьшим коэффициент kD и мы увидим, что робот стал идти намного ровнее, чем на П-контроллере, более того, теперь мы можем даже уменьшить коэффициент kP и робот все-равно будет успешно проходить трассу. Этот робот может на ПД-контроллере идти более чем вдвое быстрее, чем на П-контроллере.

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

И-регулятор

Обратите внимание на предыдущем видео — робот в повороте движется «на крайних датчиках», сильно смещаясь от середины линии. Это особенность работы П-регулятора, для его корректной работы нужно чтобы робот двигался с ошибкой, а если нет ошибки, то нет и коррекции.

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

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

int avgSpeed = 150; // средняя скорость моторов
int kP = 10; // коэффициент пропорциональной обратной связи
int kD = 5; // коэффициент дифференциальной обратной связи
int kI = 5; // коэффициент интегральной обратной связи
int correction;
int err;
int err_arr[] = <0, 0, 0, 0, 0, 0, 0, 0, 0, 0>;
int err_p = -1;
prevErr = bot_position();
void loop(void)
<
err = bot_position();
err_p = (err_p + 1) % 10;
err_arr[err_p] = err;
P = err * KP;
D = (err_arr[err_p] — err_arr[(err_p+11) % 10])*KD;
int err_sum = 0;
for (int i = 0; i

В этом коде вы уже видите полноценный ПИД-регулятор. Робот с настроенным ПИД-регулятором уже идет посередине линии. А что будет если И-регулятор перенастроить, задать слишком большие значения коэффициента kI? В этом случае I-регулятор будет мешать работать П-регулятору и робот опять начнет дёргаться, как это видно на видео ниже.

Порядок настройки ПИД-регулятора

Обычный порядок настройки робота такой:

  1. На невысокой скорости настраиваем П-регулятор (подбираем значение kP такое, чтобы в самых крутых поворотах робот проходил держа линию близко к своим крайним датчикам). kD и kI при этом равны нулю, т.е. пользуемся чисто П-регулятором;
  2. Повышаем скорость, подбираем значение kD. Если при настройке П-регулятора робот шел без инерции, то значение kP можно не менять. Если робот уже шёл с инерцией, как это обычно бывает у быстрых роботов, то значение kP надо будет понизить — мы это увидим по тому, что робот прекратит сильно отклоняться от линии благодаря помощи Д-регулятора;
  3. Когда ПД-регулятор настроен, то можно подбирать значение I, уменьшая отклонения робота от линии. Значения коэффициентов kD и KP при этом обычно тоже несколько понижаются. И-регулятор полезен для гонок где линия может делать петли. Отклонение робота от прямой при этом чревато выбором ошибочного направления движения. При гонках на трассах без петель зачастую используется ПД-регулятор, так как в общем случае он позволяет развивать более высокую скорость.

Источник



Движение по черной линии с одним датчиком

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

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

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

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

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

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

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

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

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

Смотрите также:

    Новый робот для развлечений » Роботы — игрушки

Расширения Clips » Искусственный интеллект

Источник