Hrvatsko društvo za robotiku - Uvod u robotiku - vježbe

Kretanje nogometaša

Cilj

Kretanje robota za nogomet u danom smjeru.

Program

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.

Video

Kratki video pokazuje robota koji izvršava gornji program.

Zadatak: krug.

Napravite program koji će natjerati robota da se kreće po kružnoj putanji, s tim da čelo uvijek ostaje u istom smjeru.

Primjedbe



Projekt "Uvod u robotiku" sufinanciran je iz Europskog socijalnog fonda, poziv "Jačanje kapaciteta organizacija civilnoga društva za popularizaciju STEM-a". Relevantne stranice: Sadržaj vježbe za virtualne radionice isključiva je odgovornost Hrvatskog društva za robotiku.