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

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.