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

Brdo

Cilj

Savladati brdo.

Arena

×
Napravimo arenu s jednim povišenjem.

Zatvorite krug na nivou poda pločicama koje nisu na slici.

Probajte pratiti liniju nekim od programa koje ste dosad koristili. Gotovo sigurno nećete moći napraviti par krugova zaredom, ako ijedan.

Program

void RobotLine::loop() {
	if ((line(0) || line(8)) && pitch() < -10)
		go(70, 70);
	else if (line(0) && line(8))
		go(70, 70), delayMs(500);
	else if (line(8))
		go(-90, 90);
	else if (line(0))
		go(90, -90);
	else if (line(1))
		go(70, -20);
	else if (line(2))
		go(60, 10);
	else if (line(3))
		go(50, 20);
	else if (line(5))
		go(20, 50);
	else if (line(6))
		go(10, 60);
	else if (line(7))
		go(-20, 70);
	else
		go(70, 70);
}
Problemi se javljaju zato što robot, kad se penje, i došao je na vrh rampe, odigne senzor linije od podloge, očitavši nepostojeću poprečnu liniju.

Budući da se penje, možemo koristi IMU, koji mjeri nagib funkcijom pitch(). Prilikom penjanja je negativan.

Rješenje je, kad robot vidi liniju jednim od 2 krajnja senzora, da nastavi ići ravno, ako je na uzbrdici:
	if ((line(0) || line(8)) && pitch() < -10)
		go(70, 70);
Dodana je još jedna linije, koja prolazi ravno, ako robot naiđe na procijep između pločica, a ne spušta se:
	else if (line(0) && line(8))
		go(70, 70), delayMs(500);
Ova se situacija može dogoditi kad robot ide po visoravni i dođe po početka nizbrdice.

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.