Highlander
Contents
Highlander
Robot Highlander bol skonštruovaný študentom prvého ročníka odboru fyzika na FMFI UK ako projekt na praktický seminár robotiky a súťaž Istrobot 2011 – kategória Stopár. Hlavným cieľom projektu popri úspešnom splnení úlohy – sledovania čiary bolo aj vytvorenie čo najjednoduchšieho amatérskeho robota len zo základných súčiastok bez použitia predpripravených kitov. Koncepcia robota je teda vhodná najmä pre začiatočníkov, ktorí majú len minimálne poznatky z robotiky, nechcú však kupovať už hotové modely, ale vytvoriť si vlastný. Takýto prístup umožnuje pochopiť architektúru robota od základov a získať skúsenosti s mechanickou, elektronickou aj softvérovou časťou zároveň.
Mechanická časť
Základom mechanickej časti robota je stavebnica Merkur. Na podstave sú upevnené dva upravené servomotory s veľkými kolesami, ktoré zabezpečujú pohyb robota a jeho otáčanie do strán. Nad servomotormi je vývod pre zdroj napätia. V strednej časti sa nachádza kontaktné pole s elektronikou. Vzadu je malé koliesko zabezpečujúce stabilitu. Dve infračervené LED-diódy a senzory sú upevnené v prednej časti.
Elektronika
Riadiacim centrom robota je mikroprocesor PICAXE-20X2. I keď neposkytuje toľko možností ako niektoré iné typy, jeho výhodou je veľmi jednoduché používanie. PICAXE má vlastné vývojové prostredie postavené na Basic-u a predovšetkým nevyžaduje programátor – programy možno sťahovať priamo cez USB kábel. Navyše bola dlhodobým používaním zistená značná odolnosť voči vonkajšim vplyvom a nesprávnemu zaobchádzaniu. Je teda veľmi vhodný pre začiatočníkov.
Servomotory SM-S4303R sú už výrobcom upravené tak, aby umožnovali neobmedzené otáčanie hriadeľa, sú teda vhodné pre pohyb kolies robota. 60 otáčok za minútu pri záťaži nestavia robota medzi najrýchlejších, o to väčší je ale moment 48 N.cm, ktorý umožňuje robotovi vyliezť aj na svahy s väčším sklonom. V tomto smere pomáhajú aj poťahy na kolesách, tie sú vystrihnuté z gumeného balóna, vďaka čomu je koeficient statického trenia na naklonenej rovine väčší ako pri nepokrytom povrchu kolies.
Sledovanie čiary zabezpečujú dve infračervené LED-diódy L-53F3BT a dva prijímače TSOP31230. Diódy generujú signál modulovaný 36 kHz.
Spínač v prednej časti umožňuje reagovať na prekážky.
Princíp sledovania čiary a program
Robot sa pohybuje striedavým zapínaním motorov v krátkych časových intervaloch, pričom diódy generujú infračervené svetlo, ktoré je pohlcované čiernou podložkou a odráža sa od bielej. Diódy sú namierené na bielu oblasť vedľa čiernej čiary, jedna naľavo, druhá napravo a signál z nich sa odráža do prijímačov. Ak sa robot začne stáčať napríklad doprava, pravá dióda sa dostane nad čiaru a prijímač stratí signál. Program vtedy prejde do cyklu, v ktorom sa zapína len ľavý motor, pravý je vypnutý, čo trvá až dovtedy, kým pravý prijímač znova nezaregistruje signál od diódy. Robot vtedy začne vykonávať zasa prvú časť programu. Analogicky princíp platí pre stáčanie doľava.
V prípade, že sa pred robotom nachádza prekážka, narazí do nej spínačom, čim sa spustí časť programu, ktorá zabezpečí, že ju obíde. To znamená, že chvíľu tlačí do prekážky, potom zacúva, otočí sa doprava, prejde niekoľko desiatok centimetrov, otočí sa doľava atď. až sa dostane na miesto približne za prekážkou. Prametre v tejto časti programu treba nastaviť v závislosti od použitých motorov. Najlepšie je skúsiť ich postupne zadávať a meniť až kým sa neodsiahne najlepšie obchádzanie prekážky.
Zdrojový kód
pwmout c.5,50,118 ;generovanie signálu diódou na vstupný pin 5 let adcsetup = %0000000000001111 ;nastaví piny Out 0,1,2 a In 7 ako ADC, aby z nich ;mohol načítať napätie ; base: ;základná časť programu pre pohyb motorov readadc 3,b5 ;načíta napätie z pinu adc 3 do premennej b5 if b5>200 then goto prekazka ;ak zaznamená napätie, prejde na "prekazka" readadc 2,b6 if b6 > 200 then goto dolava ;ak zaznamená napätie, prejde na "dolava" readadc 1,b7 if b7 > 200 then goto doprava ;ak zaznamená napätie, prejde na "doprava" pulsout 6,200 pause 40 ;pulzy pre ľavý a pravý motor pulsout 7,400 pause 40 high 4 goto base ;späť na začiatok cyklu ; dolava: ;cyklus pre odbočenie doľava, opakovane ;zapína pravý motor pulsout 7,400 pause 80 high 4 goto base ;späť na prvý cyklus ; doprava: ;cyklus pre odbočenie doprava, opakovane zapína ;ľavý motor pulsout 6,200 pause 80 high 4 goto base ; prekazka: ;obchádzka prekážky for b3=1 to 100 ;rovno pulsout 6,200 pause 10 pulsout 7,400 pause 10 high 4 next b3 ; for b3=1 to 20 ;zacúva dozadu pulsout 6,400 pause 10 pulsout 7,200 pause 10 high 4 next b3 ; for b3=1 to 60 ;doprava pulsout 7,400 pause 10 high 4 next b3 ; for b3=1 to 30 ;rovno pulsout 6,200 pause 10 pulsout 7,400 pause 10 high 4 next b3 ; for b3=1 to 90 ;dolava pulsout 6,200 pause 10 high 4 next b3 ; for b3=1 to 50 ;rovno pulsout 6,200 pause 10 pulsout 7,400 pause 10 high 4 next b3 ; for b3=1 to 90 ;dolava pulsout 6,200 pause 10 high 4 next b3 ; for b3=1 to 50 ;rovno pulsout 6,200 pause 10 pulsout 7,400 pause 10 high 4 next b3 ; for b3=1 to 110 ;doprava pulsout 7,400 pause 10 high 4 next b3 ; goto base