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
Note
- Il progetto è obbligatorio per il superamento dell'esame.
Può essere realizzato singolarmente o in coppia e deve essere
concordato con il docente. Una volta concordato, inviare una
mail al Prof. Buttazzo indicando:
- il titolo del progetto;
- i nomi e gli indirizzi Email degli studenti coinvolti.
- Il progetto deve essere consegnato su dischetto o CD ROM
almeno una settimana prima dell'esame e deve essere affiancato
da una relazione su carta che descrive il lavoro svolto.
Il disco deve contenere i sorgenti, l'eseguibile e la relazione.
In particolare, la relazione deve contenere (nell'ordine):
- un foglio con il titolo e i dati dell'autore (o degli autori);
- la descrizione generale dell'applicazione realizzata;
- lo schema a blocchi delle interazioni tra processi e risorse;
- la descrizione delle funzionalità di ogni processo e risorsa;
- la descrizione dell'interfaccia esterna e dei comandi di utente.
- Il progetto viene valutato da 0 ad un massimo di P punti,
che vanno a sommarsi al voto dello scritto. Il valore di P
dipende dalla tipologia di progetto.
- Link utili
- Supporto tecnico
Per il supporto tecnico contattare presso il laboratorio:
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:
- 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.
- 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.
- 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à.
- 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.
- Arcanoid (P = 2)
PRESO
Consiste nella realizzazione del gioco dei mattoni, denominato
Arcanoid.
- Tiro a segno (P = 2)
Consiste nella realizzazione del gioco del tiro a segno con
bersagli mobili. Vedi
Agent-K per un esempio.
- Aliens (P = 2)
Consiste nella realizzazione del gioco denominato
Aliens.
- Air Hockey (P = 2)
PRESO
Consiste nella realizzazione del gioco
Air-Hockey.
- A-Blast (P = 2)
Consiste nella realizzazione del gioco denominato
A-Blast.
- Ball Eat (P = 2)
PRESO
Consiste nella realizzazione del gioco
Ball Eat.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Biliardo 2D (P = 2)
PRESO
Realizzare il gioco del biliardo.
Cliccare
Pool per un esempio.
- Biliardo 3D (P = 3)
PRESO
Realizzare il gioco del biliardo con grafica tridimensionale
mediante libreria Open GL.
- 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.
- 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:
- 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.
- 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.
- 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.
- 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:
- 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.
- 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.
- 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.
- 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:
- 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.
- 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.
- 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.