You are on page 1of 11

Programming Your Robot to Perform Basic Maneuvers

Programiranje
osnovnih manevara
robota

Prevod: dipl. ing Ivo Slade, I. tehnika kola TESLA, Zagreb, Klaieva 7

www.ridgesoft.com
Revizija 1.0

Programiranje osnovnih manevara robota

Uvod
Ovaj prirunik ui programiranje osnovnih manevara edukacijskog robota
InteIBrainTM-Bot. Takoer se ui kako koristiti dokumentaciju RoboJDETM API i
Uputstvo za rukovanje IntelliBrain kako bi se savladalo IntelliBrain programiranje
U dodatku e se uiti kontrola hobby servo motora u Javi.
Iako je uputstvo bazirano na InteIBrain-Bot tehnika manevriranja se moe
primijeniti kod bilo kojeg robota pokretanog s dva nezavisna motora.

Prije pokretanja
Ako niste upoznati s programiranjem u RoboJDE preporua se kranuti s
prirunikom Izrada prvog InteIBrain programa, koji se nalazi na internetskoj stranici
RidgeSoft-a na adresi www.ridgesoft.com

Manevriranje robotom
to je suprotno upravljan robot
Mnogi mobilni roboti, ukljuujui edukacijski robot InteIBrainTM-Bot su
bazirani na konstrukciju s dva supotno upravljana kotaa. Robot baziran na ovoj
konstrukciji koristi dva nezavisno upravljiva kotaa.
Kontroliranjem svakog od dva glavna motora za kotae omoguuje se jednostavno
manevriranje robotom. Ako se programira gibanje oba kotaa prema naprijed i robot
se giba naprijed. Ako se programiraju kotai u suprotnom pravcu robot se okree u
smjeru kazaljke sata ili obrnuto od kazaljke sata ovisno kako su motori programirani.

Programiranje osnovnih manevara robota

Upravljanje robotskim kotaima


Mnogi mobilni roboti, ukljuujui edukacijski robot InteIBrainTM-Bot koriste
servo motore za upravljanje kotaima. Primjeri u ovom priruniku su bazirani na
robotima pokretani servo motorima.
DC motori su druga vrsta popularnih motora koji se koriste za upravljanje
robotskim kotaima. U ovom proruniku se nee obraivati programiranje DC
motora, iako se tehnika manevriranja servo motorima moe isto tako dobro
upotrijebiti za kontrolu DC motora. Za upotrebu malih DC motora kod robota interface
I kontrola motora se nalaze u IntelliBrain Expansion Board.
Standardni hobby servo motor ima ugraene kontrolirane strujne krugove I
mehanike sklopove konstruirane da rotiraju osovinu servo motora do odreene
pozicije te da ju zadre u toj poziciji. Meutim, postalo je uobiajeno modificirati servo
motore za kontinuiranu rotaciju. Uklanjanjem mehanikih zapreka te iskljuivanjem
strujnog kruga za pozicioniranje moe se napraviti hobby servo motor s
kontinuiranom rotacijom. U stvari to je postalo uobiajeno pa se danas mogu kupiti
sevo motori pripremljeni za kontinuiranu rotaciju tako da se ne moraju modificirati.
Servo motori ukljueni u InteIBrainTM-Bot kit su kontinuirane rotacije.

Kontrola servo motora


Dok kontinuirana rotacija servo motora pokree kotae robota kao
konvencionalni DC motor moe ih se kontrolirati upotrebom strujnih krugova za
kontrolu servo motora. Kontrola servoa je napravljena da omogui pozicioniranje
vratila I zadravanje u tom poloaju. Meutim, kod modifikacijeservo motora za
kontinuiranu rotaciju strujni krugovi mogu se koristiti za kontrolu snage na izlaznom
vratilu I njegovom smjeru. Prije pokretanja programiranja robota sa osnovnim
manevrima mora se nauiti jo malo o kontroki servo motora.
Hobby servo motori su kontrolirani periodinom pulsacijom kontrolnog signala
servo motora. Kontrolni signal je tipska bijela ili uta ica prikljuena na servo motor
Puls se zamilja kao paljenje struje te momentalno gaenje . Puls od 1 milisekunde
upravljla servo motorom da pozicionira vanjsko vratilo u u jedan kraj svog domaaja
(0%). Puls od 2 milisekunde upravljla servo motorom da pozicionira vanjsko vratilo u
u drugi kraj svog domaaja (100%). Variranjem trajanja impulsa izmeu dva krajnja
poloaja vratilo se moe pozicionirati u meupoloaj.
Kada se alje kontrolni impuls kontinuirano rotacijskom servo motoru, bolje
nego pozicioniranje vratila u meupozicijuj i zadravanje u toj poziciji, impuls
kontrolira snagu (tonije, okretni moment) i pravac vratila. Zato, kada se naredi servo
motoru 0% pozicija sa impulsom od 1 milisekunde to stvarno rezultira u servo
motoru primjenu minimalne snage u povratnom pravcu. Slino kada se naredi servo
motoru 100% pozicija to rezultira maksimalnom snagom u naprijed. Ako se servu
naredi 50% pozicija to rezultira nultim okretnim momentom.

Programiranje osnovnih manevara robota

Sreom, detalji oko generiranja kontrolnih impulsa servo motora su upravljani


pomou RoboJDE. Potrebno se je samo baviti odreivanjem snage i smjera servo
motora. Ovo se radi davanjem komandi pozicioniranja servo motora koje kod
kontinuiano rotirajuih servo motora u stvari kontroliraju njihopvu snagu I smjer.

Programiranje robota
Poinje se s programiranjem robota koi ide ravno naprijed 5 sekundi. Najprije se
kreira software project u RoboJDE. Ovaj korak je opisan u priruniku Izrada prvog
IntelliBrain programa. Kao poetnu poziciju koristi se program iz tog prirunika. Ako
do sada nije kreiran takav program, najprije se mora kreirati.
Najprije se mora odrediti kako napraviti komande servo motora iz programa. Nadalje
je uenje kako se programiraju manevri robota. Ovaj prirunik takkoer vodi kroz
process koritenja dokumentacije za olakavanje programiranja robota.
Oito, iz prethodno navedenog mora se znati odrediti kako naredba iz Java programa
upravlja servo motorom da bi se napravili manevri robota. Prvi korak je koritenje
IntelliBrain User Guide i API dokumentacije.

Upotreba IntelliBrain svojstava iz dokumentacije


Koristi se dio iz IntelliBrain User Guide koji se odnosi na glavnu plou servo izlaza.
To su izlazi koje koristi InteIBrainTM-Bot za ukljuivanje i kontrolu dva servo motora
koji okreu kotae.

Programiranje osnovnih manevara robota

Iz primjera programa iz IntelliBrain User Guide, vidljivo je da program moe dobiti


servo object za pojedini izlaz upotrebom metode getServo u klasi IntelliBrain .
Drugi nain kako nauiti koristiti karakteristike IntelliBrain-a je upotreba
dokumentacije brzih referenci IntelliBrain API.pdf. Problem je potrebno locirati na
dokumentu brzih referenci i identificirati informaciju u pogledu programiranja servo
izlaza.

Konano, RoboJDE-ova klasa knjinice API dokumentacije (Primjena programiranja


suelja Application Programming Interface) sadri mnotvo detaljnih informacija o
programiranju robota. Bitno je dobro koritenje API dokumentacije, jer ju je potrebno
esto korititi prilikom programiranja robota. RoboJDE API dokumentacija je u
standardnom Javadoc formatu. To je format koji se koristi pri dokumentiranju veine
Java API-ja. Sve veom vjetinom koritenja RoboJDE API dokumenata postaje se
vian u koritenju sline dokumentacije za druge Java projekte programiranja.

Ikona otvara web preglednik za prikazivanje dokumentacije.


Prilikom uenja nove API karakteristike IntelliBrain-ovog kontrolera najbolje je poeti
s dokumentacijom IntelliBrain Class.

Programiranje osnovnih manevara robota

Dokumentacija IntelliBrain Class moe se pretraiti skroliranjem I klikom na ime s


liste prikazano na slici. Ovdje e se prikazati dokumentacija klase u desnom
prozoru. Pregledavanjem kroz dokumentaciju klase mogu se nai metode kako prii
razliitim karakteristikama IntelliBrain kontrolera

Sueljavanje s IntelliBrain servo izlazima


Prilikom uenja kako programski kontrolirati servo motore da bi se robot gibao,
potrebno je u IntelliBrain klasi nai metodu vezanu za uporabu servo izlaza.
Pretraivanjem IntelliBrain class dokumentacije nalazi se metoda koja odgovara
servo izlazu.
Dokumentacija sa slike je za getServo metodu. Prouavanjem ove dokumentacije
vidi se da metoda vraa servo object na odabrani servo izlaz. Lijevi kota je
prikljuen na servo izlaz 1, a desni kota je prikljuen na servo izlaz 2 i tim podacima
se pie programska naredba za svaki servo motor.
U program se dodaju slijedee dvije programske linije nakon linije koja prikazuje broj
verzije programa.

Kako se program sada odnosi na drugi tip objekata - servo potrebno je dodati I
ulaznu naredbu na poetku programa. Ona je potrebna da omogui Java kompajleru
pronalaenje klase Servo. Ulazna naredba daje cijelo ime klase. . Puno ime klase

Programiranje osnovnih manevara robota

ukljuuje paket koji se upotrebljava za rjeavanje problema koji bi mogli nastati s


dupliciranim imenima klase.

Koritenjem dokumentacije Servo klase potrebno je u knjinici pronai lokaciju (ime


paketa). Ovo se postie pozivom Servo link-a u dokumentaciji za getServo metode
Otvoriti www.ridgesoft.com. Odabrati RoboJDE, FullAPI. Otvara se prozot knjinice.
Dokumentacija za klasu Servo e se prikazati .
Pregledom dokumentacije nalazi se Servo interface u paketu com.ridgesoft.robotics
u klasi knjinice. Zbog toga je potrebno dodati import naredbu na postojeu naredbu

Programiranje robot za vonju naprijed


Program sada ima object leftServo i rightServo koji omoguuju kontrolu serva.
Slijedea stepenica je iz dokumentacije za Servo interface odrediti kako koristiti ove
objekte za kontroku serva.
Pregledom API dokumentacije za Servo interface nalaze se metode koje to
osiguravaju. To su dvije metode setPosition i off. Prema dokumentaciji off metoda
iskljuuje servo, dok setPosition metoda postavlja servo u poziciju izmeu 1 i 100.

Programiranje osnovnih manevara robota

Rekapituliranje, naredbe postavljanja poloaja za servo su modificirane za


kontinuirano okretanje postavljanjem snage I smjera. Postavljanje pozicije 0
odgovara punoj snazi nazad, Postavljanje pozicije 100 odgovara punoj snazi
naprijed, Postavljanje pozicije 50 odgovara bez smage i smjera, Napomena
postavljanje pozicije 50 nije isto to i metoda off. Matoda off ne alje nikakve impulse
servo motoru, dok pozicija 50 alje nservu impulse.
Potrebno je upravljati s oba motora kako bi se primjenila snaga za pokretanje robota
unaprijed. Ovo se moe napraviti ukljuivanjem svakog motor nu punu snagu.
Meutim kao su montirani u suprotnim pravcima, to rezultira smjerom naredbe koja je
suprotna za svaki motor. Da se oba motra kreu u pravcu naprijed, mora se
programirati lijevi motor u smjeru obrnutom od kazaljke sata, dok je desni u pravsu
kazaljke sata.. Za pomicanje robot u punoj brzini naprijed potrebno je postaviti servo
pozicije lijevog motora na 100, a desnog na 0. Nakon ovih naresbi robot e se gibati
naprijed dok se ne naredi zaustavljanje metodom off za svaki motor.
Dodatne naredbe u programu za pomicanje robota naprijed 5 sekundi:

Sada se moe testirati program prebacivanjem programa na robot. Kada se prebaci


program na robot islkljui se serijski kabel RS232 te se pokrene robot tipkom START.
Robot e se gibati ravno naprijed 5 sekundi.

Programiranje robot za okretanje


Nakon programiranja robota da se giba naprijed, trivijalno je programirati rotaciju
robota na mjestu. Potrebno je napraviti gibanje oba motora u istom pravcu umjesto
suprotnom.
Dodatne naredbe za rotiranje robota u smjeru kazaljke sata

Programiranje osnovnih manevara robota

Dodatne naredbe za rotiranje robota u smjeru obrnutom od kazaljke sata

Programiranje robot za vonju po kvadratu


Moe se programirati vonja robota po kvadratu jednostavnim slijedom naredbi za
vonju naprijed I okretanjem za 90. Potrebno je prilagoditi vrijeme izvravanja
nearedbe (sleep time). Kod intelliBrain robota trajanje sleep time je 625 koje zakree
robot za priblino 90. Meutim stvarno vrijeme ovisi o karakteristikama pojedinog
robota te o stanju baterija. Takoer je mogue prilagoditi I stranicu kvadrata
promjenom sleep time kod gibanja naprijed.
Bolje je, nego ponovnim dodavanjem naredbi u programu vozi ravno , zakreni za 90,
vozi ravno , zakreni za 90, vozi ravno , zakreni za 90, vozi ravno , zakreni za 90,
programirati petlju kojom se smanjuje broj naredbi. Kako kvadrat ima etiri identine
stranice I iste kutove moe se programirati vonja robota po kvadratu izvoenjem
dva koraka 1) vozi ravno i 2) zakreni za 90. Ponavljanjem tih koraka etiri puta , u
petlji, robot e voziti po kvadratu.
Dodatne naredbe za gibanje robota po kvadratu

Testuranje programa e pokazati da robot ne vozi po idealnom kvadratu, To je zbog


toga to kutovi nisu ba potpuno 90 . Ako je kut manji od 90 potrebno je poveati
sleep time. Ako je kut veii od 90 potrebno je smanjiti sleep time.

Programiranje osnovnih manevara robota

10

Zakljuak
Nain upravljanja suprotno voenim motorima robota je kontrola pravca I brzine
svakog kotaa. Programiranjem robota da okree kotae u istom pravcu giba robot
naprijed. Programiranjem robota da suprotno okree kotae rotira robot na mjestu.
Mogue je programirati robota da radi ostale manevre kao zakretanje lijevo ili desno
unosom razliitih vrijednosti za snagu na kotau.
Programiranje robota za obavljanje vie sofisticiranog gibanja je pomou niza
osnovnih vremenskih gibanja. Programiranjem robota da naini eiri ponavljanja
pomicanja naprijed I skterana za 90 dobije se gibanje po kvadratu
Eksperimentiranjem robotom primjeuje se da upotrebom vremena kao osnovom za
navigaciju nema granica. Slabljenjem baterija mijenja se ponaanje robota. Takoer
karakteristike robota ovise o povrini po kojoj se giba. Razlika u trenju kod razliitih
povrina ima snaan uinak na ponaanje robota.
Naalost, kako se kontrola sortware-a robota provodi trenutno, nema mehanizama
kod robota koji bi raunali na varijacije uvjeta kao to su istroenost baterija ili stanje
povrine, koji utjeu na njegove performanse. Za kontrolni system robota se kae da
je otvorena petlja, jer nema povratnoe informavije koja rauna varijacije uvjeta koji
djeluju na robota.
Dosljednost i tonost manevriranja robota se moe poboljati dodavanjem senzora
za povratnu informaciju kontrole upravljanja. Jedan od naina je dodavanje enkodera
kotaa koji opaa poziciju svakog kotaa.

Programiranje osnovnih manevara robota

11

You might also like