2016 / Robotika / Radionica 4 i Domaća zadaća 3

Danas je na red došao novi zadatak koji će nas zaokupiti možda i nekoliko sljedećih radionica:

Napraviti program za robota koji će se ponašati na sljedeći način:

  • program se pokreće nakon pritiska na tipkalo na robotu. Dok tipka nije pritisnuta, LED svjetla su na robotu ugašena. Kada se tipka pritisne tada se uključe oba LED svjetla u plavoj boji.
  • ako je na daljinskom pritisnuto naprijed onda robot ide naprijed. Ukoliko pri kretanju naiđe na prepreku koja je bliže od 25 tada robot mora stati i zapištati dva puta
  • ako se na daljinskom pritisne tipka za nazad tada se robot mora okrenuti za 180 stupnjeva (otprilike). Ako se robot kretao prije okretanja tada se nakon okretanja mora nastaviti kretati.
  • ako je pritisnuta tipka lijevo na daljinskom tada se robot okreće u lijevo sve dok se ne otpusti tipka. Kada se tipka otpusti robot treba nastaviti naprijed ako se prije okretanja kretao naprijed.
  • ako je pritisnuta tipka desno na daljinskom tada se robot okreće u desno sve dok se ne otpusti tipka. Kada se tipka otpusti robot treba nastaviti naprijed ako se prije okretanja kretao naprijed.
  • ako je pritisnuta tipka A na daljinskom tada robot mora stati
  • svaki put kada program počne raditi nešto na pritisak tipke robot mora jednom zapištati

  

Domaća zadaća ima dva zadatka:

Zadatak 1

Napravi program u kojemu će panda slijediti miša. Dok se kreće za mišem panda mora izmjenjivati svoje dvije slike te davati dojam kao da hoda. Ukoliko panda doše na lokaciju gdje je miš tada mora reći "ulovio sam te" no čim se strelica miša pokrene ta poruka treba biti uklonjena.

  • Pomoć

    Program sa kojim panda slijedi miša smo napravili na prošloj domaćoj zadaći. Najjednostavnije rješenje da bi panda slijedio miša a da se vidi njegovo kretanje je:

    2016 robotika slijedi misa

    Ovo rješenje ima tu manu da se panda uvijek pokreće na onu poziciju miša koju je ugledao i dok ne stigne na to mjesto - panda ne gleda gdje je miš. Što se duže kreće to je vidljivije da panda ne reagira na pokrete miša dok ne stigne na mjesto gdje ga je ugledao prije pokretanja (povećajte vrijednost u "pomoči" na recimo 2 sekunde i probajte pomicati miša dok se panda kreće.

    Da bi ispravno riješili zadatak moramo omogućiti da panda mijenja sliku nakon svakog koraka a to znači da panda ne može ići na poziciju miša jer do te pozicije može biti puno koraka a mi ne možemo dok panda ne stigne - promjeniti pandi sliku. Zato trebamo pomicati pandu korak po korak prema mišu i pri svakom pomicanju za jedan korak moramo promijeniti pandinu sliku na onu koja nije tada postavljena. Izmjenjujući slikice dok se panda kreće dobivamo dojam da panda hoda. Jedan pandin korak ne mora biti veličine 1. Što je korak veći to će se panda brže kretati.

  • Prijedlog rješenja

    U beskonačnoj petlji neka panda prvo pogleda gdje je miš. Neka onda izračuna koja je udaljenost po X i po Y do miša kao i smjer gdje treba krenuti (predznak udaljenosti). Ukoliko je udaljenost po X ili po Y manja od koraka tada neka korak bude udaljenost (da se osiguramo da će panda uloviti miša a ne preskočiti ga). Kada se zna u kojem smjeru se treba kretati tada se treba izračunati nova pandina pozicija tako da se sadašnja pandina pozicija po X i po Y umanji ili uveća za dužinu koraka (ovisno o tome u kojem pravcu panda mora ići) te neka se panda uputi na tu novu poziciju bekom brzinom od recimo 0.1 sek.  Nakon što je panda napravio korak neka izmijeni svoju sliku na drugu. Da bi zadatak uspješno bio rješen treba se dakle pamtiti koja je slika pande aktivna, koji je predznak po X i Y za udaljenost od pande do miša i koji je korak po X i Y.

  • Rješenje

    Program za mBlock možete preuzeti ovdje.

    Ovako on izgleda:

    2016 robotika DZ3 / hodaj za misem

 

Zadatak 2

Napravi program kod kojega će panda nacrtati dva pravokutnika dužine stranice 100. Prvi pravokutnik mora biti smješten gore lijevo na papiru a drugi pravokutnik dole lijevo. Nakon crtanja panda se mora vratiti na sredinu ekrana i čekati. Kada korisnik sa mišem UĐE u gornji okvir tada mora reći „Evo te - GORE si!“ a kada sa mišem uđe u DONJI okvir tada mora reći „Vidim te – DOLJE si!“. Ako se miš ne nalazi ni u donjem ni u gornjem okviru tada panda mora „misliti“: „UFF ne vidim te ako nisi u kučicama koje sam nacrtao!“. Za one koji žele probati više: ako je miš izvan kučica ali se NE mrda barem 10 sekundi tada panda mora REĆI:  „Hej ne ljenčari! Mrdni guzu!“

  • Pomoć

    Već smo u prethodnim zadacima crtali pravokutnike pa vam kvadrat (pravokutnik kojemu su sve stranice iste dužine) ne bi trebao biti problem. Ovdje je glavna stvar shvatiti da središte ekrana predstavlja poziciju 0,0 Sve što je od te pozicije lijevo (X) je manje od nule a sve što je desno je veće od nule. Sve što je od te pozicije iznad (Y) je veće od nule a sve što je ispod je manje od nule.

    Ako pokušate micati miša u prozoru od pande, tada ćete u donjem desnom dijelu tog prozora vidjeti kako se mijenjaju X i Y brojke - te brojke predstavljaju poziciju miša. Probajte odrediti gdje bi otprilike trebao početi prvi kvadrat a gdje bi trebao početi drugi kvadrat. Probajte napraviti tako da vam kvadrati budu za nekih 10 točaka udaljeni od rubova.  

    Ako ste sposobni nacrtati kvadrat tada znate i koji su njegovi najmanji X i najveći X kao i najmanji Y i najveći Y. Kada panda gleda gdje je miš tada je potrebno da ispita da li mu se X pozicija nalazi između najmanje i najveće X pozicije kvadrata i Y pozicija miša mora biti unutar kvadrata po Y koordinati.

    Ovisno o tome u kojem je kvadratu - ispišite poruku.

  • Prijedlog rješenja

    Postoji jednostavnije i kompliciranije rješenje. Ja sam stvar riješio na kompliciraniji način i on ima svoje prednosti no stvar se može pojednostavniti.

    Dakle kao prvo sa mišem izračunajte gdje bi svaki kvadrat trebao započeti. Dužine stranica znate pa onda neka panda ode na početne pozicije i spusti pero pa nacrta prvo jedan pa onda drugi kvadrat (uz dizanje pera, premještanje i naravno ponovno sputanje pera). 

    Kada ste nacrtali sve vratite pandu na 0,0 i započnite beskonačnu petlju u kojoj prvo provjerite da li se x koordinata miša nalazi unutar prvog kvadrata po X osi a onda i da li se isto tako Y koordinata nalazi unutar prvog kvadrata po Y osi. Ako je to istina tada ispišite poruku a ako nije tada ispitajte da li se miš nalazi unuta drugog kvadrata. Ako je i to istina tada ispišite poruku a ako ni to nije točno tada ispišite treću poruku. :) Pogledajte moje rješenje - možda bude jasnije ;)

  • Rješenje

     Već sam spomenuo da sam ja malo kompliciranije rješenje. Kod mene panda ne zna unaprijed gdje mu je gornji i donji rub već ga ja potjeram u lijevo dok ne dođe do ruba pa onda zapamtim X koordinatu u varijablu lijevo. Onda ga potjeram prema gore do ruba i zapamtim Y poziciju u varijablu gore. U ovom trenutku znam gdje mogu nacrtati prvi kvadrat pa ga i nacrtam. nakon toga potjeram pandu prema dolje i kada dođe do donjeg ruba, tada Y poziciju zapamtim u varijablu dolje te nacrtam i drugi kvadrat.

    Dalje je sve prilično slično jednostavnijem rješenju s time da su moja lijeva i desna kao i gornja i donja granica kvadrata - izračunate na osnovu zapamćenih varijabli lijevo, gore i dolje. Znači malo više matematike koristim no rezultat je isti. Moje rješenje bi bilo bolje kada bi se pandu bacilo na veliki papir kod kojega se ne zna veličina i onda bi moj panda uvijek nacrtao pravokutnike blizu gornjeg i donjeg ruba i uvijek uz lijevu stranu papira.

    Program za mBlock možete preuzeti ovdje.

    Ovako on izgleda:

    2016 robotika DZ3 panda mis u kucicama



Ova mrežna stranica izrađena je u sklopu projekta "Žene okreću novu stranicu" kojeg provodi udruga Iskra – Centar za edukaciju i savjetovanje. Projekt i izradu stranice sufinancirali su Europska unija iz Europskog socijalnog fonda i Ured za udruge Vlade Republike Hrvatske. Sadržaj ove mrežne stranice isključiva je odgovornost Iskre – Centra za edukaciju i savjetovanje. 

Top
Za što bolje korisničko iskustvo, ova internet stranica pohranjuje vaše kolačiće (cookies). Pritiskom gumba "Prihvaćam kolačiće" slažete se sa korištenjem kolačića. More details…