void RobotSoccer::loop() {
if (setup())
headingToMaintain = heading();
go(40, 22, pidRotation->calculate(heading() -
headingToMaintain));
}
Prve 2 linije programa su uobičajeni način pokretanja jedne naredbe ("headingToMaintain...") samo jednom. U ovom slučaju postavljamo vrijednost varijable "headingToMaintain" na trenutni položaj (rotacija oko vertikalne osi), koju daje funkcija "heading()".
"headingToMaintain" je već deklarirana varijabla i općenito služi za spremanje početne orijentacije robota.
Funkcija
go() je dovoljno moćna za zadovoljavanje svih naših potreba za definicijom kretanja robota. Pogledajmo redom argumente:
- "40" - brzina. Može biti od -128 do 127. Negativni brojevi su za kretanje natrag - ali obično se ne koriste jer je taj tip kretanja obuhvaćen sljedećim argumentom.
- "22" - smjer kretanja, treba biti između -180 i 180. Definira broj stupnjeva; 0 stupnjeva je ravno naprijed, pozitivni brojevi su kutovi desno. Znači, "22" će usmjeriti robota 22° desno. Uočite da će računanje brzina pojedinih kotača odraditi sama funkcija i nećete se morati mučiti trigonometrijom.
- "pidRotation->calculate(heading() - headingToMaintain)" održava početni smjer (rotacija oko vertikalne osi), kao što smo vidjeli u prošloj vježbi.