|
Hrvatsko društvo za robotiku - Uvod u robotiku - vježbe
|
Rescue Maze
Cilj
Napraviti robota za Robocup Rescue Maze natjecanje.
Algoritam
Proučimo algoritam koji će pomoći robotu da prođe cijeli labirint i vrati se na početak.
Algoritam se zove prema njegovom tvorcu Tremauxov i kaže:
- Ako postoji (bilo koje) susjedno polje na kojem nisi bio, idi na njega.
- Ako ne postoji, ali postoji polje s kojeg si došao, vrati se na njega.
- Ako nije istina ništa od gornje 2 tvrdnje, stani. To znači da si se vratio na početak.
Opišimo u grubim crtama program koji će realizirati algoritam. Koristit ćemo UML (ime jezika) dijagram s lijeve strane.
- ActionRescueMaze je akcija kojom počinje program.
- ActionMap čita senzore udaljenosti, zaključuje gdje su okolni zidovi i upisuje ih u stalnu memoriju.
- ActionDecide odlučuje koji je sljedeći korak. Ako ima slobodno polje, odlučuje da će sljedeći potez biti pomicanje robota na to polje. Ako ne, vraća se na prethodno.
- ActionMove pokreće robota prema naprijed, točnije pokreće jednu od sljedeće 2 akcije dolje.
- ActionMoveTurn je okret u mjestu.
- ActionMoveAhead je napredovanje za jedno polje ravno naprijed. Realizirano je pomoću jedne od dviju funkcija koje slijede.
- wallFollow() - prati zid, ako ga ima.
- imuFollow() - ako nema zida, prati kompas.
Podaci
-
Tile je klasa koja određuje jedno polje. U sebi pohranjuje podatke koji slijede.
- Pozicije okolnih zidova (_wall).
- Podatke o površini (_surface).
- Pointer na sljedeće polje (_chain).
- Pointer na prvo polje, odnosno početak vezane liste u kojoj su sva polja labirinta otkrivena do određenog trenutka (first).
- Poziciju prethodnog polja (breadcrumb).
- Koordinate polja (x i y).
- Trenutni smjer (directionCurrent).
- Polje na kojem je robot (tileCurrent).
- Itd.
Kod
Kod je samodokumentiran. Potrebno je uložiti vrijeme u njegovo proučavanje. Pokreće se na način da se u main.cpp (VS) ili MRMS_ESP32.ino (Arduino) linija popravi da izgleda kao što slijedi:
robot = new RobotMaze((char*)"Eddie");
Znači, bitno je da se upiše "RobotMaze". Kod se nalazi u mrm-robot-maze.cpp i mrm-robot-maze.h datotekama.
Zadatak: detalji.
Proučite mrm-robot-maze.cpp i mrm-robot-maze.h datoteke. Uočite kako su tamo implementirane ove akcije.
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.