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

Vježbe - Promjena brzine

Zadatak

Koristeći robota za labirint, treba proći stazu sa zavojima pod pravim kutem. Na ravnim dijelovima treba ići brzo.

Priprema

Za vježbu je potrebno:

Arena

×
Sastavimo arenu.

Ovdje je primjer MRMS modularne arene.

Moguće konstruirati i drugačiju arenu, npr. lijepljenjem izolir-banda na bijelu podlogu.

Uzmimo 9 donjih spojnica i rasporedimo ih na podlogu otprilike prema slici.
×
Pronađimo ploče sa skretanjima pod pravim kutem, kao na slici.

Položimo ih na spojnice.

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.

Program za praćenje linije

Lijevo je program iz prošle vježbe, kojim smo uspješno pratili liniju.

Probajmo ga na ovoj areni.

Vidjet ćete da će robot izletjeti često iz zavoja i produljiti ravno.

Popravljeni program

Probajte sami doći do rješenja.

Jedno od mogućih je da robot ide izuzetno sporo. Međutim, to se kosi sa uvjetima zadatka, da robot na ravnim dijelovima mora ići brzo.

Do rješenja je moguće doći koristeći iste naredbe kao i u prošlom programu.

Natjecanje

Probajte što brže proći 3 kruga.

Natuknica: idite natrag.

Od 0 do 100 pa natrag

Napravite program koji će pokretati robota ravno naprijed brzinom od 0 do 100, onda opet do 0 pa od početka.

Za početak deklarirajte varijablu koja će predstavljati brzinu.

Povećavajte joj vrijednost za 1 od 0 do 100 pa onda od 100 do nula i tako stalno.

Koristite C++ ključnu riječ "static" kako biste lokalne varijable učinili statičnima pa neće gubiti vrijednost nakon izlaska iz funkcije.

Kontinuirana promjena brzine

Pokrećite motore izračunatom brzinom. Kao i obično, koristite funkcije:

Kontinuirana promjena brzine i skretanja

Dopunite program iz prošlog odjeljka na način da se lijevom kotaču dodaje od 0 do 50, onda od 50 do 0, itd.

Desnom kotaču dodajemo 50- koliko je dodano lijevom.

Koristite Arduino funkciju constrain() kako biste brzine ograničili na vrijednosti između -128 i 127. Premda to nije nužno, jer kontroler motora neće primiti vrijednosti izvan ovog opsega, dobra je vježba.

Uputa: napravite novu statičku varijablu, koja će održavati skretanje ulijevo i mijenjajte ju na isti način kao i varijablu za brzinu. Praktički prekopirate kod i promijenite imena varijabli.

Tom varijablom varirajte brzine oba motora na suprotan način.

Primjedbe