Seminarska naloga pri predmetu Sistemi v realnem času

 

 

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.

 

 

Procesi:

Sprejem podatkov -> senzor -> načrt -> pogon

 

 

- zbiranje informacij iz senzorjev

 

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

 

 

- načrtovanje poti, predstavitev okolice in interpreter ukazov nadzornega računalnika

 

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

 

 

 

 

- pogon

 

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

 

 

 

Sinhronizacija med procesi

 

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.

 

 

 

Dodeljevalnik časa

 

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 :