вторник, 24 февраля 2015 г.

Танец в круге

1. Команды ожидания в Роболаб

а) Ожидание интервала времени
б) Ожидание показаний датчика освещенности:

Жди светлее, чем... (0...100)


Жди светлее на... (-100...100)


Жди темнее, чем...(0...100)


Жди темнее на...(-100...100)

2. Операторы цикла

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



Цикл с бесконечным числом повторений




Цикл с заданным числом повторений (количество повторений указывается в модификаторе блока начала)

3. Танец в круге на одном датчике

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

Робот ставится в центре и при старте должен двигаться внутри круга, не выходя за его пределы.

Алгоритм действий "Танец в круге" таков:
  1. ехать вперед, пока показания датчика не понизятся на 5 пунктов (лучше 10);
  2. отъехать немного назад (примерно полсекунды);
  3. развернуться примерно на 120-150 градусов (тоже по времени);
  4. повторять пункты 1-3 бесконечно.
Пример программы на языке Robolab выглядит следующим образом:
Параметры, указанные в модификаторах, подберите самостоятельно: степень понижения освещенности на черной линии (8), время отъезда назад (50/100) и время поворота (60/100).

4. Танец в круге на двух датчиках

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

Алгоритм движения на двух датчиках
  1. Робот едет вперед пока не почувствует понижение освещенности на переднем датчике.
  2. Как только передний датчик среагировал, робот едет назад до тех пор пока не почувствует понижения освещенности на заднем датчике.
  3. Повторять пункты 1-2 бесконечно

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

вторник, 3 февраля 2015 г.

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

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

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


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

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

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

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

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


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

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

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