Stani na liniji
Cilj
Zaustavljanje na liniji pomoću reflektivnih senzora.
Program
void RobotSoccer::loop() {
if (setup())
headingToMaintain = heading();
go(40, 0, pidRotation->calculate(heading() -
headingToMaintain));
if (lineAny()){
go(0, 0, 0);
end();
}
}
Prve 2 linije postavljaju početni smjer robota u varijablu "headingToMaintain", kao i prije.
Funkcija "go()" pokreće robota brzinom 40 u smjeru 0° - ravno naprijed.
lineAny() je funkcija koja vraća "true" ako je robot zagazio na liniju bilo kojim tranzistorom bilo kojeg od 4 senzora linije.
Ako jest, izvršava se "go(0, 0, 0)", funkcija koja zaustavlja robota. "end()" završi rad programa.
Video
Kratki video pokazuje robota koji izvršava gornji program.
Zadatak: odbijanje od linije.
Napravite program koji će se odbiti od linije, kad čelom naiđe na nju.
Rješenje
void RobotSoccer::loop() {
if (setup())
headingToMaintain = heading();
go(40, 0, pidRotation->calculate(heading() - headingToMaintain));
if (lineAny())
go(40, 180, pidRotation->calculate(heading() - headingToMaintain));
}
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.