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

Pauza

Cilj

Cilj vježbe je pojam "pauze", koji će nam pomoći da ostvarimo jednostavno gibanje robota.

Potreba

×
Vrlo je korisna naredba koja ne radi ništa (pauza) - ali točno određeno vrijeme.

Kad smo ispisivali tekst na ekran, ispis je išao, nepotrebno, jako brzo, red za redom.

Kad je robot došao do prepreke, u zadatku iz prethodne vježbe, nije se okrenuo za 90° ili 180°, jer nismo znali kako to učiniti, nego se okretao dok nije nestalo prepreke.

Da smo tad poznavali naredbu za pauzu, naša bi rješenja bila bolja.

delayMs()

void RobotLine::loop() {
	if (front() < 200)
		print("Prepreka\n\r");
	delayMs(100);
}
Program je vrlo sličan prijašnjem, uz dodanu liniju koja koristi "delayMs()" funkciju. Njen parametar (podatak koji šaljemo u funkciju) je 100, broj milisekundi koji program mora čekati.

Rezultat je da će se tekst ispisivati svakih 100 ms, znači 0.1 sekundi. Fizikalno, frekvencija će biti 10 Hz.

Eksperti,

Okret u mjestu

void RobotLine::loop() {
	go(50, 50);
	if (front() < 100)
		go(50, -50), delayMs(700);
}
Robot će ići ravno (oba motora brzinom 50 naprijed), sve do udaljenost naprijed ("front()") na postane manja od 100. Želimo da se tad okrene za 180° u mjestu.

Dosad smo šutke prelazili preko pojave znaka ";", ali nekako je bilo jasno da je njegova funkcija slična točki na kraju rečenice. Stvarno, u primjerima koje smo imali, to je bilo točno.

Sad se pojavio poznati znak, ali u novom kontekstu: ",". Omogućava nam da napišemo blok (više o bloku u sljedećoj vježbi) od 2 naredbe u jednom redu.

Dakle, nakon što je otkrivena prepreka, logički izraz u "if-u" je postao istina i s izvršavanjem je krenuo blok od 2 naredbe: desni motori su promijenili smjer, robot se počeo okretati u mjestu, nakon čega je nastupila pauza od 700 ms - ali okretanje se nastavilo do kraja pauze. 700 sigurno nije dobar broj. Eksperimentalno utvrdite koji broj je potreban za okret od 180°.

Video

Video prikazuje robota koji izvršava gornji program.

Vrijeme okretanja je malo preveliko pa se okreće preko 180°.

Trebalo bi ga probati skratiti na oko 1800 ms.

Zadatak: cik-cak.

Natjerajte robota da ide cik-cak: ravno, skrene lijevo u mjestu, ravno, skrene desno u mjestu, itd.

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.