Stap 3: Positiebepaling naar de werkstuk: Code
Dit is de functie van de beweging die we in autonome gebruiken. Het duurt een input van afstand (berekend inch voor het gemak van programmeren), snelheid, de kop van een doel en een rem/kust-optie. Hiervoor voor werkzaamheden, een actieve kop is vereist, evenals de kop van een doel.De manier waarop die dit werkt combineert de huidige waarden van het coderingsprogramma om een lopend totaal als de robot-schijven. De functies leftMotor() en rightMotor() krijgen gevoed een nummer en stel alle de aandrijfmotoren op die snelheid. Zij kunnen worden vervangen door "motor [motorLeft] = (snelheid + correctie)" en "motor [motorRight] = (snelheid - correctie)".
VOID moveDistanceAtSpeedOnHeading (afstand, int snelheid drijven, zweven targetHeading, korte goNoGo)
{
float diff;
float calculatedDistance;
float combinedEncoderDistance;
int correctie;
calculatedDistance = abs(distance * 120);
diff = targetHeading - post;
nMotorEncoder [motorLeft] = 0;
nMotorEncoder [motorRight] = 0;
wait1Msec(200);
for(;;)
{
combinedEncoderDistance = abs (nMotorEncoder [motorLeft] + nMotorEncoder[motorRight]);
if(combinedEncoderDistance > calculatedDistance)
{
terwijl (combinedEncoderDistance == abs (nMotorEncoder [motorLeft] + nMotorEncoder[motorRight]))
{
wait1Msec(5);
}
Als (abs (nMotorEncoder [motorLeft] + nMotorEncoder[motorRight]) > calculatedDistance)
{
continueLoop = false;
breken;
}
}
diff = targetHeading - post;
correctie diff = * CORRECTIONGAIN;
leftMotor (snelheid + correctie);
rightMotor (snelheid - correctie);
wait1Msec(5); een waarde van 5 toegevoegd omdat dat is ongeveer tweemaal zo snel als de encoders hun waarden bijwerken
}
if(goNoGo == NO_GO)
{
leftMotor(0);
rightMotor(0);
}
}