Differences

This shows you the differences between two versions of the page.

Link to this comparison view

et:projects:soccer_robot [2010/08/30 18:07] yllaret:projects:soccer_robot [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 170: Line 170:
 [{{  :images:projects:soccer_robot:ir_rx_iso.png?200|RC5 vastuvõtja}}] [{{  :images:projects:soccer_robot:ir_rx_iso.png?200|RC5 vastuvõtja}}]
  
-Robotexil on väravate kohale paigutatud infrapuna signaali saatjad, mis edastavad PHILIPS’i RC5 protokolli abil kanaleid 1 kuni 4. Nende signaalide vastuvõtmiseks on tehtud eraldiseisev moodul. Vastuvõtumoodul ühendatakse kodulabori kommunikatsioonimooduliga kaabliga, mille ühendusskeem on välja toodud plokkskeemis. Samas on välja toodud info vastuvõtja olulisemate komponentide kohta.+Robotexil on väravate kohale paigutatud infrapuna signaali saatjad, mis edastavad Philips’i RC5 protokolli abil kanaleid 1 kuni 4. Nende signaalide vastuvõtmiseks on tehtud eraldiseisev moodul. Vastuvõtumoodul ühendatakse kodulabori kommunikatsioonimooduliga kaabliga, mille ühendusskeem on välja toodud plokkskeemis. Samas on välja toodud info vastuvõtja olulisemate komponentide kohta.
  
 Vastuvõtumoodulile on paigutatud kaks signaali vastuvõtjat/demoduleerijat. Tänu sellele on võimalik paika panna roboti asend väravate suhtes.  Vastuvõtumoodulile on paigutatud kaks signaali vastuvõtjat/demoduleerijat. Tänu sellele on võimalik paika panna roboti asend väravate suhtes. 
  
-Vastuvõtja saadab välja UART pakette, milles sisaldub infrapunavastuvõtja indeks ning vastuvõetud kanal. Väljasaadetavate UART pakettide kirjeldused on välja toodud allpol olevates  +Vastuvõtja saadab 4800 bps kiirusel välja 1-baidiseid UART sõnumeid, milles sisaldub infrapunavastuvõtja indeks ning vastuvõetud kanal. Väljasaadetavate UART sõnumite kirjeldused on välja toodud allpool olevates tabelites: 
-tabelites:+ 
 +**Vastuvõtja indeksiga 0 (vasakpoolne)**  [{{  :images:projects:soccer_robot:rc5_plokkskeem.png?150|RC5 vastuvõtja plokkskeem}}]
  
-**Vastuvõtja indeksiga 0**  [{{  :images:projects:soccer_robot:rc5_plokkskeem.png?150|RC5 vastuvõtja plokkskeem}}] 
 ^ Kanal     ^ Kaheksandiksüsteemis(HEX)       ^ Kahendsüsteemis(BIN)          ^ ^ Kanal     ^ Kaheksandiksüsteemis(HEX)       ^ Kahendsüsteemis(BIN)          ^
 | 1   | 0x01     | 0b00000001 | | 1   | 0x01     | 0b00000001 |
Line 184: Line 184:
 | 4   | 0x04     | 0b00000100 | | 4   | 0x04     | 0b00000100 |
  
-**Vastuvõtja indeksiga 1**+**Vastuvõtja indeksiga 1 (parempoolne)**
 ^ Kanal     ^ Kaheksandiksüsteemis(HEX)      ^ Kahendsüsteemis(BIN)          ^ ^ Kanal     ^ Kaheksandiksüsteemis(HEX)      ^ Kahendsüsteemis(BIN)          ^
 | 1   | 0x11     | 0b00010001 | | 1   | 0x11     | 0b00010001 |
Line 190: Line 190:
 | 3   | 0x13     | 0b00010011 | | 3   | 0x13     | 0b00010011 |
 | 4   | 0x14     | 0b00010100 | | 4   | 0x14     | 0b00010100 |
 +
 +RC5 vastuvõtja skeemi ja trükkplaadi pildid. Skeemi ja trükplaadi failid, tarkvara ning komponentide nimistu paiknevad lehekülje alumises osas, alajaotuses "Failid".
 + [{{:images:projects:soccer_robot:rc5_vastuvotja_skeem.png?200|RC5 vastuvõtja skeem}}][{{:images:projects:soccer_robot:rc5_vastuvotja_plaat.png?200|RC5 vastuvõtja trükkplaat}}]
  
 === Palliandur === === Palliandur ===
Line 214: Line 217:
 ==== Programm ==== ==== Programm ====
  
-Roboti tarkvara on kirjutatud AVR Studios C keeles. Tarkvara kasutab kodulabori teeki ja  AVR-GCC kompilaatorit mis tuleb kaasa WinAVR-iga. Programm on jagatud funktsioonide järgi mitmeks failiks - näiteks on sõitmise funktsioonide ja andurite näitude lugemiseks erinevad failid. Põhifailis asub //main// funktsioon mis käivitab kõik juhtimis- ja tagasiside protsessid ja kus asub ka roboti algoritm.+Roboti tarkvara on kirjutatud AVR Studios C keeles. Tarkvara kasutab kodulabori teeki ja  AVR-GCC kompilaatorit mis tuleb kaasa WinAVR-iga. Programm on jagatud funktsioonide järgi mitmeks failiks - näiteks on sõitmise funktsioonide ja andurite näitude lugemiseks erinevad failid. Põhifailis asub //main// funktsioon mis käivitab kõik juhtimis- ja tagasiside protsessid. Roboti algoritm asub samas failis olevas suures olekutabelis. 
 + 
 +Programm on üles ehitatud tavapärase olekumasina eeskujul, kuid et kood liiga pikaks ei läheks ning kogu algoritm ühes kohas koos oleks, kasutatakse sisendite kontrolliks ja väljundite juhtimiseks ühtset suurt tabelit. Selleks, et algoritmis saaks kiirelt ja mugavalt lugeda andurite näite, juhtida mootoreid ja kuvada infot, on kõik muud protsessid toimima pandud katkestuste pealt. Katkestuste pealt töötades ei sega mõõtmis- ja juhtimisprotsessid algoritmi tööd ja vastupidi - need toimuvad paralleelselt. 
 + 
 +Tabeli struktuur on järgmine: 
 +  * Sisendid 
 +    * Olek 
 +    * Taimer 
 +    * Vasak enkooder 
 +    * Parem enkooder 
 +    * Nupud 
 +    * Infrapuna kaugusandur 
 +    * Ultraheli kaugusandur 
 +    * Palliandur 
 +    * Oma värava suund 
 +    * Vastase värava suund 
 +  * Väljundid 
 +    * Uus olek 
 +    * Taimer 
 +    * Platvorm 
 +    * Pallihoidmise rullik 
 +    * 7-segmendiline indikaator 
 +    * Punane LED 
 +    * Ultraheli kaugusanduri väärtuse meelde jätmise lipuke 
  
-Programm on üles ehitatud võimalikult lihtsal kujulKui hea praktika kohasel on soovitatav teha juhtalgoritmid olekumasina põhjal, siis siin tulnuks olekuid ja olekute vahelisi siirdeid nii palju, et programmikood oleks liiga segaseks läinud. Seepärast on kogu algoritm kirjutatud järjestikuse koodijadana. Selleks, et algoritmis saaks kiirelt ja mugavalt lugeda andurite näite, juhtida mootoreid ja kuvada infot, on kõik muud protsessid toimima pandud katkestuste pealt. Katkestuste pealt töötades ei sega mõõtmis- ja juhtimisprotsessid algoritmi tööd ja vastupidi - need toimuvad paralleelselt+Tabeli ridade pikkuse vähendamiseks ning määramata sisendite/väljundite võimaldamiseks kasutatakse tabelis makrokäsklusiJärgnevalt on kasutatavad käsklused lahti seletatud.
  
-Järgnevalt on toodu roboti //main// funktsioon kus käivitatakse kõik katkestustel toimuvad protsessid ja alustatakse algoritmi täitmist. Selleks, et robotit saaks peatada toimub tsüklites ja pausi funktsioonides (mis on samuti tsüklidprogrammi töötamist näitava muutuja kontrollNii kui katkestuses töötav programmiosa tuvastab stopp-nupu vajutamisenullitakse ka töötamist näitav muutuja ja algoritm hüppab //goto// käsuga uuesti algusesse. //goto// on jällegi üpris harv nähtus, aga siinkohal on see üpris asjakohane käsk.+^ Käsklus ^ Seletus ^ 
 +| EQ(n) | Sisend peab olema n-ga võrdne | 
 +| NE(n) | Sisend ei tohi olla n-ga võrdne | 
 +| GT(n) | Sisend peab olema suurem n-st | 
 +| LT(n) | Sisend peab olema väiksem n-st | 
 +| BM(n) | Kontrollitakse n-ndat bitti sisendis | 
 +| CSM(n) | Sisendi väärtus peab olema suurem või võrdne n ja eelmise meelde jäetud ultraheliandurist saadud kauguse summaga | 
 +| CSB(n) | Sisendi väärtus peab olema suurem või võrdne n ja eelmise meelde jäetud ultraheliandurist saadud kauguse vahega | 
 +||| 
 +| DRV(l, r| Seab vasaku mootori kiiruseks l ja parema mootori kiiruseks rArvud -100...100kus 0 on peatatud olek ning negatiivne arv tähistab sama kiirust vastassuunas
 +| STA(n) | Seab uue oleku n | 
 +| TMR(n) | Seab taimeri uueks väärtuseks n | 
 +| ROL(0/1) | Lülitab pallihoidmise rulliku välja/sisse | 
 +| LED(0/1) | Lülitab LED'i välja/sisse | 
 +| SEG(0-9) | Seab 7-segmendilise indikaatori näidatava väärtuse 0-9 |
  
 <code c> <code c>
Line 286: Line 327:
 }; };
 </code> </code>
 +
 +Järgnevalt on toodud roboti //main// funktsioon kus käivitatakse kõik katkestustel toimuvad protsessid ja täidetakse põhialgoritmi vastavalt olekutabelist loetud väärtustele. Selles funktsioonis asub lõputu tsükkel, mis kontrollib igal läbimisel kõigis tabeli ridades olevaid sisendeid. Kui mõne tabelirea kõigis määratud sisendites on vastav väärtus, siis täidetakse samas reas kirjeldatud väljundite väärtused. Näiteks roboti käivitamiseks nupust on tabeli alguses rida, mille ainsateks sisendtingimusteks on see, et robot on peatatud ning vastavat nuppu on vajutatud. Kui need tingimused on täidetud, määratakse olekuks "2" ning robot hakkab palliotsimisprotsessiga pihta.
 +
 +Enne tabeli ridade kontrollimist loetakse puhvritest kõigi andurite väärtused ning uuendatakse ka LCD ekraanil olevat infot. Et vähendada ekraani uuendamisega kaasnevat viidet on uuendamine jagatud kuue tsükli vahel, millest igas tsüklis uuendatakse erineva anduri väärtust ekraanil.
  
 <code c> <code c>
Line 525: Line 570:
   * {{:images:projects:soccer_robot:joonised_mudel.rar|Mudelid ja joonised}}   * {{:images:projects:soccer_robot:joonised_mudel.rar|Mudelid ja joonised}}
   * {{:images:projects:soccer_robot:soccer_robot_software.zip|Funktsioonidega programm}}   * {{:images:projects:soccer_robot:soccer_robot_software.zip|Funktsioonidega programm}}
-  * Tabelitega programm +  * {{:images:projects:soccer_robot:soccer_robot_table_based.zip|Tabelitega programm}} 
 +  * {{:images:projects:soccer_robot:skeem.zip|RC5 vastuvõtja skeemi ja trükkplaadi joonised}} 
 +  * {{:images:projects:soccer_robot:tarkvara.zip|RC5 vastuvõtja tarkvara}} 
 +  * {{:images:projects:soccer_robot:rc5_komponendid.rar| RC5 vastuvõtja komponentide nimistu}}
 ~~CL~~ ~~CL~~
 © TTÜ, MTÜ TTÜ Robotiklubi © TTÜ, MTÜ TTÜ Robotiklubi
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
et/projects/soccer_robot.1283191677.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0