UNIVERZITET U KRAGUJEVCU MAŠINSKI FAKULTET KATEDRA ZA PRIMENJENU MEHANIKU I AUTOMATSKO UPRAVLJANJE. Lego robotika. Uputstvo i praktični primeri

Similar documents
Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

Podešavanje za eduroam ios

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

Otpremanje video snimka na YouTube

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a

SAS On Demand. Video: Upute za registraciju:

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

SADRŽAJ. strana 1. strana 2. Hadži Đerina 2, tel.011 / Cvijićeva 98, tel.011 / e mail:

- Vežba 1 (dodatan materijal) - Kreiranje Web šablona (template) pomoću softvera Adobe Photoshop CS

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

Uvod u relacione baze podataka

Upute za korištenje makronaredbi gml2dwg i gml2dgn

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

3D GRAFIKA I ANIMACIJA

Pravljenje Screenshota. 1. Korak

Bušilice nove generacije. ImpactDrill

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

Tutorijal za Štefice za upload slika na forum.

za STB GO4TV in alliance with GSS media

LabVIEW-ZADACI. 1. Napisati program u LabVIEW-u koji računa zbir dva broja.

Programiranje za internet zimski semestar 2013/2014. Java kroz primjere (skripta je u fazi izradi)

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

Primer-1 Nacrtati deo lanca.

Upotreba selektora. June 04

Nejednakosti s faktorijelima

mdita Editor - Korisničko uputstvo -

1. MODEL (Ulaz / Zadržavanje / Stanje)

1.7 Predstavljanje negativnih brojeva u binarnom sistemu

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

UPUTSTVO. za ruter TP-LINK TD-854W/ TD-W8951NB

4.1 Korišćenje aplikacije Ćelije Rukovanje radnim listovima... 32

Direktan link ka kursu:

BENCHMARKING HOSTELA

1. Instalacija programske podrške

Automatske Maske za zavarivanje. Stella, black carbon. chain and skull. clown. blue carbon

PROJEKTNI PRORAČUN 1

KatzeView Uputstvo. verzija Novi Sad Josifa Marinkovića 44. Tel: +381 (0) Fax: +381 (0) Mob: +381 (0)

Babylon - instalacija,aktivacija i rad sa njim

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

STABLA ODLUČIVANJA. Jelena Jovanovic. Web:

KORISNIČKO UPUTSTVO ZA SVR MANAGER SAMSUNG

Advertising on the Web

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020.

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

VBA moduli. mr Milovan Milivojević dipl. ing. Visa Poslovno Tehnička Škola - Užice

Sl.1.Razvojna ploča-interfejs

Univerzitet u Novom Sadu. Fakultet tehničkih nauka. Odsek za računarsku tehniku i računarske komunikacije. Uvod u GIT

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION

KAKO GA TVORIMO? Tvorimo ga tako, da glagol postavimo v preteklik (past simple): 1. GLAGOL BITI - WAS / WERE TRDILNA OBLIKA:

Port Community System

Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE)

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ

Office 365, upute za korištenje elektroničke pošte

Simulacija rada PIC mikrokontrolera

COREL DRAW. Predstavljanje crteža u računaru

Priprema podataka. NIKOLA MILIKIĆ URL:

INFORMATIKA II AutoCAD 9. deo. Rudarsko-geološki fakultet Rudarski odsek

SKRIPTA ZA VEŽBE IZ PREDMETA ELEKTRONSKO POSLOVANJE

IZRADA TEHNIČKE DOKUMENTACIJE

Programiranje. Nastava: prof.dr.sc. Dražena Gašpar. Datum:

Pokretanje izvršnog fajla

KABUPLAST, AGROPLAST, AGROSIL 2500

Mogudnosti za prilagođavanje

3.2. Prikazati podatke o svim proizvodima, koji se proizvode u Zrenjaninu.

Uputstvo za konfigurisanje uređaja Roadstar

STRUČNA PRAKSA B-PRO TEMA 13

Windows Easy Transfer

Korak X1 X2 X3 F O U R T W START {0,1}

Pokretanje (startovanje) programa Microsoft Word

TEHNOLOGIJA, INFORMATIKA I OBRAZOVANJE ZA DRUŠTVO UČENJA I ZNANJA 6. Međunarodni Simpozijum, Tehnički fakultet Čačak, 3 5. jun 2011.

Klasterizacija. NIKOLA MILIKIĆ URL:

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine

POSEBNA POGLAVLJA INDUSTRIJSKOG TRANSPORTA I SKLADIŠNIH SISTEMA

UPUTSTVO ZA INSTALACIJU I PODESAVANJE PROGRAMA ZA MONITORING RADA SOLARNE ELEKTRANE KOSTAL PIKO MASTER CONTROL (PMC) v.2

Naredba je uputa računalu za obavljanje određene operacije.

CRNA GORA

Dežurni nastavnik: Ispit traje 3 sata, prvih sat vremena nije dozvoljeno napuštanje ispita. Upotreba literature nije dozvoljena.

Uputstvo za pravljenje i korišdenje biblioteka sa dinamičkim povezivanjem (.dll)

VEŽBA 4 TOOLS - RAD SA ALATIMA

DEFINISANJE TURISTIČKE TRAŽNJE

P R O J E K T N I R A D

14. Merenja na optičkim komunikacionim sistemima

PROFOMETER 5+ lokator armature

Poglavlje 1 POČETAK RADA SA MICROSOFT OFFICE-OM 2016

Jelena Radić, Bane Popadić, Marko Gecić, Vladimir Milosavljević, Vladimir Popadić, Vladimir Rajs, Jovan Bajic Softverski praktikum

Donosnost zavarovanj v omejeni izdaji

NAUČ NI Č LANCI POREĐENJE SNAGE ZA JEDNU I DVE KONTRAROTIRAJUĆE HIDRO TURBINE U VENTURIJEVOJ CEVI DRUGI DEO

Projekat iz predmeta Računarska elektronika

Digitalni Video Rekorder. Uputstvo za korisnika

2. Kreiranje nove baze podataka

Eksperimenti sa sistemom za merenje Edaq530

RANI BOOKING TURSKA LJETO 2017

- Vežba 2 - OPTIMIZACIJA GRAFIKE ZA WEB UPOTREBA ALATKE SLICE TOOL IZRADA WEB GALERIJE

Sadržaj. WORDPRESS OSNOVE e-book v 1.2

AUTODESK INVENTOR SKRIPTA. Uradio: Prof. Saša Ilić

Transcription:

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

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

NXT G NXT G je alatka koju ćete koristiti da kažete vašem robotu šta da uradi. NXT G omogućava kreiranje programa koji se mogu ucitati u NXT robot. Ovi programi mogu biti jednostavne komande poput Idi napred 10 centimetara i zaustavi se. ili mnogo napredniji i složeni programi. NXT roboti se 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 struktura Kao ljudi, sposobni smo da sami zaključimo određene instrukcije, ali iz perspektive robota to baš i nije moguće. Njima se moraju dati striktne i specifične instrukcije, i one moraju biti u zadate po određ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 za kreiranje 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 stani 2. Okreni se na levo za 90 3. Idi unazad sve dok svetlosni senzor ne oseti zatamnjenje, onda stani 4. Okreni se u mestu Ovo je forma pseudo koda. Poenta je da se shvati da pre nego što se robot programira, mora se imati ideja šta će robot tačno raditi i šta se od njega zahteva. A najlakši način da se ovo uradi jeste da se

jednostavno zapiše, na razumljivom i jednostavnom jeziku. To je početak dobr strukture za NXT G program. 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 voditi računa da svaka instrukcija koja se zada robotu treba biti što je moguće jednostavnija. Pogledajte sledeć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 da staneš č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, intrukcije se moraju razbiti u kratke i jednostavne izjave, onda će biti lakše da se pseudo kod zapiše u NXT G programu. Pogledajte prvi primer pseudo koda, treći korak, Idi unazad sve dok svetlosni senzor ne oseti zatamnjenje, onda stani. Ako želimo da se robot kreće, predpostavlja se da će koristiti svoje motore. U NXT G programu postoji MOVE blok koji omogućava da se robot programira kako bi se kretao u željenom smeru. U zadatoj komandi se traži od robota da detektuje zatamnjenje, da bi se ovo postiglo u NXT G programu će se koristiti COLOR SENSOR blok (koji će biti u modu LIGHT SENSOR) koji će biti programiran 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 ispisuje tekst i slike na njegovom displeju. DISPLAY blok Postoji 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

verziju ovog programa za LEGO robota. To će omogućiti da se demonstrira najjednostavniji blok u NXT 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 isipisivao reč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 G program 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 u gornjem levom uglu). Reč Start se pojavljuje na radnom prostoru, pokazujući da tu treba da se stavi 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)

Slika 2.3 DISPLAY blok Nakon svakog stavljanja bilo kog bloka na radni prostor ili selektovanja otvara se konfiguracijski panel bloka koji se nalazi u donjem levom uglu ekrana. Konfiguracijski panel je mesto gde se najviše programiranja obavlja. On omogućava da se određene funkcije uključuju ili isključuju i da se dobija feedback. 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 meni ima četiri opcije: Image, Text, Drawing, Reset). Sa padajućeg menija treba izabrati Text, sada će se u konfiguracijskom panelu pokazati tekst boks sa rečima Mindstorms NXT. Ovaj tekst treba promeniti 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. Nakon učitavanja, izabrati ga iz File sekcije i pritusnuti narandžasto dugme na NXT bloku kako bi se program pokrenuo. Da li se tekst prikazao? Program se izvršio toliko brzo da se nije stiglo da se zapazi tekst. Kako bi se ovo ispravilo treba izmeniti pseudo kod: Ispiši reči Hello World! na svom displeju u trajanju od 10 sekundi. Sa Common palete u WAIT meniju treba izabrati TIME WAIT blok, staviti ga iza DISPLAY bloka na radnom prostoru i podesiti vreme u konfiguracijskom panelu na 10 sekundi (Slika 2.6).

Slika 2.6 Podešavanje vremenskog intrvala Nakon pokretanja programa trebalo bi videti tekst Hello World u trajanju od 10 sekundi na displeju. Ostale mogućnosti DISPLAY bloka: Displej sekcija ima samo jedan check box Clear checkbox. Ako je checkbox štikliran (a DISPLAY blok se 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 DISPLAY blokova da se dodaje tekst kako bi se pravile cele rečenice. Takođe, bez brisanja sadržaja ekrana mogu 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 i Reset. Ukoliko se izabere Image sa padajućeg menija, tada je prikazana File sekcija, koja daje pristup ugrađ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 sistemu displeja, 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že prikazati samo jedan piksel.

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 (slika 2.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 to mož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 vrednost broja 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 haba isprekidana to znači da nije povezana na pravi hab.

Slika 2.10 Data hab Display bloka U tabeli 2.1 dat je pregled Data haba Display bloka: U/I Tip podataka Akcija Broj 0-5 Moguće vrednosti Obriši Logički True/False Filename Tekst 15 karaktera Značenje vrednosti 0-Image, 1-Tekst, 2-Tačka, 3-Linija, 4-Krug, 5-Restore True-obrisati sadržaj displeja, False-sadržaj displeja se ne briše Ime grafičkog fajla Ignorisan je: 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-99 Završna tačka Y Broj 0-63 Završna X koordinata Završna Y koordinata Akcija nije linija Akcija nije linija Radijus Broj 0-120 Radijus kruga Akcija nije krug

MOVE blok Sa 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 se kontroliš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 obzir težinu robota, teren po kojem se kreće (da li ima uspona i padova, koeficijent trenja podloge), kao i to 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 dok ne zaustavimo ručno robota preko NXT bloka (postoji još jedan način da se motori kreću beskonač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že biti negativan, ali to se ispravlja pomoću izbora smera okretanja motora. Isto važi i kad je izabrana opcija 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 robot zaustavi tačno i precizno na mestu na kojem želimo da se zaustavi, međutim ovakav način

zaustavljanja više troši baterije. Ako je izabrana opcija zaustavljanje, tada samo zaustavljanje neće biti 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 se robot 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 podataka Moguće vrednosti Značenje vrednosti Levi motor Broj 1-3 1=A, 2=B, 3=C Ignorisan je: 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/False Skretanje Broj -100:+100 Snaga motora Broj 0-100 True-unapred False-unazad <0 skretanje ka levom motoru >0 skretanje ka desnom motoru Trajanje Broj 0-2147483647 Zavisi od tipa trajanja: Stepeni/Rotacije = stepeni Sekunde = Sekunde True Kočenje Naredna akcija Logički True/False False Zaustavljanje Tabela 3.1 Data hab Move bloka Trajanje je beskonačno

MOTOR BLOK Pored 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 sekciji izabrana opcija Degrees ili Rotations, tada se uključuje Action sekcija, gde se sa padajućeg menija mogu izabrati opcije Constant, Ramp up ili Ramp down; to omogućava da se motori u izabranom opsegu kreću konstantno, da ubrzavaju ili usporavaju. Takođe se uključuje opcija Wait for Completion, koja omogućava da se rad motora završi pre narednog zadatka, ili da motori rade u toku izvršenja tog zadatka (na primer ukoliko je čekiran boks Wait for Completion robot neće uključiti senzore sve dok se ne završi rad motora, ukoliko je odčekiran senzori će biti uključeni u toku rada motora, slika 4.2). Slika 4.2 Wait for Completion check box Snimanje i reprodukcija Dobra funkcija NXT-G programa je RECORD/PLAY blok. Pomoću ovog bloka mogu se snimiti pokreti motora u fajl koji se zatim smešta u NXT blok. Ovaj fajl se kasnije koristi kako bi se reprodukovalo kretanje robota. RECORD/PLAY blok se nalazi na common paleti (slika 5.1).

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 treba izabrati odgovarajuće portove motora čiji rad treba da se snimi. Poslednje što treba izabrati je vreme snimanja, treba biti pažljiv pri odabiru vremena, jer je memorija NXT bloka ograničena. Preporučuje se da se pre snimanja ručno izmeri vreme trajanja sekvence, i zatim dobijeno vreme upiše u Time boks. 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čne sekvence, a zatim reprodukovati pri prezentaciji.

Feedback Konfigurisanje senzora Ovde ć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čine zvuka ili na primer, promena pozicije. Senzori samo nadgledaju promene ovih stanja. Drugo, jedan senzorski blok može da prati samo jedno stanje, na primer da bi jedan senzor za svetlo ispunio zadatak da odgovori na promenu jačine svetla između 50 i 80, u NXT programu će se koristiti dva bloka za svetlosni senzor. Pored numeričkih vrednosti, senzori mogu dati i logičke odgovore. NXT senzor za dodir Blok 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čen i 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

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-4 1=Port1, 2=Port2, 3=Port3, 4=Port4 Akcija Broj 0-2 0=Pressed 1=Realeased 2=Bumped Yes/No Logički True/False Rezultat poređenja Binarna vrednost Logička vrednost Broj 0-1024 Binarna vrednost sa senzora 0=Realeased Broj 0-1 1=Pressed Tabela 6.1 Data hab bloka Senzora za dodir NXT senzor za boju Blok 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 Color sensor, u Compare sekciji treba izabrati da li će senzor registrovati boje unutar ili izvan izabranog opsega. Kada je u Action sekciji izabran Light sensor u Compare sekciji treba izabrati opseg jačine svetla, a u Function sekciji treba izabrati da li će biti uključena jedna od tri LE diode: crvena, zelena ili plava. 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čitavanje senzora retko kad može biti maksimalno (100).

(a) (b) Slika 6.3 Blok senzora za boju; (a) Senzor za boju, (b) Senzor za svetlo U/I Tip podataka Moguće vrednosti Značenje vrednosti Ignorisan je: Port Broj 1-4 NIkad Opseg Logički True/False A opseg boje Broj 0-6 B opseg boje Broj 0-6 True u okviru opsega False - izvan okvira opsega 0 Crna 1 Između plave i crne 2 Između plave i zelene 3 Između zelene i žute 4 Između žute i crvene 5 Između crvene i bele 6 bela 0 Crna 1 Između plave i crne 2 Između plave i zelene 3 Između zelene i žute 4 Između žute i crvene 5 Između crvene i bele 6 bela U Light senzor modu

Poređenje Logički True/False True = veće False = manje Trigger point Broj 0-100 Uporedna vrednost Generisanje svetla Logički True/False Boja lampe Broj 0-2 Određuje da li je uključena neka od LE dioda na senzoru 0 crvena 1 zelena 2 plava U Color senzor modu Yes/No Logički True/False Rezultat poređenja Nikad Detektovana boja Broj 1-6 1 Crna, 2 Plava 3 Zelena, 4 Žuta 5 Crvena, 6 - Bela Tabela 6.2 Data hab Color senzora U Light senzor modu NXT ultrazvučni senzor Blok 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čni senzor je port 4. U Compare sekciji treba izabrati daljinu, kao i to da li će senzor nadgledati vrednost manju ili veću od izabrane. U Show sekciji treba izabrati merne jedinice inče ili centimetre. U tabeli 6.3 dat je pregled Data haba ultrazvučnog senzora.

U/I Tip podataka Port Broj 1-4 Trigger point Broj Moguće vrednosti 0-255 (cm) 0-100 (in) Poređenje Logički True/False Yes/No Logički Treu/False Razdaljina Broj 0-255 (cm) 0-100 (in) Značenje vrednosti 1-port 1, 2-port 2, 3- port 3, 4-port 4 Uporedna vrednost True = veće False = manje Rezultat poređenja Skalirana vrednost sa senzora NXT senzor rotacije Servo motori poseduju ugrađen senzor rotacije. Blok senzora rotacije, kao i njegov konfiguracioni blok 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. U Action 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 izabrati jednice (stepene ili broj rotacija), vrednost, kao i to da li će senzor pratiti manje ili veće vrednosti od izabrane.

Pregled data haba senzora rotacije je dat u tabeli 6.4 U/I Tip podataka Moguće vrednosti Značenje vrednosti Port Broj 1-3 1 A, 2 B, 3 C Trigger point Broj 0-2147483647 Trigger point direction Logički True/False Poređenje Logički True/False Reset Logički True/False Yes/No Logički True/False Smer Logički True/False Stepeni Broj 0-2147483647 Uporedna vrednost True Unapred False Unazad True = veće False = manje True Reset False - Read Rezultat poređenja True Unapred False Unazad Skalirana vrednost sa senzora WAIT blok Kada se koristi WAIT blok, treba razumeti da će se WAIT blok aktivirati samo kada su ispunjeni određ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čni senzor 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 vreme trajanja. Ukoliko se izabere Sensor, treba izabrati senzor čije merenje hoćemo da pratimo.

Na slici 7.1, MOVE blok je podešen na unlimited, forward, motor power: 75; Ultrasonic WAIT blok je podešen da prati objekte koji su bliži od 20 cm. U kombinaciji ova dva bloka će prouzrokovati da se robot kreće sve dok ultrazvučni senzor ne detektuje objekat koji je na razdaljini manjoj od 20cm od senzora. Č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 ostalih WAIT blokova. Petlje Recimo da želimo da se naš robot kreće po kvadratu, tj da putanja kretanja robota bude kvadratnog oblika. 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 morao konfigurisati isto, jedan MOVE blok da kontroliše rotacije motora B i C, i jedan MOVE blok koji će rotirati robota. Ovu sekvencu treba ponoviti još tri puta kako bi se robot kretao po kvadratnoj putanji. 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 da prate druge uslove: Forewer, Sensor, Time, Count, Logic.

SWITCH Blok Recimo da pseudo kod izgleda ovako: 1. Hoću da se krećeš napred 5 rotacija, ukoliko tvoj senzor za svetlo detektuje svetlo iznad nivoa 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 se zaustaviti.

Edge Follower Uslovi i princip rada Dobili smo zadatak da pomoću komponeti koje se nalaze u Lego setu LEGO MINDSTORMS 8547 napravimo robota koji bi se kretao po crnoj liniji, pritom nismo želeli da napravimo algoritam koji bi radio 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 raspon točkova, pa je samim tim i manje okretan, što prouzrokuje da se lošije snalazi u oštrim krivinama. To se 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šem slučaju snage na baterijama, pa se može desiti da se pri istim uslovima (upravljačke konstante i uslovi okruž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 za boju, dva servo motora. Obzirom da se u setu nalazi samo jedan senzor za boju, nije bilo moguće realizovati algoritam za prać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 ivice putanje taj problem ne postoji, jer ukoliko robot skrene levo, količina svetla se smanjuje, ili ukoliko skrene desno količina svetla se povećava (slika 1.2). Upravljački algoritam se trudi da količina odbijenog 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 osnovni princip po kome funkcioniše algoritam za praćenje ivice putanje. Pseudo kod

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čine odbijenog svetla, te da regulacija bude kontinualna. Formula po kojoj se izračunava snaga na motorima u zavisnosti od količine odbijenog svetla je: = Gde su: P L snaga na levom motoru P D snaga na desnom motoru P 0 početna snaga P t trenutna snaga (korekcija) S t trenutno očitavanje sa senzora gain pojačanje = + = ( ) = + 2 = S max ; S min ; mid maksimalna, minimalna i srednja vrednost količine svetla range opseg količine svetla Veličine S max i S min se očitavaju ručno pre puštanja robota u rad i unose u algoritam, veličine mid i range se takođe izračunavaju pre puštanja robota u rad i unose u algoritam. To je zbog toga što je količ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 se kreće u opsegu -42...+42, početna snaga je 50, pa se snaga na motoru kreće u opsegu 8...92. Što znači da ukoliko senzor očita minimalnu ili maksimalnu vrednost količine svetla (senzor se nalazi ili na crnoj ili na beloj površini) snaga na jednom motoru biće 8% a na drugom 92%.

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 zahteva dosta 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.

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 dobija sabiranjem početne snage i vrednosti korekcije, snaga na motoru C se dobija oduzimanjem ove dve vrednosti. 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. Zakon upravljanja bi bio bolji ukoliko se koriste dva senzora, pri čemu bi jedan senzor pratio desnu ivicu putanje, a drugi senzor levu ivicu putanje. Pri puštanju robota u rad treba koristiti dodatne izvore svetla, jer ambijetalno dnevno svetlo daje loše rezultate. Dodatno ograničenje u algoritmu predstavlja i to što Lego NXT modul radi samo sa celim brojevima. Edge follower sa obilaženjem prepreke Zadatak je da se konstruiše robot koji bi pratio crnu putanju na čijem se delu nalazi prepreka u obliku zida, koju robot treba da zaobiđe, a zatim da nastavi sa praćenjem crne putanje.

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 i položaj prepreke i samim tim putanja zaobilaženja. U slučaju da se očekuje od robota da uči tokom rada, tj. da tokom rada sam donosi odluke o načinu kretanja i veličini prepreke, ulazi se u oblast veš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 od prepreke, 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 centar rotacije.

Algoritam upravljanja u NXT-G programu Radi boljeg razumevanja rada algoritma, prikazaćemo ga pomoću blok šeme: DA Razdaljina < 50mm NE Program obilaženja prepreke Program praćenja ivice 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, ako jeste, aktivira se program za zaobilaženje prepreke, a ako nije manja od željene vrednosti aktivira se program za praćenje ivice putanje, koji je već prethodno objašnjen.

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 motori robota različito ponašaju pri različitom napajanju. U toku rada baterije se troše, pa realno kretanje robota nije istovetno sa proračunatim. Snaga na baterijama ne utiče samo na rad motora, nego i na rad senzora na takav način da je odziv sporiji, u ovom slučaju to znači da smo morali proračunski da zadamo da nam je željena razdaljina 15cm, a u realnom slučaju je 5cm. Odziv sistema se usporava i sa povećanjem kompleksnosti algoritma, pa se pri izradi programa mora voditi računa i o ovoj karakteristici. Pozicioniranje u prostoru Zadatak je da robot odredi svoju poziciju u poligonu, gde je poligon kvadratnog oblika, i gde su dimenzije unapred poznate (1160mm x 1160mm). Algoritam se zasniva na tome da robot dok rotira u mestu, dok u isto vreme skenira prostor pomoću ultrazvučnog senzora. U tom postupku on pamti minimalno i maksimalno rastojanje od zida poligona. Minimalno rastojanje biće jednako ortogonalnom 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 ivice 3. Izračunaj odsojanje od zida i objavi rezultate na displeju 4. kraj

min max y 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: min = 255 max = 0 S < min NE S > max NE DA min = S DA max = S min max

Promenljiva S u gornjim algoritmima predstavlja trenutno očitavanje sa senzora. Broj ciklusa petlje je ograničen brojem rotacija točkova za koje se robot okrene oko svoje ose za 360. Računskim putem se 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

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 prikazivanje na 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šnja baterija. U jednom slučaju snaga na baterijama je iznosila oko 60% što nije bilo dovoljno da robot do kraja izvrši svoj zadatak. Prema našim očekivanjima i proračunatoj trasi da će se za 2.5 rotacije na točkovima robot okrenuti za 360 oko svoje ose, on se okrenuo za oko 270.

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