(Robolab)
Движение на пропорциональном регуляторе часто используется в различных задачах. В формировании выражения может быть задействован любой из датчиков. Приведем пример движения с использованием показаний датчика освещенности.
В этом примере осуществляется простое движение по границе церного и белого (серый оттенок). Первый замер (контейнер fst) будет хранить значение серого цвета, которого робот должен придерживаться в дельнейшем при движении.
Важно помнить, что робот детектирует границу черного и белого в виде серого градиента. Четких границ он не может определить из-за точности датчиков.
Внутри бесконечного цикла функция высчитывает управляющий коэффициент, который будет производить воздействие на уровень мощности моторов и направление вращения. Суть пропорционального регулятора заключается в том, что воздействие количественно одинаково на все моторы. Такой тип воздействия обеспечивает скорость и одновременно плавность движения. Управляющий коэффициент отнимается (в одном случае) и прибавляется (для другого мотора) к среднему значению мощности, т.е. 50. Отрицательные значения меняют направление вращения моторов.
Таймер используется для снятия чрезмерной нагрузки на моторы.
(NXT-G)
Алгоритм движения на пропорциональном регуляторе компактнее и эффективнее всего реализовывать на текстовых языках, таких, как RobotC и др. Однако для начинающих робототехников эти языки сложно освоить, поэтому приведем программу на NXT-G, который не отличается компактностью кода, но прост в освоении.
Программа выглядит громоздко из-за арифметических расчетов, которые в Robolab представлены формулой. На самом деле здесь реализован тот же самый алгоритм. Команды сравнения позволяют определить направление вращения каждого из моторов.