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

Raskrižje

Cilj

Vježba praćenja linije u novim okolnostima. Osnova za kasnije skretanje na temelju markera u boji.

Program

void RobotLine::loop() {
	if (line(8)
		go(-90, 90);
	else if (line(0))
		go(90, -90);
	else if (line(5))
		go(10, 90);
	else if (line(3))
		go(90, 10);
	else
		go(60, 60);
}
Postavimo si zadatak da robot na svakom raskrižju skreće lijevo.

Počnimo s programom iz prethodne vježbe, koji je na slici lijevo.

Trebat će nam još jedan uvjet, još jedan "if", prije svih drugih, jer želimo da raskrižje ima najveći prioritet izvršavanja: kad dođe na raskrižje, skreće lijevo, bez o obzira što bi raskrižje bilo i oštri zavoj.

Kako prepoznati raskrižje? Pretpostavimo da se crte sijeku pod pravim kutevima. U tom slučaju bi moglo biti dovoljno pogledati oba krajnja tranzistora. Ako vide liniju, to je raskrižje. Pogledajmo kod u sljedećem odjeljku.

void RobotLine::loop() {
	if (line(0) && line(8))
		stop(), end();
	else if (line(8))
		go(-90, 90);
	else if (line(0))
		go(90, -90);
	else if (line(5))
		go(-30, 90);
	else if (line(3))
		go(90, -60);
	else
		go(60, 60);
}
Dodali smo "if" koji prepoznaje raskrižje i zaustavlja robota u njemu.

Nakon zaustavljanja, "end()" završava program.

Ostatak je predmet zadatka koji slijedi.

Arena

×
Prvo sastavimo arenu sličnu prethodnoj. Uzmimo 9 donjih spojnica i rasporedimo ih na podlogu otprilike prema slici.
×
Pronađimo ploču s pravokutnim zavojem. Položimo ju na 4 spojnice prema slici.
×
Ponovimo akciju za preostale 3 ploče. Arenu ćemo isprobati u sljedećem zadatku.

Video

Robot izvodi gornji kod.

Neće?

void RobotLine::loop() {
	if (line(0) && line(8))
		stop(), end();
	else if (line(8))
		go(-90, 90);
	else if (line(0))
		go(90, -90);
	else if (line(5))
		go(0, 60);
	else if (line(3))
		go(60, 0);
	else
		go(40, 40);
}
Ukoliko robot ne izvodi zadatak dobro, smanjite brzine.

Primjer je lijevo. Brzine mogu biti još manje.

Nemojte koristiti "delayMs()" jer robot može propustiti trenutak kad mora stati.

Zadatak: skrenite.

Dovršite gornji kod: u raskrižju robot ne treba stati, nego skrenuti lijevo i nastaviti praćenje crte. Kad dovršite kod, probajte prati li crtu gornje arene u smjeru obrnutom od kazaljke na satu.

3D

Na ovom linku možete pogledati 3D vizualizaciju modela i cijeloga ga otvoriti u Autodesk Fusion 360 programu.

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.