Optiline odomeeter

Allikas: Digilabor

Arvuti hiirest välja võtta diood või laser ja paigutada see roboti alla. PS/2 töötlemisega pidavat hakkama saam ka mikrokontroller. Projektis Permutaator on plaanis see ühendada arvuti külge.

Sisukord

Hiirte võrdlus

Lihtne dioodiga hiir:

  • odavam
  • Hind alates 70 eeku

Kallimad laseriga hiired:

  • suurem DPI
  • vägevam sagedus
  • Hind alates 150 eeku, reaalselt natuke kallimad

Veel määrab palju hiires olev kivi, mille ülesandeks on võrrelda pinnast tehtud pilte ja selle järgi selgitada nihke pikkus. Arvatavasti teeb see kallimad hiired paremaks, aga hetkel pole saanud seda testida.

Laserhiire täpsus

Ordist ostetud 170.- Defender (1600dpi) annab seniste katsete juures täpset tulemust kiirusel kuni 20cm/sek. Ma võisin testimisel teha vea valides nii suure dpi. Loogiline oleks, et ühe bit'i sisse mahub tegelikult rohkem infot, kui kasutada poole väiksemat resulutsiooni.

Meie robotile sellest loodetavasti piisab. Võib-olla kallimate hiirte või väiksema DPIga saab parema tulemuse... hetkel ei tea.

Testimiseks tegin programmi cmouse2 ja sellega mõõdetud andmeid visualiseerivad kaks diagrammi. Programmi aluseks on kaks lihtsamat scripti cmouse.c ja pythonmouse.py, mis on kindlasti lihtsamad näited hiire lugemisest.

Mõlemal diagrammil on horisontaalteljel kiirus (cm/s) ja vertikaalteljel pikslite tihedus (px/cm).

Kasutusel oli algelisem programmi versioon, mis ei filtreerinud ise välja katseid, kus hiir sattus viltusesse asendisse (vähendab täpsust)
Uuem programmi versioon filtreeris vähemtäpsed katsed välja ja seega on graafik joonistatud täpsemate, aga vähemate katsete alusel


Kuna kahtlused ei andnud rahu, siis sai kiirelt ära mõõdetud ka madalama DPI'ga ja õnneks vastasid tulemused ootustele. Nüüd on täpne mõõtmine kuni kiiruseni 40cm/s kohta.

Poole väiksema DPIga tehtud mõõtmised. Seekord sai rohkem katseid tehtud madalamatel kiirusetel.


Kahe hiire matemaatika

Pöördliikumise ja otseliikumise arvestamine.
Lisaks pöörd- ja otseliikumisele ka külgliikumise arvestamine.

Kui sensorite vaheline kaugus on fikseeritud, saab uue asukoha välja arvutada järgmise meetodiga:

  • Vaatame mõlema sensori mõlemat komponenti eraldi
  • Sensoreid ühendava sirgega risti olevad komponendid (antud juhul X) näitavad sensori läbitud teepikkust pöörlemispunktile toetuval kaarel. (Vaata joonist). Kusjuures kehtivad järgmised valemid (kus b on sensorite vaheline kaugus, r on pöörlemispunkti kaugus sensorite vahelise lõigu keskpunktist ja a on kaarele toetuv nurk)
    • r = 0.5 * b * (x1+x2) / (x1-x2)
    • a = (x1 - x2) / b
  • Kaarele toetuva raadiuse (ehk sensoreid ühendava sirge) suunalise liikumise võib arvesse võtta peale uute sensori asukohtade leidmist kaarel nihutades uut punkti raadiusel vastavalt külgliikumise pikkusele.

Kirjeldatud matemaatika on realiseeritud programmis multimouse.

Tulemus praktikas

Kolm meetrit otse liigutades kaldus matemaatiline tulemus 50 cm kõrvale, mis toimus vist veast nurgas. Ma kasutasin kahte hiirt, et leida roboti nurk ja siis liikumine. Kui ma pidevalt liidan natuke viltu keeranud robotile otsa teepikkus ja teda veel viltu keeran, on loogiline, et viga kulmuneerub. Peale selle on veel kolm hüpoteetilist probleemi:

  • väike mitteparaleelsus kahe hiire vahel (võib-olla välditav matemaatilise mudeli täiustamisega (ma ei arvesta hiirte mitteparaleelsusega)
  • hiirte erinevast kõrgusest või erinevast pikslit-sentimeetri-kohta konstandit (peaks saama vältida iseõppimisvõimaluse programeerimisega (mõõdab hiirte näidud sirgel sõidul))
  • odavad laserhiired ei ole ikka piisavalt täpsed, aga oleks mõtet proovid kallimaid gamerite laserhiiri

aga lõplikult ei ole välistatud ka kehv matemaatiline mudel või vead mudeli realiseerimises.

Loodetavasti leian hiljem aja ka väikse joonise lisamiseks.

Hetkel on kasutatav lühikeste vahemaade või konkreetsemate ülesannete jaoks. Võib-olla kui suund võtta hoopis grüolt jääb alles ainult ühe hiire viga, mida kaks veel keskmistavad (ühe hiire viga oli 5% minu kasutatud hiirtel)

Johu 5. detsember 2009, kell 19:46 (UTC)

Mõned lingid

Vaata ka

  • cmouse2 - programm hiirelt saadud andmete uurimiseks
  • multimouse - kahe hiire matemaatika realisatsioon
Personaalsed tööriistad
Navigeerimine
Käsitöö