RCK Ruđera Boškovića - mobilna / uslužna robotika

Vježbe - Skretanje

Zadatak

Robot mora na mjestu skrenuti (okrenuti se oko svoje vertikalne osi) za dani kut.

Zadatak se treba izvršiti na sve 3 vrste robota: robotu za labirint, nogometašu i uslužnom robotu.

Skretanjem ćemo upravljati pomoću ugrađenog kompasa.

Priprema

Za vježbu je potrebno:

Izbor robota za labirint

Uzmite robota za labirint. Radit ćemo program za njega.

Otvorite stranicu "MRMS.ino", u Arduino IDE.

Ako ju ne vidite, ili proširite ekran, tako da svi tabovi postanu vidljivi, ili kliknite na 3 točke.

Nakon toga kliknite na "MRMS.ino", kako biste datoteku otvorili u editoru.
void setup() {
	...
	robot = new RobotMaze((char*)"Two"); // RobotLine, RobotMaze, RobotMin, RobotSoccer, or Your custom robot. "My robot" is Bluetooth name.
	robot->print("Start.\n\r");
	...
}
Nađite ovaj dio koda.

Nakon riječi "new" mora biti "RobotMaze". Program koji se sprema u robota se sastoji od programa za razne robote. Na ovaj način se bira program baš za ovu vrstu robota.

"Two" je proizvoljno (ali ne predugo) ime robota. Ime se pojavljuje prilikom Bluetooth uparivanja robota s mobitelom pa je nužno da svaki robot ima drugačije ime.

Umjesto "Two", slobodno upišite "Marko", "Ivica" ili nešto drugo.

Pozicija programa

Otvorite datoteku "mrm-robot-maze.cpp" u Arduino IDE.

Ako ju ne vidite, ili proširite ekran, tako da svi tabovi postanu vidljivi, ili kliknite na 3 točke.

Nakon toga kliknite na "mrm-robot-maze.cpp", kako biste datoteku otvorili u editoru.
void RobotMaze::loop() {
	...
}
Nađite dio koda s lijeve strane. Umjesto "..." je možda upisan neki kod.

"..." je mjesto gdje ćemo uvijek upisivati kod u ovim vježbama.

Zašto pišemo program baš ovako? Piše ovdje.

Zadani kut

void RobotMaze::loop() {
	const int KUT = 30;
}
Upišite ovu liniju u funkciju i obrišite ostatak.

Konstanta "KUT" drži broj stupnjeva za skretanje udesno.

Ako je negativna, robot treba skretati ulijevo.

Početni kut

Pokušajte sami zabilježiti početni kut robota. Uočite da se funkcija "loop()" izvršava stotine puta u sekundi, a da mi moramo zabilježiti kut samo u prvom prolasku.

Koristite ugrađene funkcije: Dobro će vam doći i C++ ključna riječ:
  • static.

Pokretanje motora

Pokrenite motore.

Koristite ugrađenu funkciju:

Kraj

Ako je dosegnut kut, zaustavite robota.

Koristite ugrađene funkcije:

Izbor robota za nogomet

Uzmite robota za nogomet. Radit ćemo program za njega.

Otvorite stranicu "MRMS.ino", u Arduino IDE.

Ako ju ne vidite, ili proširite ekran, tako da svi tabovi postanu vidljivi, ili kliknite na 3 točke.

Nakon toga kliknite na "MRMS.ino", kako biste datoteku otvorili u editoru.
void setup() {
	...
	robot = new RobotSoccer((char*)"Two"); // RobotLine, RobotMaze, RobotMin, RobotSoccer, or Your custom robot. "My robot" is Bluetooth name.
	robot->print("Start.\n\r");
	...
}
Nakon riječi "new" mora biti "RobotSoccer". Program koji se sprema u robota se sastoji od programa za razne robote. Na ovaj način se bira program baš za ovu vrstu robota.

"Two" je proizvoljno (ali ne predugo) ime robota. Ime se pojavljuje prilikom Bluetooth uparivanja robota s mobitelom pa je nužno da svaki robot ima drugačije ime.

Umjesto "Two", slobodno upišite "Marko", "Ivica" ili nešto drugo.

Pozicija programa

Otvorite datoteku "mrm-robot-soccer.cpp" u Arduino IDE.

Ako ju ne vidite, ili proširite ekran, tako da svi tabovi postanu vidljivi, ili kliknite na 3 točke.

Nakon toga kliknite na "mrm-robot-soccer.cpp", kako biste datoteku otvorili u editoru.
void RobotSoccer::loop() {
	...
}
Nađite dio koda s lijeve strane. Umjesto "..." je možda upisan neki kod.

"..." je mjesto gdje ćemo uvijek upisivati kod u ovim vježbama.

Zašto pišemo program baš ovako? Piše ovdje.

Okret nogometaša

Pokušajte promijeniti gornji program na način da radi u robotu za nogomet.

Kod će ostati isti, osim naziva klase (RobotSoccer umjesto RobotMaze) i poziva funkcije za pokretanje robota. Umjesto RobotMaze:go(), koristite ugrađenu funkciju:

Kvadrat

Neka robot ide po kvadratu. Program radimo za robota za labirint.

Trebat će sve gornje funkcije. Nije nužna, ali korisna je C++ funkcija:
  • remainderl().

Primjedbe