Progetti sui sistemi real-time - A.A. 2005-2006

Il progetto consiste nello sviluppo di una applicazione di controllo concorrente, con caratteristiche real time, da realizzare in linguaggio C sul sistema operativo SHARK. Tale sistema può essere prelevato dal sito

http://shark.sssup.it


Note


Applicazioni simulate

In questo caso, si dovrà realizzare una semplice simulazione di un sistema di controllo e dell'ambiente con cui tale sistema interagisce. Le applicazioni disponibili sono:

  1. Palline ed elastici (P = 1)      PRESO
    Simulare un insieme di palline poste su un piano orizzontale (lo schermo) e collegate tra loro mediante elastici. In una fase iniziale, il programma deve consentire all'utente di creare le palline col mouse in una posizione desiderata e quindi di effettuare i collegamenti elastici con le altre palline. Successivamente, il programma dovrà gestire il moto delle palline supponendo che una di esse venga trascinata dal mouse.

  2. Occhi che inseguono (P = 1)      PRESO
    Realizzare un programma che consenta di creare un occhio sullo schermo con un clic del mouse in una posizione desiderata. Di seguito, gli occhi creati inseguono la posizione del mouse.

  3. Occhi 3D (P = 2)
    Versione 3D del progetto precedente da realizzare con le librerie OpenGL. Il movimento dell'oggetto da seguire è ottenuto mediante lo spostamento del mouse sul piano dello schermo e lo scroll della rotella per la profondità.

  4. Flipper (P = 2)
    Si tratta di simulare il gioco del Flipper, in cui la pallina viene rilevata da un ipotetico sistema di visione che scandisce la matrice di pixel di una opportuna finestra del video. I task coinvolti riguardano la gestione della pallina (prevedere la possibilità di creare più palline simultaneamente) gli attuatori di rimbalzo, i due pulsanti di comando e la rilevazione visiva della pallina.

  5. Arcanoid (P = 2)      PRESO
    Consiste nella realizzazione del gioco dei mattoni, denominato
    Arcanoid.

  6. Tiro a segno (P = 2)
    Consiste nella realizzazione del gioco del tiro a segno con bersagli mobili. Vedi Agent-K per un esempio.

  7. Aliens (P = 2)
    Consiste nella realizzazione del gioco denominato Aliens.

  8. Air Hockey (P = 2)      PRESO
    Consiste nella realizzazione del gioco Air-Hockey.

  9. A-Blast (P = 2)
    Consiste nella realizzazione del gioco denominato A-Blast.

  10. Ball Eat (P = 2)      PRESO
    Consiste nella realizzazione del gioco Ball Eat.

  11. Pesca subacquea (P = 2)
    Il giocatore impersona un sub che va a pesca subacquea con un fucile a fiocina. I pesci si muovono in gruppo, seguendo un leader, con una componente pseudo-casuale. Quando si spara, i pesci che si trovano vicino alla traiettoria della fiocina scappano nella direzione opposta. Simulare gruppi di pesci piccoli, pesci grossi singoli, e polpi, con punteggi diversi (a seconda della difficolta' di prenderli). Aggiungere una casualita' di traiettoria sulla fiocina, per simulare l'effetto delle correnti d'acqua.

  12. Pesca con canna (P = 2)
    Il giocatore impersona un pescatore con la canna. La parte superiore dello schermo visualizza il pescatore, quella inferiore il mare con i pesci. I pesci vagano e mangiano l'esca e abboccano solo se si tira la canna al momento giusto. Le azioni possibili sono: lancio, tiro, avvolgimento. Vedere Fishing come esempio.

  13. Asteroids (P = 2)
    Il gioco simula un'astronave che vaga nello spazio (guidata con le frecce) e visualizza gli asteroidi e i corpi celesti che si incontrano. Il giocatore deve evitare di scontrarsi con essi.

  14. Macchine da scontro (P = 2)      PRESO
    Simulare un insieme di macchine da scontro. Una delle macchine è pilotata da tastiera, mentre le altre sono gestite dal programma.

  15. Gara con bighe (P = 2)
    Una biga elettronica è un veicolo a due ruote che si mantiene in equilibrio dinamico come un pendolo inverso. Simulare una gara di bighe elettroniche. Una delle bighe è pilotata da tastiera, mentre le altre sono gestite dal programma.

  16. Palline e canestro (P = 2)      PRESO
    Simulare il gioco del Luna park in cui dal centro dello schermo, per un tempo prefissto, vengono lanciate delle palline in varie direzioni (tipo fontana). Le palline devono essere raccolte da due canestri mobili controllati da due giocatori. Vince chi raccoglie più palline.

  17. Cronometri (P = 2)
    Simulare una serie di cronometri che rilevano gli intervalli di tempo fra eventi di tastiera. Ogni cronometro e' dedicato ad un particolare evento e visualizza il tempo sia in forma digitale che analogica, con i quadranti dei minuti, secondi, e decimi di secondo.

  18. Ascensori (P = 2)      PRESO
    Simulare il comportamento di due ascensori che operano in un palazzo di 5 piani. Realizzare una strategia di controllo che consenta agli ascensori di cooperare ottimizzando il trasporto delle persone. Occorre generare casualmente sia le persone che arrivano ad un piano, sia le azioni che queste persone richiedono sull'ascensore (salita o discesa). Supporre inoltre che ogni ascensore sia in grado di misurare il peso complessivo delle persone a bordo.

  19. Incroci (P = 2)      PRESO
    Simulare due incroci cittadini a 4 strade con semafori e corsie preferenziali per bus e taxi. Le macchine vengono rappresentate con dei rettangoli di (es. 4x8 pixel), gli autobus con dei rettangoli piu' grossi.

  20. Biliardo 2D (P = 2)      PRESO
    Realizzare il gioco del biliardo. Cliccare Pool per un esempio.

  21. Biliardo 3D (P = 3)      PRESO
    Realizzare il gioco del biliardo con grafica tridimensionale mediante libreria Open GL.

  22. Ping Pong 3D (P = 3)      PRESO
    Simulare il ping-pong in una particolare ambientazione tridimensionale. La pallina subisce degli effetti dovuti allo spostamento del mouse al momento dell'impatto. L'avversario deve essere simulato in modo da garantire la giocabilita' della simulazione. Esso diventa piu' reattivo con l'avanzare dei livelli. Cliccare PP-3D oppure Curveball per avere un esempio di riferimento.

  23. Proposte Originali
    È possibile proporre un progetto diverso da quelli elencati. Tuttavia, la proposta deve prima essere approvata dal docente. Gli studenti che intendono proporre una loro idea sono pregati di descriverla e inviarla via E-mail al Prof. Buttazzo.


Applicazioni Distribuite (max 3 punti)

Questo tipo di progetto consiste nello sviluppo di un'applicazione su rete, che preveda piu' giocatori su computer diversi. Le applicazioni possibili sono:
  1. Ping-Pong Distribuito
    Si tratta di realizzare il gioco del ping pong, in cui ogni giocatore opera sul proprio computer. La comunicazione tra i due computer può avvenire mediante linea seriale RS232 o rete locale.

  2. Battaglia spaziale distribuita
    Si tratta di realizzare una battaglia tra due astronavi, in cui ogni giocatore opera sul proprio computer, ma vede la scena complessiva. La comunicazione tra i due computer può avvenire mediante linea seriale RS232 o rete locale.

  3. Sincronizzazione distribuita
    L'obiettivo della sincronizzazione distribuita e' di produrre una nozione uniforme del tempo tra diverse macchine collegate in rete. I computer si scambiano messaggi contenenti opportune informazioni per costruire un clock virtuale uguale per tutti.

  4. MIDI distribuito
    Si tratta di utilizzare la rete locale Ethernet per inviare da un personal computer Master ad uno o piu' Slave dei messaggi contenenti eventi MIDI, che devono essere poi suonati in real-time sui comuper Slave.

Applicazioni Reali (max 3 punti)

Questo tipo di progetto consiste nello sviluppo di un'applicazione che preveda l'uso di sensori disponibili presso il laboratorio di robotica. Le applicazioni possibili sono:
  1. Tiro a segno con telecamera
    Si tratta di realizzare il gioco del tiro a segno in cui il giocatore impugna una pistola luminosa dotata di due led (infrarossi) che, opportunamente acquisiti da una telecamera, consentono di determinare la direzione di sparo. Lo sparo e' causato dall'accensione di un terzo led.

  2. Tiro a segno con fotodiodo      PRESO
    Si tratta di realizzare il gioco del tiro a segno in cui il giocatore impugna una pistola luminosa dotata di un fotodiodo che, acquisendo il bersaglio dallo schermo, consentono di determinare la direzione di sparo. Lo sparo è causato dalla pressione di un tasto. Fare riferimento al link
    Duck Hunt per vedere un esempio e al link Light gun per ulteriori dettagli tecnici sul funzionamento della pistola.

  3. Guanto sensorizzato      PRESO
    Si tratta di realizzare un'applicazione in cui l'operatore indossa un guanto sensorizzato per realtà virtuale (disponibile in laboratorio) e controlla la presa e lo spostamento di oggetti virtuali generati sullo schermo mediante grafica Open-GL.

  4. Sistema Inerziale
    Si tratta di realizzare un sensore inerziale costituito da accelerometri o giroscopi (disponibili in laboratorio), acquisiti mediante scheda a microcontrollore, per monitorare la posizione di un oggetto libero di muoversi nello spazio. La posizione dell'oggetto deve essere rappresentata in 3D sullo schermo mediante librerie OpenGL.

Progetti a livello kernel (max 3 punti)

Questo tipo di progetto consiste nel test o nello sviluppo di semplici meccanismi interni al kernel SHARK. Possibili progetti:
  1. Test del tracer      PRESO
    Scrivere un'applicazione con almeno tre processi periodici e due aperiodici, e monitorare l'attività di sistema utilizzando il meccanismo di tracer. Associare i task aperiodici a due server diversi per illustrarne il diverso comportamento.

  2. Valutazione dell'overhead
    Scrivere un'applicazione che misuri l'overhead di sistema su alcune primitive di maggior uso. I tempi devono essere misurati su grande numero di ripetizioni, riportando i valori minimi, medi e massimi.

  3. Test sui protocolli per risorse
    Scrivere un'applicazione con almeno cinque processi periodici e 4 risorse condivise, monitorando le attività di sistema utilizzando il meccanismo di tracer. Quindi calibrare l'applicazione in modo da illustrare il diverso comportamento dei protocolli PIP e PCP.