четверг, 7 февраля 2013 г.

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

1. Движение по линии с одним датчиком освещенности на ПД-регуляторе
Задача движения по линии оптимальным образом решается именно с помощью ПД-регулятора. Однако эффект от него проявляется только на больших скоростях, когда робота начинает сносить с линии. Чтобы добиться такой скорости, необходимо увеличить диаметр колес и даже поставить повышенную передачу.
На примере в качестве среднего черного взято число 48. Базовая скорость моторов установлена 80. Пропорциональный коэффициент k1=3, дифференциальный k2=10.

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


2. Кубическая составляющая для движения с двумя датчиками
Глядя на результат применения регулятора при движении по линии с двумя датчиками, можно заметить, что робот показывает лучшее время, если на прямолинейных участках движется с малыми отклонениями, а на изгибах поворачивает резко.
В чем достоинства кубического регулятора? Во-первых, он позволяет "разгрузить" пропорциональную составляющую, понизив ее коэффициент. При малых отклонениях "куб" практически не оказывает влияния на движение. Зато на поворотах кубическая составляющая стремительно вырастает из своего пониженного коэффициента.

понедельник, 4 февраля 2013 г.

Пропорциональный регулятор

Пропорциональный регулятор - это устройство, оказывающее управляющее воздействие u(t) на объект пропорционально его линейному отклонению e(t) от заданного состояния x0(t);
e(t)=x0(t)-x(t), где x(t) - состояние в данный момент времени;
u(t)=ke(t), где k - усиливающий коэффициент.
То есть, чем дальше робот отклоняется от заданного курса, тем активнее должны работать моторы, выравнивая его.

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

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

Вот это и поможет построить П-регулятор.
Определяя состояние работа как показания датчика освещенности, научимся оказывать пропорциональное управляющее воздействие на моторы по следующему закону:
e=s1-grey, где s1 - текущие показания датчика, а grey - заданное значение.
Коэффициент k (равный в данном примере 2) должен быть достаточно мал (от 1 до 3). Такой регулятор эффективно работает только для малых углов отклонения, поэтому робота надо ставить в направлении движения так, чтобы датчик оказался по левую сторону от черной линии. Нетрудно заметить, что движение по линии на П-регуляторе отличается плавность, и на некоторых участках работ движется практически прямолинейно или точно повторяя изгибы линии.

Калибровка датчика

Обратимся к числу 48, использованному в формуле. Это среднее арифметическое показание датчика освещенности на черном и на белом, например (40+56)/2=48. Однако показания датчиков часто меняются по разным причинам: другая поверхность, изменение общей освещенности в помещении, небольшая модификация конструкции и т.п. Поэтому проведем калибровку робота вручную, определив показания датчика освещенности на белом и на черном.

Движение по линии с двумя датчиками освещенности с помощью П-регулятора
 
Правильно проехать перекресток с одним датчиком освещенности довольно сложно. Если требуется сделать это с достаточно высокой скоростью, нужно хотя бы два датчика, поставленные на расстоянии в две ширины линии (или шире).
При движении возможны четыре состояния датчика:
  • оба на белом - движение прямо;
  • левый (s1) на черном, правый (s2) на белом - движение налево;
  • левый на белом, правый на черном - движение направо;
  • оба на черном - движение прямо.

Т.о. при равных показаниях датчика (оба белые или оба черные) робот едет прямо. Перед запуском робота, проведем автокалибровку обоих датчиков. Тогда алгоритм движения по линии с П-регулятором будет выглядеть с.о.:
Коэффициент k может изменяться в достаточно широком диапазоне (от1 до 20 и более) в зависимости от кривизны линии, маневренности робота и разницы между черным и белым на поле.
Важное условие. Автокалибровка должна проводиться на одноцветной поверхности и желательно при той освещенности, которая будет занимать наибольшую часть пути. Например, если робот едет вдоль черной линии на белом поле, то калибровать надо на белом. Т.е. положение робота при старте должно быть вот таким:

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

понедельник, 28 января 2013 г.

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

1. Робот с одним датчиком
Одна их классических задач для мобильного робота - это движение по черной линии на белом поле с использование датчиков освещенности.
В первом опыте используем робота с одним датчиком освещенности. Датчик следует выдвинуть немного вперед:

Конструкцию можно построить множеством способом. Рассмотрим один их них. Крепление датчика освещенности к трехколесной тележке:


Короткая двухмодульная ось может быть красного или черного цвета:
Датчик подключен:

2. Релейный регулятор
Задача такова: двигаться по плоскому полю вдоль границы черного и белого.

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

Вот простейшее решение:

Без дополнительных уточнений предполагается, что датчик освещенности подключен к первому порту. Левый мотор подключен к порту В, правый - к порту С. Перед стартом ставим робота на линию так, чтобы датчик был над белым полем на расстоянии 2-3 см от черного. По алгоритму робот плавно поворачивается направо, пока освещенность не понизится на 5 пунктов (по умолчанию). Затем поворачивается налево, пока освещенность не повысится на 5 пунктов. Движение получается похожим на "змейку".
3. Возможные проблемы
1. Робот крутится на месте, не заезжая на линию. В этом случае следует стартовать с другой стороны линии, либо поменять подключение моторов к контроллеру местами.
2. Робот проскакивает линию, не успев среагировать. Следует понизить мощность моторов.
3. Робот реагирует на мелкие помехи на белом, не доезжая до черного. Надо увеличить порог чувствительности датчика (например, не на 5, а на 8 пунктов)

Есть возможность заранее определить уровень освещенности на данном поле и использовать его абсолютное значение. Воспользовавшись показаниями датчика на белом и черном, полученными через меню View, рассчитаем их среднее арифметическое (53+37)/2=45, которое условно назовем "значением серого". Пересекая датчиком значение 45, робот будет менять направление движения. Очевидно, что по левую луку от "серого" все показания датчика будут "белыми", а по правую "черными". Алгоритм будет выглядеть так:
Чтобы сделать поворот более плавным, не будем полностью останавливать моторы на повороте, а лишь притормозим. Числа 80 и 20 поставлены условно, их стоит подобрать самостоятельно:


понедельник, 17 декабря 2012 г.

Двухмоторная тележка

1. Требования к конструкции

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

2. Процесс построения одной из наиболее простых тележек

Шаг 1. Для крепления моторов, которые будут располагаться по обе стороны от NXT, берем две изогнутые балки:
Шаг 2. В зависимости от расположения балок центр тяжести тележки может быть смещен:
Шаг3. Дополнительные крепления для придания устойчивости:
Все готово для установки контроллера:

Шаг 4. Колеса устанавливаются на 6-модульные оси, втулки предохраняют от нежелательного трения о корпус.
Шаг 5. Конструкция для крепления третьего колеса:
Шаг 6. Элементы подвижного колеса. Длины осей - 3 и 5 модулей. Колесо должно вращаться свободно.
Сборка заднего подвижного колеса. Оси должны вращаться свободно.

Тележка готова.


3. Продолжаем знакомство со средой Robolab 2.9
Палитра функций включает в себя различные типы команд:
Простейшие алгоритмы
1. Квадрат. По умолчанию считаем, что левый мотор подключен к порту В, правый - к порту С. Проверьте подключение.


Повторяй 4 раза:
  • моторы B, C вперед;
  • жди N/100 секунды;
  • мотор С назад (B продолжает двигаться вперед);
  • жди N/100 секунды.
Стоп моторы.
2. Парковка. Напишите самостоятельно программу парковки в гараж (конструкцию строим из подручных материалов).

понедельник, 10 декабря 2012 г.

Шагающий робот

1. Требования к конструкции

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

2. Процесс сборки

Шаг 1. Единственный привод обеспечит прямолинейное движение робота:
 Шаг 2. 15-ти модульные балки крепятся к мотору и к угловым балкам из дополнительного набора. NXT крепится к угловым балкам:


Шаг 3. Ведущие оси будут разной длины: 5 и 6-ти модульные. Они вставляются в мотор с двух сторон так, чтобы из соответствующих балок выступали части осей длиной ровно 1 модуль.

Шаг 4. На ведущие оси насаживаются 24-зубые шестерни. Остальные штифты крепятся на бежевые штифты-полуоси. Синие для этой цели не подойдут, поскольку создают очень большое  трение.




Шаг 5. Выравнивание крайних шестеренок. Все 4 основные шестерни (24 зуба) должны быть расположены так, чтобы пары отверстий на них были строго параллельны друг другц. Расположение 40-зубых центральных шестерней не играет роли.




Другой способы выравнивания:
Шаг 6. Часть из восьми гладких штифтов вставляется а 24-зубые шестеренки симметрично относительно центра большой шестерни. И ровно наоборот с другой стороны: то есть если справа от NXТ они были ближе к центру, то слева должны быть дальше от центра. Штифты серые!!!

Со второй стороны штифты вставлены противоположно относительно первой:
Шаг 7.  Ноги робота должны быть одинаковыми, но их длину можно менять.
Установка конечностей:
С другой стороны конечности встают в противофазе.
Шаг 8. Для запуска шагающего робота потребуется такая же простая программа, как и для запуска тележки.  Однако следует обратить внимание, что в предложенной конструкции мотор должен вращаться не вперед, а назад. Если запустить его вперед, робот будет пританцовывать на месте, почти не перемещаясь. Напишите программу в Роболаб самостоятельно.

По итогам соревнований в ФМЛ 239

В зимних соревнованиях по робототехнике принимали участие 4 команды:

Регистрационный номер Название команды Участники
791 ЧЕРНАЯ СМЕРЬ Павлов Саша и Березин Вова
792 КИБЕРЫ Григорьев Саша и Похилый Слава
907 БЕНДЕР Митрофанов Денис
908 ОС Добряков Давид 

Все команды участвовали в одном конкурсе - "Механическое сумо". На это соревнование прибыло рекордное количество участников - 96. Все участники были разбиты на 16 групп по 6 команд, где по круговой системе (каждый с каждым) были выбраны по 2 победителя. В плейоф вышла команда "Черная смерть".
Оставшиеся 32 участника были разбиты по парам, победитель пары выходит дальше и соревнуется с победителем соседней пары и т.д. Наши ребята в первой паре оказались победителями и вышли в 16 лучших. Но, к сожалению, в 8-ку уже не попали - соперник был достойным  - он стал абсолютным победителем (Нелогичный слон) Результаты можно посмотреть здесь. Т.о. можно считать что наш лучший результат - это 9 место из 96.
Репортаж о соревнованиях на  канале Россия тут
Запись награждения тут
Несколько фотографий
Наша команда (не в полном составе, остальные где-то бегают по лицею, Саша снимает):
 В кадр поместилось не всё)))
 Наш робот слева:

 Вид на зал соревнований со II этажа (все родители были там):


 Знаменитая Грета играет в ладушки:
 Творческие работы участников: