движение вдоль стены трик

Движение вдоль стены трик

движение вдоль стены трик

пятница, 26 ноября 2010 г.

Алгоритмы: движение вдоль стены

Не правда ли программа, заданная в качестве задачки на понимание NXT-G в этом посте, похожа на программы, поясняющие движение вдоль линии, в этом?

движение вдоль стены трик
движение вдоль стены трик

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

движение вдоль стены трик

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

движение вдоль стены трик

Кстати, этот вариант ответа (движение вдоль стены) тоже был среди ответов, которые были присланы после публикации задачи.

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

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

Источник

Движение по линии

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

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

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

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

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

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

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

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

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

Алгоритм:

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

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

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

Источник

Робототехника ТРИК. Движение вдоль стены

движение вдоль стены трик

движение вдоль стены трик

Движение вдоль стены с мячами созданные на платформе TRIK Studuo. #trikset, #TRIKStuduoПодробнее

движение вдоль стены трик

Движение вдоль стены созданное в среде программирования TRIK Studuo. #trikset, #TRIKStuduoПодробнее

движение вдоль стены трик

Движение робота вдоль стены с мячами и банками. Программирование в TRIK Studuo. #TRIKStuduoПодробнее

движение вдоль стены трик

Движение по линии с одним датчиком света в программе TRIK STUDIOПодробнее

движение вдоль стены трик

Движение вдоль стены (П-регулятор)Подробнее

движение вдоль стены трик

Урок 11. Элементы навигацииПодробнее

движение вдоль стены трик

Урок 1. Элементарные действия / Программирование в TRIK StudioПодробнее

движение вдоль стены трик

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

движение вдоль стены трик

ПД- регулятор для движения вдоль контрастной линии. Практика (Lego EV3, Small Basic).Подробнее

движение вдоль стены трик

Робототехника ТРИК: движение по линии с двумя датчиками освещенностиПодробнее

движение вдоль стены трик

Движение по линии, П-регулятор. Программирование Lego Maindstorms EV3Подробнее

движение вдоль стены трик

Часть 3. ТРИК StudioПодробнее

движение вдоль стены трик

Движение по кругу программирование LEGO EV3Подробнее

движение вдоль стены трик

Урок 11. Элементы навигации / Программирование в TRIK StudioПодробнее

движение вдоль стены трик

Движение робота вдоль стенкиПодробнее

движение вдоль стены трик

Дистанционная робототехника. ПД-регулятор в TRIK studioПодробнее

движение вдоль стены трик

8. УЛЬТРАЗВУКОВОЙ ДАТЧИК LEGO EV3 Classroom 2021. Программирование с нуляПодробнее

движение вдоль стены трик

прохождение лабиринта в TRIK StudioПодробнее

движение вдоль стены трик

Использование датчика касания в TRIK StudioПодробнее

Источник

Движение вдоль стены робота кратко

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

движение вдоль стены трик

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

Если какие-то из составляющих не используются, то регулятор называют пропорционально-интегральным,пропорционально-дифференциальным, пропорциональным и т. п.

Общие сведения

Пропорциональная составляющая

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

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

Интегральная составляющая

Интегральная составляющая пропорциональна интегралу от отклонения регулируемой величины. Ее используют для устранения статической ошибки. Она позволяет регулятору со временем учесть статическую ошибку.

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

Дифференциальная составляющая

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

Теория

Выходной сигнал регулятора u определяется тремя слагаемыми:Назначение ПИД-регулятора — в поддержании заданного значения x0 некоторой величины x с помощью изменения другой величины u. Значение x0 называетсязаданным значением (или уставкой, в технике), а разность e = (x0 − x) — невязкой (или ошибкой [регулирования], в технике), рассогласованием или отклонением величины от заданной.

движение вдоль стены трик,

где Кp, Кi, Кdкоэффициенты усиления пропорциональной, интегральной и дифференциальной составляющих регулятора, соответственно.

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

движение вдоль стены трик

В дискретной реализации метода расчета выходного сигнала уравнение принимает следующую форму:

движение вдоль стены трик,

движение вдоль стены трик

В программной реализации для оптимизации расчетов переходят к рекуррентной формуле:

движение вдоль стены трик

движение вдоль стены трик

Часто в качестве параметров ПИД-регулятора используются:

движение вдоль стены трик

движение вдоль стены трик

движение вдоль стены трик

Следует учитывать, что термины используются по-разному в различных источниках и разными производителями регуляторов.

Ссылки

Не правда ли программа, заданная в качестве задачки на понимание NXT-G вэтом посте, похожа на программы, поясняющие движение вдоль линии, в этом?

движение вдоль стены трик
движение вдоль стены трик

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

движение вдоль стены трик

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

движение вдоль стены трик

Кстати, этот вариант ответа ( движение вдоль стены ) тоже был среди ответов, которые были присланы после публикации задачи.

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

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

Решение этой проблемы, традиционно, не одно. Оно может быть как программным, так и конструкторским. Например, можно не фиксировать датчик жестко, а поставить его на мотор.
движение вдоль стены трик
Таким образом, после поворота робота, скажем, налево, сенсор расстояния поворачивается, стараясь быть направленным прямо на стену. А при повороте направо, мотор поворачивает сенсор в другую сторону:

движение вдоль стены трикдвижение вдоль стены трик

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

5.1.7. Движение вдоль стенки

движение вдоль стены трик

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

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

Осталось определить, чему будет равно управляющее воздействие. Это нетрудно:

движение вдоль стены трик

Таким образом, при движение вдоль стены трикробот не меняет курса и едет прямо. В случае отклонения его курс корректируется. Здесь движение вдоль стены трик— это некоторый усиливающий коэффициент, определяющий воздействие регулятора на систему. Для робота NXT средних размеров коэффициент k может колебаться от 1 до 10 в зависимости от многих факторов. Предлагаем подобрать его самостоятельно.

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

5.1.8. Пропорционально-дифференциальный регулятор

движение вдоль стены трик

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

движение вдоль стены трик

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

движение вдоль стены трик

где движение вдоль стены трик— текущее расстояние до стенки, движение вдоль стены трик— расстояние на предыдущем шаге.

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

движение вдоль стены трик

Таким образом, ПД-регулятор описывается формулой из двух слагаемых

движение вдоль стены трик

Можно показать, что для устойчивого достижения цели коэффициент движение вдоль стены трикпри дифференциальной составляющей должен превышать движение вдоль стены трик(см. ниже статью «Элементы теории автоматического управления в школе»).

Алгоритм движения вдоль стенки на ПД-регуляторе в целом будет выглядеть так:

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

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

Источник

Робот движение вдоль стены

С глубокой древности лабиринты несли ощущение тайны и загадки. Один из первых лабиринтов, известных человечеству, описывает Геродот — это был египетский Лабиринт, в котором было 5000 комнат. Со временем лабиринты утратили свое религиозно-мистическое значение и стали объектами развлечений, превратившись в сады и парки в виде зеленых изгородей сложной конфигурации.

Разгадывание лабиринтов всегда являлось увлекательнейшим занятием, но еще более увлекательным является создание машин, способных пройти Лабиринт.

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

Попробуем описать робота, действующего в соответствии с правилом «правой руки».

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

После того как робот наткнулся на препятствие, он начинает передвигаться в соответствии с правилом «правой руки».

Двигаясь вдоль стены, робот следит, есть ли проход справа. Если проход есть, робот должен идти по нему, чтобы не оторваться от стены справа.

Если прохода нет — впереди стена — робот поворачивает налево. Если прохода снова нет, он еще раз поворачивает налево, таким образом разворачиваясь на 180 градусов, и идет в обратном направлении.

Блок-схема алгоритма для робота, работающего по правилу «правой руки», представлена на рисунке.

Диалект языка Лого, который мы будем использовать, очень прост и похож на Basic. Познакомиться с командами языка можно здесь. А бесплатно скачать среду программирования GameLogo — здесь. Размер дистрибутива невелик — всего 1 Mb.

В архиве с GameLogo есть фоны с лабиринтами, одним из которых мы и воспользуемся.

В самом начале программы дадим команду черепахе, чтобы она подняла перо (по умолчанию черепаха оставляет после себя след).

Размер поля — 800 на 600 точек. Исходное положение для черепахи находится в месте с координатами 115, 545 (белый квадрат).

Цвет дорожек лабиринта — светлый, на них датчик будет принимать значения больше 50. Цвет стен лабиринта — темный, значение датчика будет меньше 50. Выход из лабиринта представлен черным квадратом, значение датчика над которым будет равно 0.

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

Напишем программу и запустим ее с помощью большой красной кнопки с надписью «Выполнить».

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

Если же лабиринт содержит отдельно стоящие стенки, то, применяя правило «одной руки», не всегда можно пройти все коридоры и тупики. Лабиринты с отдельно стоящими стенками и с замкнутыми маршрутами называются многосвязными. При этом многосвязные лабиринты можно разделить на две группы: без «петли» вокруг цели (замкнутый маршрут не проходит вокруг цели) и с замкнутой «петлей» вокруг цели (цель можно обойти по замкнутому маршруту).

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

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

Тремо предлагает следующие правила: выйдя из любой точки лабиринта, надо сделать отметку на его стене (крест) и двигаться в произвольном направлении до тупика или перекрестка; в первом случае вернуться назад, поставить второй крест, свидетельствующий, что путь пройден дважды — туда и назад, и идти в направлении, не пройденном ни разу, или пройденном один раз; во втором — идти по произвольному направлению, отмечая каждый перекресток на входе и на выходе одним крестом; если на перекресте один крест уже имеется, то следует идти новым путем, если нет — то пройденным путем, отметив его вторым крестом.

Зная алгоритм Тремо, можно скорректировать поведение легендарного Тесея. Вдохновленный подарком любимой Ариадны, он уверенно идет по лабиринту. Вдруг перед ним возникает ход, по которому уже протянута нить. Что делать? Ни в коем случае не пересекать ее, а вернуться по уже известному пути, сдваивая нить, пока не найдется еще один непройденный ход.

Применив вариант алгоритма Тремо, отец теории информации Клод Шеннон (Claude Elwood Shannon) построил одного из первых самообучающихся роботов. Шеннон дал ему звучное имя «Тесей», но в истории «Тесей» стал больше известен как «мышь» Шеннона. «Мышь» сначала обследовала весь лабиринт, а затем (во второй раз) проходила весь путь значительно быстрее, избегая участков, пройденных дважды.

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

На первой Российской Олимпиаде Роботов проводились соревнования, целью которых было прохождение своеобразного лабиринта: за наиболее короткое время, двигаясь через «открытые двери» в стенках, робот должен был добраться от места старта до места финиша. Контролировать свое движение робот мог по черным линиям, нанесенным на пол лабиринта.

Релейный регулятор

Пример 9.1. Движение робота вдоль стены.

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

Следует заранее продумать положение датчика ультразвука. Как упоминалось выше (см. с. 38), этот датчик медленный. Поэтому его следует располагать чуть впереди корпуса робота. Кроме этого, его следует сместить как можно дальше от стены (см. Рис. 9.1), потому что на малых расстояниях (5 — 7 см) показания датчика ультразвука становятся слишком неточными. Далее мы увидим, что направление датчика также следует подкорректировать.

движение вдоль стены трик

Алгоритм движения робота, записанный в словесной форме, может быть примерно таким (Рис. 9.2):

движение вдоль стены трик

Одним из самых очевидных решений этой задачи является релейный регулятор.

Для определённости примем в качестве заданного расстояния 20 см. Получим следующую программу (Рис. 9.3):

движение вдоль стены трик

Как видно из текста программы, после включения обоих моторов запускается бесконечный цикл, в котором реализован вышеописанный словесный алгоритм. Хорошо заметной особенностью этого подхода является «рыскающее» движение: робот всегда поворачивает с одной и той же интенсивностью, независимо от того, насколько далеко или близко он оказался по отношению к стене. Поэтому траектория всегда будет зигзагообразной, так как во время поворотов робот всегда будет «прыгать» вокруг среднего значения 20 см. Так как датчик ультразвука является «медленным», в цикле используется небольшая задержка (0,1 с) для того, чтобы показания датчика успевали обрабатываться блоком NXT. Величина задержки фактически определяет время, в течение которого робот будет двигаться в неизменном направлении. Другими словами, увеличивая время задержки мы получим более крупные «зубцы» траектории. Как отмечалось ранее, делать задержку меньше 0,06 с не имеет смысла, потому что в этом случае датчик ультразвука просто не успеет провести измерения.

При использовании релейного регулятора возможны частые уходы робота с дистанции. Одна из причин состоит в том, что при выбранном нами расположении датчика ультразвука робот не сможет различать положения, симметричные относительно нормального положения. То есть два положения, показанные на Рис. 9.4 будут идентичными, и расстояние до стены в обоих случаях окажутся больше 20 см. В соответствии с вторым шагом алгоритма робот должен повернуть к стене (влево). И если для второго положения это верно, то для первого — ошибочно: робот ещё больше уйдёт с трассы.

движение вдоль стены трик

Эту проблему можно решить, если расположить датчик не перпендикулярно к направлению движения (т. е. строго влево), а под углом 45° к направлению движения (Рис. 9.5).

движение вдоль стены трик

Так нам удастся избежать случая, показанного на Рис. 9.4. Действительно, при подруливании влево расстояние до стены будет (при небольших углах поворота U(t) на моторы робота в момент времени t вычисляется по формуле:

Очевидно, графиком для расчёта управляющего воздействия U в зависимости от ошибки E будет прямая (см. Рис. 9.6):

движение вдоль стены трик

движение вдоль стены трик

Ошибка может быть как положительная (если мы ближе к стене, чем надо), так и отрицательная (если мы отъехали от стены дальше, чем необходимо). Таким образом, управляющее воздействие U(t) тоже может быть как положительным, так и отрицательным.

Пусть мы имеем P-регулятор для робота, движущегося вдоль стены. Тогда мощность моторов PowerB(t) и PowerC(t) в момент времени t вычисляется по формулам:

Реализуем алгоритм P-регулятора согласно приведённым формулам при помощи вложенных процедур ( My blocks ) на языке NXT-G.

Блок Error на языке NXT-G выглядит так:

движение вдоль стены трик

движение вдоль стены трик

Этот блок мы используем для разработки блока P-регулятора. Он будет иметь следующие параметры:

движение вдоль стены трик

Наконец, полная программа, реализующая бесконечное движение вдоль стены, получается с использованием блока P-регулятора и формул (9.2) и (9.3):

движение вдоль стены трик

Задание 9.4. Реализуйте предложенный алгоритм движения вдоль стены с использованием P-регулятора. Проверьте его работу. Настройте регулятор при помощи подбора коэффициента движение вдоль стены трик.

Задание 9.5. Реализуйте алгоритм следования по линии с использованием P-регулятора. Настройте регулятор, добиваясь наиболее уверенного прохождения роботом крутых поворотов.

Задание 9.6. Проведите соревнование в своей группе да скоростное прохождение трассы.

Задание 9.7. После того, как робот стал двигаться по линии более или менее уверенно, попробуйте (1) увеличить подобранный коэффициент движение вдоль стены триквдвое; (2) уменьшить подобранный коэффициент движение вдоль стены триквдвое. Как изменяется характер движения робота? Удаётся ли ему пройти трассу? Какие участки наиболее проблемны?

Задание 9.8. Реализуйте алгоритм следования за рукой с использованием P-регулятора (см. задание 5.4 на с. 63). Настройте регулятор так, чтобы движение робота стало как можно более плавным.

Тем не менее, использование P-регулятора не позволяет решить задачу полностью: движение робота будет сильно зависеть от его конструкции, настроек регулятора и пр. Чтобы движение стало ещё стабильнее, нужно обратиться к более интеллектуальным алгоритмам. В первую очередь здесь следует назвать пропорционально-дифференциальный (PD) и пропорционально-интегрально-дифференциальный (PID) регуляторы. В настоящем пособии начального уровня указанные алгоритмы изучаться не будут. Интересующихся мы отсылаем к книге С. А. Филиппова [6], где подробно рассмотрены эти и другие интереснейшие задачи.

движение вдоль стены трик

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

Если какие-то из составляющих не используются, то регулятор называют пропорционально-интегральным,пропорционально-дифференциальным, пропорциональным и т. п.

Содержание

Общие сведения

Пропорциональная составляющая

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

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

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

Интегральная составляющая

Интегральная составляющая пропорциональна интегралу от отклонения регулируемой величины. Её используют для устранения статической ошибки. Она позволяет регулятору со временем учесть статическую ошибку.

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

Дифференциальная составляющая

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

Теория

Выходной сигнал регулятора u определяется тремя слагаемыми:Назначение ПИД-регулятора — в поддержании заданного значения x некоторой величины x с помощью изменения другой величины u. Значение x называетсязаданным значением (или уставкой, в технике), а разность e = (x − x) — невязкой (или ошибкой [регулирования], в технике), рассогласованием или отклонением величины от заданной.

движение вдоль стены трик,

где Кp, Кi, Кdкоэффициенты усиления пропорциональной, интегральной и дифференциальной составляющих регулятора, соответственно.

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

движение вдоль стены трик

В дискретной реализации метода расчета выходного сигнала уравнение принимает следующую форму:

движение вдоль стены трик,

где движение вдоль стены трик— время дискретизации. Используя замену движение вдоль стены трикможно записать:

движение вдоль стены трик

В программной реализации для оптимизации расчетов переходят к рекуррентной формуле:

движение вдоль стены трик

движение вдоль стены трик

Часто в качестве параметров ПИД-регулятора используются:

движение вдоль стены трик

движение вдоль стены трикдвижение вдоль стены трик

Следует учитывать, что термины используются по-разному в различных источниках и разными производителями регуляторов.

Ссылки

Не правда ли программа, заданная в качестве задачки на понимание NXT-G вэтом посте, похожа на программы, поясняющие движение вдоль линии, в этом?

движение вдоль стены трик
движение вдоль стены трик

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

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

движение вдоль стены трик

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

движение вдоль стены трик

Кстати, этот вариант ответа (движение вдоль стены) тоже был среди ответов, которые были присланы после публикации задачи.

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

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

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

Решение этой проблемы, традиционно, не одно. Оно может быть как программным, так и конструкторским. Например, можно не фиксировать датчик жестко, а поставить его на мотор.
движение вдоль стены трик
Таким образом, после поворота робота, скажем, налево, сенсор расстояния поворачивается, стараясь быть направленным прямо на стену. А при повороте направо, мотор поворачивает сенсор в другую сторону:

движение вдоль стены трикдвижение вдоль стены трик

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

5.1.7. Движение вдоль стенки

Решим такую задачу. Робот должен двигаться вдоль стенки на заданном расстоянии L. Предположим, что левое колесо робота управляется мотором В, правое — мотором С, а датчик расстояния, подключенный к порту 1, закреплен несколько впереди корпуса тележки (это важно!) и направлен на стенку справа по ходу движения.

движение вдоль стены трик

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

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

Осталось определить, чему будет равно управляющее воздействие. Это нетрудно:

движение вдоль стены трик

Таким образом, при движение вдоль стены трикробот не меняет курса и едет прямо. В случае отклонения его курс корректируется. Здесь движение вдоль стены трик— это некоторый усиливающий коэффициент, определяющий воздействие регулятора на систему. Для робота NXT средних размеров коэффициент k может колебаться от 1 до 10 в зависимости от многих факторов. Предлагаем подобрать его самостоятельно.

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

5.1.8. Пропорционально-дифференциальный регулятор

движение вдоль стены трик

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

движение вдоль стены трик

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

движение вдоль стены трик

где движение вдоль стены трик— текущее расстояние до стенки, движение вдоль стены трик— расстояние на предыдущем шаге.

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

движение вдоль стены трик

Таким образом, ПД-регулятор описывается формулой из двух слагаемых

движение вдоль стены трик

Можно показать, что для устойчивого достижения цели коэффициент движение вдоль стены трикпри дифференциальной составляющей должен превышать движение вдоль стены трик(см. ниже статью «Элементы теории автоматического управления в школе»).

Алгоритм движения вдоль стенки на ПД-регуляторе в целом будет выглядеть так:

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *