Лабораторная работа 3.
Разработка модуля управления роботом
с использованием гироскопа.
Задание
Разработать модуль управления роботом gyrounit.pas.
Проверить работоспособность модуля. Прямолинейное движение протестировать с остановкой:
1) по прохождению определенного расстояния в сантиметрах;
2) по появлению препятствия на определенном расстоянии;
3) по достижению двумя датчиками цвета/света черной линии.
type TDirect=(cSelf,cForward,cBackward);
gyroTestFunc=function ():boolean;
Поворот вокруг оси по гироскопу
procedure gyroAxis(angle:integer; maxspeed,minspeed:double; direct:TDirect);
Параметры
angle - целевой угол, на который будет установлен гироскоп по окончании поворота
maxspeed - максимальная скорость поворота, всегда >0
minspeed - минимальная скорость поворота, всегда >0,<50,<maxspeed
direct - направление поворота,
cSelf - процедура самостоятельно выбирает корректное направление поворота,
cForward - первый двигатель - вперед, второй - назад (в общем случае - поворот вправо),
cBackward - второй двигатель - назад, первый - вперед (в общем случае - поворот влево)
Поворот вокруг колеса по гироскопу
gyroWheel(angle:integer; maxspeed,minspeed:double; runWheel:TEv3TachoMotor; direct:TDirect);
Параметры
angle - целевой угол, на который будет установлен гироскоп по окончании поворота
maxspeed - максимальная скорость поворота, всегда >0
minspeed - минимальная скорость поворота, всегда >0,<50,<maxspeed
runWheel - движущееся колесо (мотор)
direct - направление движения колеса,
cSelf - процедура самостоятельно выбирает корректное направление движения колеса,
cForward - движение колеса - вперед
cBackward - движение колеса - назад
Прямолинейное движение по гироскопу
procedure gyroRun(angle:integer; speed:double; forward:boolean; stopfunc:gyroTestFunc);
Параметры
angle - целевой угол, направление на который надо выдерживать во время движения
speed - скорость движения, всегда >0
forward - направление движения, true - моторы вперед, false - моторы назад
stopfunc - ссылка на стоп-функцию, которая вызывается на каждой итерации работы gyroRun;
если функция возвращает true, то выполнение gyroRun завершается.