32
UNIVERZITET U KRAGUJEVCU MAŠINSKI FAKULTET KATEDRA ZA PRIMENJENU MEHANIKU I AUTOMATSKO UPRAVLJANJE Lego robotika Uputstvo i praktični primeri Mentor: Studenti: Prof. dr Milan Matijević Lekić Aleksandar 24/2004 Dejan Stevanović 220/92 Kragujevac, 2010

Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Embed Size (px)

Citation preview

Page 1: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

UNIVERZITET U KRAGUJEVCU – MAŠINSKI FAKULTET – KATEDRA ZA PRIMENJENUMEHANIKU I AUTOMATSKO UPRAVLJANJE

Lego robotikaUputstvo i praktični primeri

Mentor: Studenti:

Prof. dr Milan Matijević Lekić Aleksandar 24/2004

Dejan Stevanović 220/92

Kragujevac, 2010

Page 2: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Sadržaj:

NXT – G ............................................................................................................................................. 3

Programska struktura .................................................................................................................... 3

DISPLAY blok ................................................................................................................................. 4

MOVE blok .................................................................................................................................. 10

MOTOR BLOK .............................................................................................................................. 12

Snimanje i reprodukcija ............................................................................................................... 12

Feedback......................................................................................................................................... 14

Konfigurisanje senzora................................................................................................................. 14

NXT senzor za dodir ..................................................................................................................... 14

NXT senzor za boju ...................................................................................................................... 15

NXT ultrazvučni senzor ................................................................................................................ 17

NXT senzor rotacije ...................................................................................................................... 18

WAIT blok ....................................................................................................................................... 19

Petlje .............................................................................................................................................. 20

SWITCH Blok ................................................................................................................................... 21

Edge Follower ................................................................................................................................. 22

Edge follower sa obilaženjem prepreke .......................................................................................... 25

Pozicioniranje u prostoru ................................................................................................................ 28

Zaključak ......................................................................................................................................... 32

Page 3: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

NXT – GNXT – G je alatka koju ćete koristiti da kažete vašem robotu šta da uradi. NXT – G omogućavakreiranje programa koji se mogu ucitati u NXT robot. Ovi programi mogu biti jednostavne komandepoput „Idi napred 10 centimetara i zaustavi se.“ ili mnogo napredniji i složeni programi. NXT robotise mogu sastaviti od različitih motora i senzora, ali bez dobrog programa robot neće znati šta da radi.Na slici 1.1 je dat prikaz komandnog prozora NXT programa nakon njegovog pokretanja

Slika 1.1 Komandni prozor NXT programa

Programska strukturaKao ljudi, sposobni smo da sami zaključimo određene instrukcije, ali iz perspektive robota to baš inije moguće. Njima se moraju dati striktne i specifične instrukcije, i one moraju biti u zadate poodređenom redosledu. Taj redosled specifičnih instrukcija se naziva programska struktura.

Pri sastavljanju programske strukture pomaže nešto što se zove pseudo kod. Najbolji način zakreiranje pseudo koda jeste da se pretvarate da vaš robot ima uši i da mu govorite šta treba da uradi:

1. Idi napred sve dok senzor za dodir ne bude pritisnut, onda stani2. Okreni se na levo za 90°3. Idi unazad sve dok svetlosni senzor ne oseti zatamnjenje, onda stani4. Okreni se u mestu

Ovo je forma pseudo koda. Poenta je da se shvati da pre nego što se robot programira, mora se imatiideja šta će robot tačno raditi i šta se od njega zahteva. A najlakši način da se ovo uradi jeste da se

Page 4: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

jednostavno zapiše, na razumljivom i jednostavnom jeziku. To je početak dobr strukture za NXT – Gprogram.

Kada se zapisuje pseudo kod, postižu se dve stvari:

- Bolje se razumeju zadaci koje robot mora da izvrši- Kreira se uređen set instrukcija koje će robot pratiti

Pseudo kod se koristi kao podsetnik pri pisanju programa. Pri pisanju pseudo koda treba voditiračuna da svaka instrukcija koja se zada robotu treba biti što je moguće jednostavnija. Pogledajtesledeća dva primera i zaključite koji od njih je jednostavniji:

- Primer 1: Idi napred 10 centimetara, okreni se levo za 90 stepeni, i počni da se krećešnapred, onda počni da tražiš crni objekat pomoću ultrasoničnog senzora, onda hoću dastaneš čim pronađeš taj objekat, onda se okreni desno za 90 stepeni, i idi na nazad 50 cm.

- Primer 2:- Idi napred 10 centimetara i zaustavi se- Okreni se na levo za 90 stepeni- Počni da se krećeš napred, i uključi ultrasonični senzor- Zaustavi se čim pronađeš crni objekat- Okreni se na desno za 90 stepeni- Idi unazad 50 centimetara i stani

Koji od ova dva primera je manje komplikovan za razumevanje? Pri pisanju pseudo koda, intrukcijese moraju razbiti u kratke i jednostavne izjave, onda će biti lakše da se pseudo kod zapiše u NXT – Gprogramu.

Pogledajte prvi primer pseudo koda, treći korak, „Idi unazad sve dok svetlosni senzor ne osetizatamnjenje, onda stani.“ Ako želimo da se robot kreće, predpostavlja se da će koristiti svojemotore. U NXT – G programu postoji MOVE blok koji omogućava da se robot programira kako bi sekretao u željenom smeru.

U zadatoj komandi se traži od robota da detektuje zatamnjenje, da bi se ovo postiglo u NXT – Gprogramu će se koristiti COLOR SENSOR blok (koji će biti u modu LIGHT SENSOR) koji će bitiprogramiran tako da oseti određenu promenu količine svetla.

Konačno, od robota se zahteva da se zaustavi nakon detekcije zatamnjenja, za ovo se koristi jošjedan MOVE blok koji se programira tako da zaustavlja rad motora.

Koristićete ove i druge blokove kako bi odgovarajuće programirali robota da prati vaše instrukcije.Ovi blokovi će biti opisani u narednim poglavljima.

Naredno poglavlje će demonstrirati DISPLAY blok, koji daje vašem robotu mogućnost da ispisujetekst i slike na njegovom displeju.

DISPLAY blokPostoji tradicija u svetu programiranja da prvi program koji se napiše bude program koji ispisuje reči„Hello World“ na displeju. Kako bi se ova tradicija održala, mi čemo ovde kreirati jednostavanu

Page 5: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

verziju ovog programa za LEGO robota. To će omogućiti da se demonstrira najjednostavniji blok uNXT softveru – DISPLAY blok. Nakon toga biće prikazane ostale funkcije ovog bloka.

U prethodnom poglavlju prikazan je koncept pseudo koda. Pseudo kod za program koji bi isipisivaoreči na displeju robota bi bio: Ispiši reči „Hello World!“ na svom displeju.

Pseudo kod ne može biti jednostavniji od ovog. Kako bi se pseudo kod konvertovao u NXT – Gprogram koristićemo DISPLAY blok.

Počnimo sa otvaranjem NXT softvera i upisivanjem Hello World u Create New Program tekst boksu(vidi sliku 2.1). Kliknuti Go dugme, i program HelloWorld je spreman za editovanje.

Slika 2.1 Pokretanje novog programa „HelloWorld“

Slika 2.2 pokazuje komandni prozor nakon otvaranja programa (ime programa HelloWorld stoji ugornjem levom uglu). Reč „Start“ se pojavljuje na radnom prostoru, pokazujući da tu treba da sestavi prvi blok.

Slika 2.2 Program HelloWorld je otvoren i spreman za editovanje

Kliknuti na DISPLAY blok na Common paleti i staviti ga na Start (slika 2.3)

Page 6: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Slika 2.3 DISPLAY blok

Nakon svakog stavljanja bilo kog bloka na radni prostor ili selektovanja otvara se konfiguracijskipanel bloka koji se nalazi u donjem levom uglu ekrana. Konfiguracijski panel je mesto gde se najvišeprogramiranja obavlja. On omogućava da se određene funkcije uključuju ili isključuju i da se dobijafeedback. Slika 2.4 prikazuje konfiguracijski panel DISPLAY bloka.

Slika 2.4 Konfiguracijski panel DISPLAY bloka

Kako se vidi na slici 2.4 Action sekcija DISPLAY bloka je po difoltu podešena na Image (padajući meniima četiri opcije: Image, Text, Drawing, Reset). Sa padajućeg menija treba izabrati Text, sada će se ukonfiguracijskom panelu pokazati tekst boks sa rečima „Mindstorms NXT“. Ovaj tekst trebapromeniti u „Hello World!“ (slika 2.5).

Slika 2.5 Editovanje teksta

Nakon ovoga sačuvati program, konektovati NXT blok sa računarom i učitati program. Nakonučitavanja, izabrati ga iz File sekcije i pritusnuti narandžasto dugme na NXT bloku kako bi se programpokrenuo.

Da li se tekst prikazao? Program se izvršio toliko brzo da se nije stiglo da se zapazi tekst. Kako bi seovo ispravilo treba izmeniti pseudo kod: Ispiši reči „Hello World!“ na svom displeju u trajanju od 10sekundi.

Sa Common palete u WAIT meniju treba izabrati TIME WAIT blok, staviti ga iza DISPLAY bloka naradnom prostoru i podesiti vreme u konfiguracijskom panelu na 10 sekundi (Slika 2.6).

Page 7: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Slika 2.6 Podešavanje vremenskog intrvala

Nakon pokretanja programa trebalo bi videti tekst „Hello World“ u trajanju od 10 sekundi nadispleju.

Ostale mogućnosti DISPLAY bloka:

Displej sekcija ima samo jedan check box – Clear checkbox. Ako je checkbox štikliran (a DISPLAY blokse izvršava u programu), tada će se sadržaj displeja izbrisati pre prikazivanja sledećeg teksta ili slike,ukoliko nije štikliran tada će se tekst ili slika prikazati preko prethodnog sadržaja displeja.

Ovo je korisno ukoliko se želi da se tekst pojavljuje u više linija; može se koristiti više DISPLAYblokova da se dodaje tekst kako bi se pravile cele rečenice. Takođe, bez brisanja sadržaja ekranamogu se kreirati jednostavne slike pomoću Drawing opcije u Action sekciji.

Kao što je rečeno, u Action sekciji postoje četiti izbora u padajućem meniju: Image, Text, Drawing iReset.

Ukoliko se izabere Image sa padajućeg menija, tada je prikazana File sekcija, koja daje pristupugrađenim slikama koje se mogu prikazati na displeju (slika 2.7)

Slika 2.7 Izbor Image moda u Display sekciji

Sa desne strane se nalazi deo za pregled, gde se slika može pozicionirati u koordinatnom sistemudispleja, ili se koordinate mogu ručno uneti.

Treća opcija sa padajućeg menija je Drawing (slika 2.8). Mogu se crtati kružnica, linija ili se možeprikazati samo jedan piksel.

Page 8: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Slika 2.8 Izbor Drawing moda sa padajućeg menija

Kao i u Image modu postoji izbor koordinata, pored toga moguć je i izbor dimenzija objekta.

Poslednji izbor sa padajućeg menija jeste Reset. Ovaj izbor omogućava da se sadržaj displeja izbriše.

DATA habovi

Većina blokova ima Data habove (slika 2.9a), klikom na donji levi ugao bloka otvara se Data hab (slika2.9b).

(a) (b)

Slika 2.9 Data hab Display bloka

Data hab omogućava razmenu informacija između blokova. Te informacije mogu biti tekst, brojevi,logičke vrednosti. Na primer, radijus kruga se ne mora podesiti na kofiguracijskom panelu, već se tomože podesiti povezivanjem data haba DISPLAY bloka sa data habom VARIABLE bloka (slika 2.10).

Na slici 2.10 VARIABLE blok je stavljen ispred DISPLAY bloka i podešen je Read opciju na vrednostbroja 5. To omogućava da krug koji će biti nacrtan na displeju imati radijus vrednosti 5 piksela.

Sa leve strane haba su ulazi, a sa desne strane izlazi iz bloka. Ako je linija koja povezuje dva habaisprekidana to znači da nije povezana na pravi hab.

Page 9: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Slika 2.10 Data hab Display bloka

U tabeli 2.1 dat je pregled Data haba Display bloka:

U/ITip

podatakaMoguće

vrednostiZnačenjevrednosti

Ignorisan je:

Akcija Broj 0-50-Image, 1-Tekst,2-Tačka, 3-Linija,4-Krug, 5-Restore

Obriši Logički True/False

True-obrisatisadržaj displeja,False-sadržajdispleja se nebriše

Filename Tekst 15 karakteraIme grafičkogfajla

Akcija nije Image

Tekst Tekst Tekst Akcija nije tekst

X Broj 0-99 X koordinata

Y Broj 0-63 Y koordinata

Završna tačka X Broj 0-99Završna Xkoordinata

Akcija nije linija

Završna tačka Y Broj 0-63Završna Ykoordinata

Akcija nije linija

Radijus Broj 0-120 Radijus kruga Akcija nije krug

Page 10: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

MOVE blokSa Common menija izabrati MOVE blok i staviti ga na radnu površinu, u donjem levom uglu prozoraće se otvoriti konfiguracijski panel (slika 3.1).

Slika 3.1 MOVE blok i njegov konfiguracijski panel

NXT blok ima tri porta za motore, to su A, B i C port. Postoje tri promeljive koje mogu da sekontrolišu kada su motori u pitanju, to su snaga motora, smer obrtanja i vreme trajanja rada motora.

Snaga motora se kreće u opsegu od 1 do 100, pri projektovanju brzine kretanja treba uzeti u obzirtežinu robota, teren po kojem se kreće (da li ima uspona i padova, koeficijent trenja podloge), kao ito da li će tokom izvršenja svog zadatka gurati druge objekte.

Kontrola vremena trajanja rada motora ima četiri opcije na padajućem meniju: Beskonačno, Stepeni,Rotacije i Sekunde.

Kada je izabrana opcija beskonačno, tada će se motori kretati sve do kraja izvršenja programa ili dokne zaustavimo ručno robota preko NXT bloka (postoji još jedan način da se motori krećubeskonačno, a to je korišćenje petlji, koje će biti objašnjene kasnije).

Ako je izabrana opcija Stepeni, tada se mora uneti ceo broj željenih stepeni, takođe taj broj ne možebiti negativan, ali to se ispravlja pomoću izbora smera okretanja motora. Isto važi i kad je izabranaopcija Rotacije, s’tim što se kao željeni broj rotacija može uneti i decimalni broj.

Poslednja opcija je broj sekundi, uneti broj mora biti ceo i pozitivan.

Motor se može zaustaviti na dva načina: kočenjem ili zaustavljanjem. Ako je izabrana opcija kočenje,tada će se motori zaustaviti odmah nakon zadatog vremena, to je korisno ako se želi da se robotzaustavi tačno i precizno na mestu na kojem želimo da se zaustavi, međutim ovakav način

Page 11: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

zaustavljanja više troši baterije. Ako je izabrana opcija zaustavljanje, tada samo zaustavljanje nećebiti momentalo, jer će motor nastaviti da se kreće po inerciji, i zaustavljanje će biti postepeno.

Kada se bira smer okretanja motora,u zavisnosti od konstrukcije robota to može prouzrokovatida serobot kreće na napred ili nazad. Na slici 3.2 je prikazan smer obrtanja motora „na napred“.

Slika 3.2 Pozitivan smer obrtanja motora

U/I Tip podatakaMoguće

vrednostiZnačenjevrednosti

Ignorisan je:

Levi motor Broj 1-3 1=A, 2=B, 3=C

Desni motor Broj 1-3 1=A, 2=B, 3=C

Drugi motor Broj 1-3 1=A, 2=B, 3=C

Smer Logički True/FalseTrue-unapredFalse-unazad

Skretanje Broj -100:+100

<0 – skretanjeka levommotoru>0 – skretanjeka desnommotoru

Snaga motora Broj 0 -100

Trajanje Broj 0-2147483647

Zavisi od tipatrajanja:Stepeni/Rotacije= stepeniSekunde =Sekunde

Trajanje jebeskonačno

Naredna akcija Logički True/FalseTrue – KočenjeFalse –Zaustavljanje

Tabela 3.1 Data hab Move bloka

Page 12: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

MOTOR BLOKPored MOVE bloka, postoji i MOTOR blok koji se koristi za preciznije programiranje (Slika 4.1).

Slika 4.1 Motor blok i njegov konfiguracijski panel

Neke opcije u konfiguracijskom panelu su iste kao i kod MOVE bloka. Ukoliko je u Duration sekcijiizabrana opcija Degrees ili Rotations, tada se uključuje Action sekcija, gde se sa padajućeg menijamogu izabrati opcije Constant, Ramp up ili Ramp down; to omogućava da se motori u izabranomopsegu kreću konstantno, da ubrzavaju ili usporavaju. Takođe se uključuje opcija Wait forCompletion, koja omogućava da se rad motora završi pre narednog zadatka, ili da motori rade u tokuizvršenja tog zadatka (na primer ukoliko je čekiran boks Wait for Completion robot neće uključitisenzore sve dok se ne završi rad motora, ukoliko je odčekiran senzori će biti uključeni u toku radamotora, slika 4.2).

Slika 4.2 Wait for Completion check box

Snimanje i reprodukcijaDobra funkcija NXT-G programa je RECORD/PLAY blok. Pomoću ovog bloka mogu se snimiti pokretimotora u fajl koji se zatim smešta u NXT blok. Ovaj fajl se kasnije koristi kako bi se reprodukovalokretanje robota. RECORD/PLAY blok se nalazi na common paleti (slika 5.1).

Page 13: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Slika 5.1 RECORD/PLAY blok i njegov konfiguracijski panel

Pre reprodukcije kretanja mora se snimiti fajl, u Name tekst boksu treba upisati ime fajla, zatim trebaizabrati odgovarajuće portove motora čiji rad treba da se snimi. Poslednje što treba izabrati je vremesnimanja, treba biti pažljiv pri odabiru vremena, jer je memorija NXT bloka ograničena. Preporučujese da se pre snimanja ručno izmeri vreme trajanja sekvence, i zatim dobijeno vreme upiše u Timeboks.

Za reprodukciju fajla je potrebno samo izabrati Play opciju u Akction sekciji i upisati ime fajla kojegželimo da reprodukujemo, pod uslovom da se fajl nalazi u memoriji NXT bloka (slika 5.2).

Slika 5.2 Reprodukcija snimljenog fajla

PLAY/RECORD opcija je korisna pri prezentaciji rada robota, tada se mogu snimiti karakterističnesekvence, a zatim reprodukovati pri prezentaciji.

Page 14: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Feedback

Konfigurisanje senzoraOvde će biti dat pregled onih senzora koji se nalaze u LEGO Mindstorms 8547 pakovanju.

Pre svega, senzori detektuju promenu stanja. To može biti promena jačine svetla, promena jačinezvuka ili na primer, promena pozicije. Senzori samo „nadgledaju“ promene ovih stanja. Drugo, jedansenzorski blok može da prati samo jedno stanje, na primer da bi jedan senzor za svetlo ispuniozadatak da odgovori na promenu jačine svetla između 50 i 80, u NXT programu će se koristiti dvabloka za svetlosni senzor. Pored numeričkih vrednosti, senzori mogu dati i logičke odgovore.

NXT senzor za dodirBlok senzora za dodir i njegov konfiguracijski panel su prikazani na slici 6.1

Slika 6.1 Blok senzora za dodir i njegov konfiguracijski blok

Kao što se vidi sa slike za programiranje bloka za dodir treba izabrati port na koji je senzor priključeni stanje koje treba da prati, a to su: Pressed, Released i Bumped.Data hab bloka senzora za dodir je prikazan na slici 6.2

Slika 6.2 Data hab bloka Senzora za dodir

Page 15: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

U tabeli 6.1 dat je pregled data haba bloka Senzora za dodir.

U/I Tip podataka Moguće vrednosti Značenje vrednosti

Port Broj 1-41=Port1, 2=Port2, 3=Port3,4=Port4

Akcija Broj 0-20=Pressed1=Realeased2=Bumped

Yes/No Logički True/False Rezultat poređenja

Binarnavrednost

Broj 0-1024 Binarna vrednost sa senzora

Logičkavrednost

Broj 0-10=Realeased1=Pressed

Tabela 6.1 Data hab bloka Senzora za dodir

NXT senzor za bojuBlok senzora za boju, kao i njegov konfiguracijski panel je dat na slici 6.3a.

U Action sekciji treba izabrati jedan od dva načina rada: Color ili Light sensor. Kada je izabran Colorsensor, u Compare sekciji treba izabrati da li će senzor registrovati boje unutar ili izvan izabranogopsega. Kada je u Action sekciji izabran Light sensor u Compare sekciji treba izabrati opseg jačinesvetla, a u Function sekciji treba izabrati da li će biti uključena jedna od tri LE diode: crvena, zelena iliplava. Preporučuje se da bude uključena crvena LE dioda jel je crvena boja najbliža kraju spektra,takođe se preporučuje da se uradi odgovarajuća kalibracija senzora, jer zbog ambijenta očitavanjesenzora retko kad može biti maksimalno (100).

Page 16: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

(a) (b)Slika 6.3 Blok senzora za boju; (a) Senzor za boju, (b) Senzor za svetlo

U/I Tip podatakaMoguće

vrednostiZnačenje vrednosti

Ignorisanje:

Port Broj 1-4 NIkad

Opseg Logički True/FalseTrue – u okviru opsegaFalse - izvan okviraopsega

U L

ight

sen

zor m

odu

A opseg boje Broj 0-6

0 – Crna1 – Između plave i crne2 – Između plave izelene3 – Između zelene i žute4 – Između žute i crvene5 – Između crvene i bele6 – bela

B opseg boje Broj 0-6

0 – Crna1 – Između plave i crne2 – Između plave izelene3 – Između zelene i žute4 – Između žute i crvene5 – Između crvene i bele6 – bela

Page 17: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Poređenje Logički True/FalseTrue = većeFalse = manje

U C

olor

sen

zor

mod

u

Trigger point Broj 0-100 Uporedna vrednost

Generisanje svetla Logički True/FalseOdređuje da li jeuključena neka od LEdioda na senzoru

Boja lampe Broj 0-20 – crvena1 – zelena2 – plava

Yes/No Logički True/False Rezultat poređenja Nikad

Detektovana boja Broj 1-61 – Crna, 2 – Plava3 – Zelena, 4 – Žuta5 – Crvena, 6 - Bela

U Lightsenzormodu

Tabela 6.2 Data hab Color senzora

NXT ultrazvučni senzorBlok NXT ultrazvučnog senzora, kao i njegov konfiguracioni panel je prikazan na slici 6.4.

Slika 6.4 Blok ultrazvučnog senzora i njegov konfiguracioni blok

U port sekciji treba izabrati port na koji je povezan ultrazvučni senzor, default port za ultrazvučnisenzor je port 4.

U Compare sekciji treba izabrati daljinu, kao i to da li će senzor nadgledati vrednost manju ili veću odizabrane. U Show sekciji treba izabrati merne jedinice – inče ili centimetre.

U tabeli 6.3 dat je pregled Data haba ultrazvučnog senzora.

Page 18: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

U/I Tip podatakaMoguće

vrednostiZnačenjevrednosti

Port Broj 1 - 41-port 1, 2-port 2,3- port 3, 4-port 4

Trigger point Broj0-255 (cm)0-100 (in)

Uporednavrednost

Poređenje Logički True/FalseTrue = većeFalse = manje

Yes/No Logički Treu/FalseRezultatpoređenja

Razdaljina Broj0-255 (cm)0-100 (in)

Skaliranavrednost sasenzora

NXT senzor rotacijeServo motori poseduju ugrađen senzor rotacije. Blok senzora rotacije, kao i njegov konfiguracioniblok su prikazani na slici 6.5

Slika 6.5 Blok senzora rotacije, kao i njegov konfiguracioni panel

U port sekciji treba izabrati port na koji je konektovan motor, čije rotacije želimo da pratimo. UAction sekciji treba izabrati Read opciju ukoliko se želi da se dobije vrednost izvršenih rotacija,ukoliko je izabrana opcija Reset, tada će se senzor resetovati na nulu.

U Compare sekciji treba izabrati smer rotacije koji će se pratiti, sa padajućeg menija treba izabratijednice (stepene ili broj rotacija), vrednost, kao i to da li će senzor pratiti manje ili veće vrednosti odizabrane.

Page 19: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Pregled data haba senzora rotacije je dat u tabeli 6.4

U/I Tip podatakaMoguće

vrednostiZnačenjevrednosti

Port Broj 1 - 3 1 – A, 2 – B, 3 – C

Trigger point Broj 0-2147483647Uporednavrednost

Trigger point direction Logički True/FalseTrue – UnapredFalse – Unazad

Poređenje Logički True/FalseTrue = većeFalse = manje

Reset Logički True/FalseTrue – ResetFalse - Read

Yes/No Logički True/FalseRezultatpoređenja

Smer Logički True/FalseTrue – UnapredFalse – Unazad

Stepeni Broj 0 - 2147483647Skaliranavrednost sasenzora

WAIT blokKada se koristi WAIT blok, treba razumeti da će se WAIT blok aktivirati samo kada su ispunjeniodređeni uslovi, to može biti određen vremenski period (npr. 10 sekundi) ili očitavanje sa senzora.

Za ilustraciju rada WAIT bloka koristićemo jednostavni pseudo kod: idi napred sve dok ultrazvučnisenzor ne detektuje objekat koji je 20 cm ispred senzora.

Slika 7.1 WAIT blok ultrazvučnog senzora

U Control sekciji postoje dva izbora: Time ili Sensor. Ukoliko se izabere Time, treba podesiti vremetrajanja. Ukoliko se izabere Sensor, treba izabrati senzor čije merenje hoćemo da pratimo.

Page 20: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Na slici 7.1, MOVE blok je podešen na unlimited, forward, motor power: 75; Ultrasonic WAIT blok jepodešen da prati objekte koji su bliži od 20 cm. U kombinaciji ova dva bloka će prouzrokovati da serobot kreće sve dok ultrazvučni senzor ne detektuje objekat koji je na razdaljini manjoj od 20cm odsenzora. Čim se takav objekat detektuje motori će se zaustaviti.

Ovo je samo ilustracija rada Ultrasonic WAIT bloka, pored njega treba pogledati i načine rada ostalihWAIT blokova.

PetljeRecimo da želimo da se naš robot kreće po kvadratu, tj da putanja kretanja robota bude kvadratnogoblika. U tom slučaju pseudo kod bi izgledao ovako:

1. Idi napred 10 rotacija, zaustavi se, okreni se na desno.2. Idi napred 10 rotacija, zaustavi se, okreni se na desno.3. Idi napred 10 rotacija, zaustavi se, okreni se na desno.4. Idi napred 10 rotacija, zaustavi se, okreni se na desno.

Pri kreiranju programa u NXT-G programu, koristilo bi se osam MOVE blokova, i svaki bi se moraokonfigurisati isto, jedan MOVE blok da kontroliše rotacije motora B i C, i jedan MOVE blok koji ćerotirati robota. Ovu sekvencu treba ponoviti još tri puta kako bi se robot kretao po kvadratnojputanji.

Za lakše programiranje ove sekvence koristi se petlja. Pseudo bi izgledao:

1. Idi napred 10 rotacija, zaustavi se, okreni se na desno.2. Ponovi instrukciju 1. Još tri puta.

Na slici 8.1 prikazan je NXT-G program prema gornjem setu instrukcija.

Slika 8.1 Program za kretanje robota po kvadratnoj putanji

Petlja na slici 8.1 je konfigurisana tako da broji cikluse, pored toga petlje je moguće konfigurisati daprate druge uslove: Forewer, Sensor, Time, Count, Logic.

Page 21: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

SWITCH BlokRecimo da pseudo kod izgleda ovako:

1. Hoću da se krećeš napred 5 rotacija, ukoliko tvoj senzor za svetlo detektuje svetlo iznadnivoa 30 skreni levo, ukoliko ne detektuje svetlo iznad nivoa 30 skreni desno.

Na slici 9.1 prikazan je programska struktura pseudo koda.

Slika 9.1 Programska struktura pseudo koda

Na slici 9.1 SWITCH blok je konfigurisan tako da prati stanje na senzoru svetla, prema pseudo kodu.Petlja služi za zaustavljanje rada programa, tj ukoliko je pritisnuto STOP dugme program će sezaustaviti.

Page 22: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Edge FollowerUslovi i princip rada

Dobili smo zadatak da pomoću komponeti koje se nalaze u Lego setu LEGO MINDSTORMS 8547napravimo robota koji bi se kretao po crnoj liniji, pritom nismo želeli da napravimo algoritam koji biradio po principu „on-off“ regulacije.

Podloga po kojoj se kreće robot je pravljena namenski za ASURO robote, koji su manjih dimenzija,imaju manji raspon točkova, pa su i okretniji. Lego robot ima nesto veće dimezije, veći raspontočkova, pa je samim tim i manje okretan, što prouzrokuje da se lošije snalazi u oštrim krivinama. Tose može izbeći dobrim podešavanjem upravljačkih konstanti u algoritmu i kalibracijom senzora.Dobro ponašanje u oštrim krivinama zavisi i od snage na motoru, tj od snage napajanja, a u našemslučaju snage na baterijama, pa se može desiti da se pri istim uslovima (upravljačke konstante i usloviokruženja) robot različito ponaša, što je posledica istrošenih baterija.

Komponete koje smo iskoristili za konstrukciju robota su: Lego NXT upravljački modul, senzor zaboju, dva servo motora.

Obzirom da se u setu nalazi samo jedan senzor za boju, nije bilo moguće realizovati algoritam zapraćenje crne linije, nego samo algoritam za praćenje ivice, slika 1.1.

(a) (b)

Slika 1.1 Prikaz senzora u odnosu na putanju. (a) Line Follower, (b) Edge Follower

Ukoliko se senzor nalazi direktno iznad putanje problem je taj što ako robot skrene sa putanje,njegov upravljački modul neće znati na koju je stranu skrenuo. Kada se senzor nalazi iznad iviceputanje taj problem ne postoji, jer ukoliko robot skrene levo, količina svetla se smanjuje, ili ukolikoskrene desno količina svetla se povećava (slika 1.2). Upravljački algoritam „se trudi“ da količinaodbijenog svetla ima srednju vrednost.

Slika 1.2 Kretanje robota u zavisnosti od položaja senzora u odnosu na putanju.

Sa slike 1.2 se zaključuje da snaga na motorima direktno zavisi od očitavanja senzora, i to je osnovniprincip po kome funkcioniše algoritam za praćenje ivice putanje.

Pseudo kod

Page 23: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Pseudo kod se sastoji iz samo jedne instrukcije:

1. Prema jačini odbijenog svetla izračunaj potrebnu snagu na točkovima da bi se kretao na ivici.

Pseudo kod je jednostavan iz razoga zato što robot ima samo jedan zadatak – da prati ivicu.

Algoritam upravljanja

Rukovodili smo se time ne želimo „on-off“ regulaciju, već da snaga motora zavisi od količineodbijenog svetla, te da regulacija bude kontinualna.

Formula po kojoj se izračunava snaga na motorima u zavisnosti od količine odbijenog svetla je:

= −

= +

=( − ) ∙

=+2

= −

Gde su:

PL – snaga na levom motoru

PD – snaga na desnom motoru

P0 – početna snaga

Pt – trenutna snaga (korekcija)

St – trenutno očitavanje sa senzora

gain – pojačanje

Smax; Smin; mid – maksimalna, minimalna i srednja vrednost količine svetla

range – opseg količine svetla

Veličine Smax i Smin se očitavaju ručno pre puštanja robota u rad i unose u algoritam, veličine mid irange se takođe izračunavaju pre puštanja robota u rad i unose u algoritam. To je zbog toga što jekoličina svetla različita u toku dana, u toku godine.

Izborom veličine gain se dobija željeni opseg trenutne snage, u našem slučaju trenutna snaga sekreće u opsegu -42...+42, početna snaga je 50, pa se snaga na motoru kreće u opsegu 8...92. Štoznači da ukoliko senzor očita minimalnu ili maksimalnu vrednost količine svetla (senzor se nalazi ili nacrnoj ili na beloj površini) snaga na jednom motoru biće 8% a na drugom 92%.

Page 24: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

U idealnom slučaju je moguće napraviti algoritam tako da se snaga kreće u opsegu -100...+100 (znak„-„ označava obrtanje motora u negativnom smeru), ali njegov razvoj je dosta komplikovan i zahtevadosta vremena. Takav algoritam bi doveo samo do toga da se robot bolje ponaša u oštrim krivinama.Za radne uslove koji su nam postavljeni, predloženi algoritam daje dobar odziv.

Page 25: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Algoritam upravljanja u NXT-G programu

Slika 1.3a (Prvi deo algoritma):

Slika 1.3b Drugi deo algoritma:

Prva četiri bloka sa slike 1.3a su formulacija obrasca:

=( − ) ∙

Nakon toga dobijena vrednost se učitava u promenljivu „korekcija“. Snaga na motoru A se dobijasabiranjem početne snage i vrednosti korekcije, snaga na motoru C se dobija oduzimanjem ove dvevrednosti. Petlja se prekida kada se pritisne stop dugme na Lego NXT modulu.

Zaključak

Algoritam je ograničen zbog toga što se koristi samo jedan senzor za očitavanje količine svetla. Zakonupravljanja bi bio bolji ukoliko se koriste dva senzora, pri čemu bi jedan senzor pratio desnu ivicuputanje, a drugi senzor levu ivicu putanje. Pri puštanju robota u rad treba koristiti dodatne izvoresvetla, jer ambijetalno dnevno svetlo daje loše rezultate. Dodatno ograničenje u algoritmupredstavlja i to što Lego NXT modul radi samo sa celim brojevima.

Edge follower sa obilaženjem preprekeZadatak je da se konstruiše robot koji bi pratio crnu putanju na čijem se delu nalazi prepreka u oblikuzida, koju robot treba da zaobiđe, a zatim da nastavi sa praćenjem crne putanje.

Page 26: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Uslovi rada su isti kao i u prethodnom slučaju.

Dimenzije prepreke su 130x110mm.

Robot je programiran tako da zaobilazi prepreku „mašinski“, tj. da se već unapred znaju dimenzije ipoložaj prepreke i samim tim putanja zaobilaženja. U slučaju da se očekuje od robota da „uči“ tokomrada, tj. da tokom rada sam donosi odluke o načinu kretanja i veličini prepreke, ulazi se u oblastveštačke inteligencije, što nije tema ovog kursa.

Putanja zaobilaženja

Kako bismo našli putanju zaobilaženja potrebno je znati razdaljinu na kojoj se robot zaustavlja odprepreke, dimenzije točkova i njihov raspon.

Željena razdaljina od prepreke: 50 mm

Raspon točkova, l = 130mm

Dijametar točkova, d = 43 mm

Putanja zaobilaženja je prikazana na slici 1.4.

Slika 1.4 Putanja zaobilaženja

Robot treba da zarotira za 90°, pri čemu je jedan od točkova centar rotacije.

Razdaljina D koju točak pređe pri rotaciji robota od 90° je: D = l·π/2

Obim točka je: O = d·π

Broj rotacija n motora da bi se robot okrenuo za 90° je: n = D/O = l/2d = 1.5

Dakle, potrebna je 1.5 rotacija da bi se robot zarotirao za 90°pri čemu je jedan od točkova centarrotacije.

Page 27: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Algoritam upravljanja u NXT-G programu

Radi boljeg razumevanja rada algoritma, prikazaćemo ga pomoću blok šeme:

Slika 1.5 Programski algoritam

Slika 1.6a Prvi deo algoritma

U prvom delu algoritma se proverava da li je razdaljina od prepreke manja od željene vrednosti, akojeste, aktivira se program za zaobilaženje prepreke, a ako nije manja od željene vrednosti aktivira seprogram za praćenje ivice putanje, koji je već prethodno objašnjen.

DARazdaljina < 50mm

NE

Program obilaženjaprepreke

Program praćenjaivice

Page 28: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Slika 1.6b Program zaobilaženja prepreke

Zaključak

Proračunato kretanje robota je idealno kada je snaga na baterijama u rasponu od 90% do 100%.Glavni problem na koji smo naišli tokom konstrukcije programa i robota jeste taj što se motorirobota različito ponašaju pri različitom napajanju. U toku rada baterije se troše, pa realno kretanjerobota nije istovetno sa proračunatim. Snaga na baterijama ne utiče samo na rad motora, nego i narad senzora na takav način da je odziv sporiji, u ovom slučaju to znači da smo morali proračunski dazadamo da nam je željena razdaljina 15cm, a u realnom slučaju je 5cm. Odziv sistema se usporava isa povećanjem kompleksnosti algoritma, pa se pri izradi programa mora voditi računa i o ovojkarakteristici.

Pozicioniranje u prostoruZadatak je da robot odredi svoju poziciju u poligonu, gde je poligon kvadratnog oblika, i gde sudimenzije unapred poznate (1160mm x 1160mm). Algoritam se zasniva na tome da robot dok rotirau mestu, dok u isto vreme „skenira“ prostor pomoću ultrazvučnog senzora. U tom postupku onpamti minimalno i maksimalno rastojanje od zida poligona. Minimalno rastojanje biće jednakoortogonalnom rastojanju od zida poligona, maksimalno rastojanje biće rastojanje od ćoška poligona.slika 1.6.

Pseudo kod

1. Rotiraj u mestu za 360°2. Dok rotiraš, skeniraj prostor pomoću ultrazvučnog senzora i zapamti minimalne i

maksimalne vrednosti odstojanja od ivice3. Izračunaj odsojanje od zida i objavi rezultate na displeju4. kraj

Page 29: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Slika 1.6 Princip rada robota pri pozicioniranju u prostoru

Veličina „y“ se računa po obrascu:

= − (116 − )

Veličine min i max se dobijaju pomoću sledećih algoritama:

ymax

min

S < min

DA

min = 255

NE

min = S

min

DA

max = 0

NE

max = S

max

S > max

Page 30: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Promenljiva S u gornjim algoritmima predstavlja trenutno očitavanje sa senzora. Broj ciklusa petlje jeograničen brojem rotacija točkova za koje se robot okrene oko svoje ose za 360°. Računskim putemse dobija da je to 2.5 rotacije.

Algoritam upravljanja u NXT-G programu

Slika 1.7a Prvi deo algoritma – upisivanje početnih vrednosti za promenljive min i max

Slika 1.7b Drugi deo algoritma – početak petlje, nalaženje minimalne vrednosti

Page 31: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

Slika 1.7c Treći deo algoritma – završetak petlje, nalaženje maksimalne vrednosti

Slika 1.7c Četvrti deo algoritma – izračunavanje odstojanja, odnostno veličine y, i njeno prikazivanjena displeju NXT bloka

Slika 1.7d Peti deo algoritma – prikazivanje minimalne i maksimalne veličine na displeju NXT bloka

Program se prekida pritiskom na STOP dugme NXT bloka.

Zaključak

Kao i u prethodnim slučajevima glavni problem u realizovanju zadatka je bila velika potrošnjabaterija. U jednom slučaju snaga na baterijama je iznosila oko 60% što nije bilo dovoljno da robot dokraja izvrši svoj zadatak. Prema našim očekivanjima i proračunatoj trasi da će se za 2.5 rotacije natočkovima robot okrenuti za 360° oko svoje ose, on se okrenuo za oko 270°.

Page 32: Aleksandar Lekic, Dejan Stevanovic, Lego robotika, Uputstvo i

ZaključakLego MINDSTORMS NXT predstavlja odličan početak u oblasti programiranja robota zbog svojejednostavnosti, međutim nije podesan za složenije programiranje zbog ograničenih mogućnosti NXTbloka. Za složenije programiranje predlaže se korišćenje kompjutera, na taj način što će NXT blokkomunicirati sa računarom preko bluetooth-a. Takođe, ogromna prepreka u programiranju iizvršanjanju zadataka predstavlja velika potrošnja baterija, i različito ponašanje robota pri snazi nabaterijama manjoj od 80%. Lego NXT program ima jednostavan interfejs i lak je za korišćenje.