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

Взять азимут

Если читателю удалось обзавестись компасом от компании Hitechnic, стоит попробовать и его использовать вместе с П- регулятором.

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

alpha=s1; while (true) { preg=k*(A-s1); Motor[MotorB]=50+preg; Motor[MotorC]=50-preg; }

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


Рис. 5.5.

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

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

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

while(true) { up=k*(s1-grey); motor[MotorB]=50+up; motor[MotorC]=50-up; wait1msec(1); }

Коэффициент может быть достаточно мал (от 1 до 3) для маневренного устройства.

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