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

Vježbe - Stop prije prepreke

Zadatak

Koristeći robota za labirint i nogometaša, krećite se ravno naprijed do prepreke. Kad se pojavi prepreka, stanite.

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.

Pokretanje motora

Pokrenite motore kako bi se robot kretao ravno naprijed.

Koristite ugrađenu funkciju:

Stanite pred preprekom

Mjerite udaljenost naprijed. Ako je manja od 100 mm, stanite.

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.

Isti zadatak za nogometaša

Napravite istu funkcionalnost.

Program je sličan, ali trebate koristiti drugo ime klase i drugu funkciju za pokretanje motora:

Ultrazvučni senzori

uint16_t RobotLine::frontRight(uint8_t sampleCount, uint8_t sigmaCount) {
	return mrm_lid_can_b->distance(2, sampleCount, sigmaCount); // Correct all sensors so that they return the same value for the same physical distance.
}

uint16_t RobotLine::frontRight(uint8_t sampleCount, uint8_t sigmaCount) {
	return mrm_us_b->distance(2, sampleCount, sigmaCount); // Correct all sensors so that they return the same value for the same physical distance.
}
Roboti koje koristimo nisu opremljeni ultrazvučnim senzorima, nego lidarima.

Želimo li upotrijebiti ultrazvučne, nađimo funkcije za mjerenje udaljenosti, kao što su: "frontLeft()", "frontRight()" i "front()".

U lijevom primjeru vidimo "frontRight()".

Uočimo u njoj poziv senzora: "mrm_lid_can_b".

Zamijenimo li senzor ultrazvučnim ("mrm_us_b"), funkcija će koristiti ultrazvučni senzor.

Program neće trebati mijenjati, osim što će ultrazvučni senzor mjeriti drugačiju udaljenost od lidara.

Na isti način modificiramo i druge funkcije koje mjere udaljenost.

Ovo vrijedi za sve vježbe, koje slijede, u kojima bismo željeli upotrijebiti ultrazvučne senzore umjesto lidara.

Primjedbe