Koncept
operacijskega sistema v realnem času
Gašper Petrač
Zahtevan je koncept krmiljenja robota. Definirati je potrebno procese, ki so potrebni, kako naj se le ti izvajajo, shemo dodeljevanja časa procesom in oceniti časovno zahtevnost posameznega procesa.
Globalni vektor premika nam je znan iz krmilnega računalnika, od koder ga pošljemo robotu.
Sprejem podatkov -> senzor -> načrt -> pogon
Ta proces ima nalogo, da zbere informacije, ki so jih zbrali senzorji. Vedno začne z istim senzorjem in gre v isti smeri Senzorji so UV in IR in zbirajo samo informacijo ali je v smeri
katerga od 12 senzorjev ovira ali je ni. Eni so natančnejsi drugi pa lahko 'skenirajo' daljše razdalje. Imamo tudi senzorje na dotik.
Ta proces je precej kratek, saj samo pobere informacije iz senzorjev (njih pomnilnika) in jo posrteduje POGONu ali NAČRTu.
SENZOR - zbere informacije iz senzorjev
- pošlje zbrane informacije:
if dotik POGON STOP
else NAČRT
- klic Newtask
- skok SENZOR
Okolje predstavimo z 2d koordinatnim sistemom. Predpostavljamo da grobo (globalno) pot izračunamo na začetku, iz podatkov nadzornega računalnika. Po tem delu pa računamo le še
kratke dele poti (lokalne), odvisne od podatkov iz senzorjev. Ta proces je časovno zahtevnejši (1-2s). Zato lahko odstopi tudi sam, če ne, ga dodeljevalnik časa prekine, in mu nato dodeljuje prosti čas.
NAČRT - sprejme podatke od senzorjev
- sprejme pozicijo od pogona
- izračuna del poti
- pošlje podatke (vektor) POGON-u in predstavitvenem okolju
- klic Newtask
- skok NAČRT
Vključuje ga dodeljevalnik časa za 5ms vsakih 100ms. Senzorji na dotik so direktno povezani z pogonom. Če se robot česa dotakne dodeljevalnik takoj preskoči na proces pogon in ga ustavi. Iz vrtenja motorjev (koles) dobimo dejanski vektor premika, katerga načrtovalec preveri in korigira novi vektor če je potrebno.
POGON - sprejme vektor premika od NAČRT
- glede na vektor zakrmili motorje
- izračuna dejanski vektor premika
- novi vektor pošlje NAČRTu
- klic Newtask
- skok POGON
je potrebna predvsem zato, da ne bi naslednji proces zahteval podatkov ki še niso relevantni.
Vsaj delno je treba prebrati vrednosti v senzorjih, na njihovi podlagi je treba izračunati vsaj delček poti in šele na koncu lahko vklopimo pogon.
ni samostojen proces, ker je del operacijskega sistema. Sami definiramo kdaj ga pokličemo, pokličemo pa ga lahko edinole z prekinitvijo.
dodeljevanje časa med računanjem globalne poti, med vožnjo
POGON predstavlja 5% časa, 30% SENZOR, in 65% NAČRT
Procesom dodeljujemo čas, senzorje in načrt pa prekinjamo med delom, in kličemo pogon, nato pa spet senzorji in načrt,....
shema dodeljevalnika :