This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:projects:3pi:linefollow [2015/11/12 10:54] – kaupo.raid | et:projects:3pi:linefollow [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | + | ====== |
| - | Tegemist on Pololu poolt koostatud näiteprogrammiga, | + | ==Pololu QTR infrapunaandurite seadistamine ja lugemine== |
| - | Alloleval pildil on näidatud ära joonejärgimise algoritmi tööpõhimõte. 3pi robotil on 5 andurit, aga lihtsuse mõttes vajab algoritm neist ainult 3-e keskmist. Algoritmil on kolm olekut olenevalt roboti andurite asetsemisest joone suhtes.\\ | + | |
| - | {{: | + | |
| - | + | ||
| - | + | ||
| - | ==Pololu QTR infrapunaandurid== | + | |
| QTR andurite lugemisel on vaja eelnevalt andurid initsialiseerida. Vastav funktsioon on " | QTR andurite lugemisel on vaja eelnevalt andurid initsialiseerida. Vastav funktsioon on " | ||
| Line 16: | Line 11: | ||
| Funktsioon loeb iga anduri väärtuse vahemikus 0 kuni 1000, mis on vastavalt kalibratsioonile kõige heledama ja kõige tumedama pinna väärtusele vastavusse seatud. Edasi korrutatakse iga anduri väärtus läbi vastava kaaluteguriga. Alustades kõige vasakpoolseimast andurist on kaalutegurid vastavalt 0, 1000, 2000 jne. Lõpuks jagatakse kõigi kaaluteguritega korrutatud andurite summa veel kõigi andurite summaga. Valemi tulemuseks on väärtus vahemikus 0 kuni 4000. Seega kui ainult kõige vasakpoolsem andur näeb musta joont, siis on tagastatav väärtus 0. Vasakult kolmanda anduri puhul on see 2000 ja kõige parempoolsema korral 4000. Valemi hea omadus on see, et joone positsioon on paremini määratav, sest teada on ka olekud kui must joon on kahe anduri vahepealses osas. Lisaks kui tekib olukord et näeb rohkem kui üks andur siis valem leiab kõigi andurite summa järgi umbkaudse joone asukoha. | Funktsioon loeb iga anduri väärtuse vahemikus 0 kuni 1000, mis on vastavalt kalibratsioonile kõige heledama ja kõige tumedama pinna väärtusele vastavusse seatud. Edasi korrutatakse iga anduri väärtus läbi vastava kaaluteguriga. Alustades kõige vasakpoolseimast andurist on kaalutegurid vastavalt 0, 1000, 2000 jne. Lõpuks jagatakse kõigi kaaluteguritega korrutatud andurite summa veel kõigi andurite summaga. Valemi tulemuseks on väärtus vahemikus 0 kuni 4000. Seega kui ainult kõige vasakpoolsem andur näeb musta joont, siis on tagastatav väärtus 0. Vasakult kolmanda anduri puhul on see 2000 ja kõige parempoolsema korral 4000. Valemi hea omadus on see, et joone positsioon on paremini määratav, sest teada on ka olekud kui must joon on kahe anduri vahepealses osas. Lisaks kui tekib olukord et näeb rohkem kui üks andur siis valem leiab kõigi andurite summa järgi umbkaudse joone asukoha. | ||
| + | |||
| + | ==Lihtsa algoritmiga joonejärgija programm== | ||
| + | |||
| + | Tegemist on Pololu poolt koostatud näiteprogrammiga, | ||
| + | Alloleval pildil on näidatud ära joonejärgimise algoritmi tööpõhimõte. 3pi robotil on 5 andurit, aga lihtsuse mõttes vajab algoritm neist ainult 3-e keskmist. Algoritmil on kolm olekut olenevalt roboti andurite asetsemisest joone suhtes.\\ | ||
| + | {{: | ||
| + | |||
| + | Programmi initsialisseerimise funktsioon on hästi pikk ja lohisev, kuid ei tasu selle osas ära ehmatada kui kõike kohe ei mõista. Targem on initsialiseerimise funktsiooni mitte muuta, kui ei tea täpselt mida teed. Põhiline joonejärgimise algoritm jookseb aga main() funktsiooni while tsüklis, mis asub programmi alumises osas. \\ | ||
| + | |||
| + | < | ||
| + | __Joonejärgimise algoritmi kohta saab rohkem lugeda Pololu näidisprojektist: | ||
| <code c> | <code c> | ||
| Line 213: | Line 219: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | |||
| + | </ | ||