Fa oltà diIngegneria
CorsodiLaurea QuinquennaleinIngeneria Informati a
tesi dilaurea
Interfa iamento tele amera per
tra king
Relatore: prof. Emanuele Menegatti
Correlatore: ing. StefanoGhidoni
Laureando: Fabio Rossignoli
Questa tesi tratta dell'integrazione del brandeggio Ulisse Compa t 2, prodotto
dall'azienda Videote S.p.A., nel sistema di tra king pervideosorveglianza
im-plementato grazie ad un middleware (NMM 4). Un brandeggio è un supporto
pertele amera he può ruotare ontemporaneamenteinsenso orizzontale e
ver-ti ale, lungo assi denominati pan e tilt, mentre un middleware, in breve, è un
softwarediinterfa iatra appli azionie risorse diunarete.
Il lavoro, svolto nello IAS Lab (Intelligent Autonomous Systems
Laborato-ry)dell'UniversitàdiPadova,èpartitodall'installazionedella onnessioneseriale
tra la tele amera ed il PC, osì da permetternela re ipro a omuni azione. Si
sono fatti i dovuti test di funzionamento attraverso l'interfa ia seriale
Cute-Comesièpoiimplementatoilproto ollo di omuni azionedell'UlisseCompa t,
denominato Proto ollo MACRO, in linguaggio di alto livello. Una volta
ot-tenuti questi strumenti base di omuni azione, si è pro eduto alla s rittura di
un'interfa ia he permettesse ad un normale utente il totale ontrollo
dell'ap-pare hiatura. Aquestopunto sièiniziato illavorodiintegrazione nelsoftware
di tra king he ne ha ri hiesto inizialmente lo studio teori o ed in seguito la
ompleta omprensionedel odi e heloimplementa. Sisonoquindiin apsulati
imetodidi ontrollo pre edentemente preparatiper l'Ulisse nel odi e sorgente
del pa hetto di videosorveglianza e fall dete tion. Nel ontempo si avviava lo
studio e l'installazione del middleware NMM (Network-Integrated Multimedia
Middleware) no a renderlo operativo all'interno del laboratorio, sulla stessa
ma hina già in omuni azione on la tele amera e on installato il tra king di
ui si è parlato. L'ultimo passo è stata l'implementazione dell'Ulisse in NMM,
perquanto riguarda l'inseguimento deisoggettitra kati el'inquadramento delle
adute rilevate dallo stesso sistema. Inne si sono fatti diversi test he hanno
datorisultatisoddisfa enti,inparti olarenellafasediinseguimentodelsoggetto
tra kato,grazie an heallagrandeversatilità,soprattutto inambito di ontrollo,
delbrandeggio ( apa ità diposizionamento se ondo oordinateassolute).
Tutti isoftware usati (GNU/Linux, E lipse, NMM, CuteCom, L A
T
E
X[1℄ [2℄)
1 Introduzione 1 1.1 Lavideosorveglianza . . . 1 1.2 Contesto appli ativo . . . 3 1.3 Obiettivi. . . 5 1.4 Lavoroditesi . . . 6 1.5 Ipotesidiprogetto . . . 6
1.6 Materiale giàpresente . . . 7
2 La tele amera Ulisse Compa t 9 2.1 Collegamento . . . 10
2.2 Congurazione . . . 12
2.3 Datasheet . . . 15
3 Implementazione del proto ollo 17 3.1 Interfa ia C++di ontrollo . . . 17
3.2 Interfa ia C++di omando. . . 19
3.3 S hemadell'ambiente. . . 22
4 NMM (Network-Integrated Multimedia Middleware) 25 4.1 Te nologia alla basediNMM . . . 26
4.2 Ar hitettura generalediNMM . . . 27
4.3 Servizi middlewareaggiuntivi . . . 29
4.4 L'organizzazione a nodi, ja keowgraph . . . 29
4.5 Sistema dimessaging . . . 30
4.6 Gradi ussodistribuiti (Distributed FlowGraphs) . . . 31
4.7 Sin ronizzazione distribuita . . . 32
4.8 RegistryServi e. . . 32
4.9 UtilizzodiNMM . . . 33
4.9.1 Installazionee test NMM . . . 33
4.9.2 Metodologiediutilizzo . . . 37
4.9.3 Cli (Command Line Intera tion and Conguration) . . . 37
5 Tra king e Fall Dete tor 43
5.1 Creazione del ontrollo . . . 45
5.2 Creazione dei nodiNMM . . . 48
5.2.1 Integrazione alFallDete tionNode . . . 48
5.2.2 Integrazione alVideoEventRe eiverNode . . . 52
6 Con lusioni 59
Bibliograa 62
Elen o delle tabelle 64
Introduzione
Usando una frasefatta, tanto invoga nell'ambiente dell'e onomia dilargo
on-sumo, si può tranquillamente aermare he la videosorveglianza è uno di quei
settori he non onos e risi.
Nata ome on etto di ontrollo del territorio all'alba della iviltà,
tra-s ende oggi il sempli e ambito dell'auto onservazione e diventa indispensabile
strumento disi urezza e ontrolloso iale.
Arri hitadellenuovete ni heete nologieoreampiambitidiri er ae
svi-luppo tanto sul pianodell'invenzione dinuovistrumenti, quanto nella reazione
di un'intelligenza arti iale in gradodi sostituire, seppur limitatamente, quella
umana.
Dall'unione dei moderni appare hi di ripresa e dallo studio e
implementa-zione degli algoritmi di elaborazione delle immagini, e o nas ere, appunto, la
videosorveglianza intelligente.
1.1 La videosorveglianza
L'atto di videosorvegliare onsiste nel vigilare, generalmente un luogo o
o-munque un bene, a distanza, tramite l'utilizzo di tele amere strategi amente
posizionate.
La videosorveglianza nas e in ambito analogi o e la sua storia è molto più
brevediquella deisistemianti-intrusione, esistenti sindall'anti hità.
Il primo esperimento diTVCC (TeleVisione a Cir uito Chiuso) viene
attri-buita all'ingegnere tedes o Walter Bru h nel 1942. L'impianto venne realizzato
dalla Siemens a Peenemunde sulla rampa di lan io Prüfstand VII e serviva a
monitorare i lan i dei razzi V-2 , i più sosti ati missili militari della Se onda
GuerraMondiale.
Perleprimeappli azioniadusononmilitarebisognaattendereil1965,
videosorve-NelRegno Unitoneiprimianni'70ful'IRA(IrishRepubli anArmy),a
on-tribuire ad una diusione massi ia degli impianti divideosorveglianza, seguita
a metà del de ennio alla prima rivoluzione elettroni a nella videosorveglianza,
on l'introduzione del CCD, un pi olo ir uito integrato in grado di a quisire
le immaginie disostituireil piùingombrante e ostoso tuboVidi on.
Per quanto riguarda laregistrazione video, ilprototipodiregistratore video
su nastromagneti ofusviluppatonel1952dalla Ampex on unappare hio he
utilizzava una testina rotante ed un nastro he si muoveva relativamente lento.
All'iniziodel1956 laAmpexfe eesordireil VR-1000(vediFigura1.1), ilprimo
della seriedeiregistratori sunastrovideo da2polli i Quadruplex(4tra e). La
prima trasmissione televisivaregistrata magneti amentee trasmessaindierita
usando il nuovo sistema di registrazione Ampex fu Douglas Edwards and the
News della CBS il30 novembre del 1956.
Figura1.1: L'AmpexVR-1000
L'assemblaggioQuadHeadaveva4testine heruotavanoa14400 rpm.
S ri-vevano il segnale video verti almente lungo la larghezza di un nastro largo 2
polli i ( ir a5 m) hesi muoveva allavelo itàdi15polli i(38 m)alse ondo.
Questo permetteva a programmi lunghi ore di essere registrati su una singola
bobina (nel 1956 una bobina di nastro ostava 300 dollari, equivalenti a
ir- a duemila dollari nel 2000, e i registratori ostavano da settanta inquemila a
entomila dollari, ir a mezzo milione didollari dioggi).
Nel1967laAmpexintrodusseilVR-3000,unregistratorevideoportatile, he
rivoluzionò la registrazione televisiva dialta qualità sul ampo,senza ne essità
ingombranties omodebobine onleprime assette ompatte ontentiunnastro
magneti o,fuintrodottodallaSonyversolanedeglianni'60, mailsistemaera
an orapo oprati o. Nel1972laPhilipsmisesulmer atol'N1500,probabilmente
l'antenato dei sistemi di videoregistrazione domesti a, di dimensioni molto più
ontenute,per iòadattoperleappli azionidiusoquotidiano. Tuttaviailsistema
era an ora molto ostoso e la durata delle registrazioni era piuttosto limitata,
infatti su una assetta era possibile registrare non oltre trenta minuti divideo.
Il 1° Giugno 1975 la Sony lan iò sul mer ato giapponese iprimi due modelli di
Betamax, il lettore SL-6300 e la onsole LV-1801. Dopo un anno e trentamila
prodotti venduti però, arrivò il VHS della JVC, apparentemente simile, ma in
realtà molto diverso dal Betamax. Le assette erano di maggiori dimensioni,
la qualità era de isamente più s adente ma la apa ità di immagazzinamento
per ogni singolo nastro arrivò a to are le quattro ore. A dierenza di Sony,
JVC er ò altri alleati, diondendo e vendendoil brevetto VHS an he ad altre
aziende, sia trai produttori he tra le ase inematogra he e questo ontribuì
ad una solida aermazione del prodotto, ma soprattutto a mantenere i prezzi
del VHS più bassi rispetto al on orrente. Po hi anni più tardi omparvero i
primi registratori VHS time laps, on i quali divenne possibile registrare in
maniera e onomi a, no a 960 ore di lmati su una stessa video assetta. Nel
1999 omparvero sul mer ato i primi DVR, apparati in grado di a quisire un
video e ar hiviarlosu hard-disk.
Iniziò osì l'era della videosorveglianza ome tramissione e storage di dati
digitali(non piùsegnali analogi i).
Il sistema ollegamento più diuso per appli azioni CCTV analogi he è di
fattoil avoCoassiale RG59, on rimpatura diterminali a onnettoreBNC .
La trasmissione digitale di dati video CCTV si sviluppa inve e sullo
stan-dard Ethernet, heutilizza aviinramemulti oppia twistatiUTPe STPper la
trasmissionedati su proto ollo TCP/IP e UDP.
Grazie all'utilizzo delproto ollo universalmente ri onos iuto ome standard
per la tramissione dati, l'evoluzione della videosorveglianza digitale ( hiamata
inbreveIP) ha permesso la ompleta integrazione diquestisistemi nelle reti di
al olatori moderne, favorendone ladiusione (vedi Figura1.2).
Questeultimeevoluzionihannofavoritoilpassaggiodalla videosorveglianza,
rimasta per anni relegata alla sempli e videoregistrazione diussi video, alla
videosorveglianza intelligente, he forte della possibilità di elaborazione delle
immaginiriprese,aprelastradaanuove te nologie,ad oggian oraquasiassenti
nelle soluzioni ommer iali, divideo ontrollo.
1.2 Contesto appli ativo
Il lavoro di tesi va ad inserirsi in un più ampio progetto, teso a realizzare un
Figura 1.2: Esempidistrumentazione perTVCC ollegatitraloro.
intelligente, sempre più libera dal ontrollo umano e più autonoma. Seppur
lontanidall'avereunsistemaautosu iente, sitendeasostituire l'operatoreper
lesituazioninelle qualigli errorioilimitisi iumani omportanodeivin olise
non addirittura deifallimenti.
Un primo esempio è quello del ontrollo di vaste aree o numerosi lo ali. È
ovvio he in tale ir ostanza, un solo operatore risulta insu iente, in quanto
gli sarebbe ri hiesta una ontinua on entrazione (si amente impossibile) e il
ontrollo di numerosi monitor he inevitabilmente sarebbero guardati uno per
volta; inoltre l'aumento del personale omporterebbe ertamente un osto non
tras urabile. Inquesti asil'autonomiadelsoftwarepermetterebbe un ontrollo
inreal-time, an he parallelo, ditutti gliambienti.
Un se ondo esempio è quello del ri onos imento di determinate situazioni.
Essendo la maggior parte dei sistemi di sorveglianza basati su registrazioni a
ir uito hiuso senza la presenza di operatori, su ede he la veri a di eventi
magari importanti per il ontrollo diun territorio, avviene a posteriori
dell'a - adimento degli stessi. Sostanzialmente quel he si fa oggi è di prendere la
regitrazione e riguardarla, er ando quel he interessa. Un sistema autonomo
sarebbe in grado di rilevare prontamente questi eventi e di pro edere in modo
adeguato, avvisandoleautoritàseri onos iutoadesempiounosparoo hiamado
iso orsi seri onos iutauna pesona he adea terra.
All'internodellaboratorioIAS Labdell'Università diPadova sono installati
tre appare hi diripresa:
1. una tele amerapanorami a;
Figura1.3: La tele amerapanorami a OmniDomee laPTZ solidalisullostesso
palo.
Lavori già svolti, hanno permesso l'integrazione delle prime due
appare - hiature in un software di tra king basato su sottrazione dello sfondo, mentre
l'ultima, a quistata di re ente, è oggetto di questa tesi. Prodotta dall'azienda
Videote S.p.A.,èunbrandeggio adalteprestazioniperl'utilizzo inognitipodi
ambiente.
Il al olatore su ui si operaè equipaggiato on un pro essore Intel Core 2
6400, 3GB diRAM, s heda video NVIDIAGeFor e 7600 GSe HDda 230 GB
su uiè installato il sistema operativo GNU/Linux(distribuzione Ubuntu 9.10
Karmi Koala),versione delkernel 2.6.31.
Essoè dotatodidueframegrabberPCIBrooktreeCorporation (Bt878),
uti-lizzati perla attura delusso video edi porte USBstandard per la
omuni a-zione seriale(Figura 1.5 ).
1. implementazionediun'interfa iadi omuni azione onlatele amera
Ulis-seCompa t;
2. implementazione del proto ollo di omuni azione della tele amera Ulisse
Compa t;
3. integrazione on softwareditra king esistente;
4. installazione e ongurazione del middleware NMM per la trasmissione
video su generi arete di omuni azione;
5. interfa iamento della tele amera Ulisse Compa t nel middleware, nella
parte difalldete tion esistente;
6. interfa iamento della tele amera Ulisse Compa t nel middleware, ai ni
dell'ottenimento diun following ontinuo del soggettotra kato;
7. implementazione di un metodo point and li k he permette,
li kan-do sull'immagine visualizzata, di far spostare il brandeggio in modo he
visualizzi quellazona.
1.4 Lavoro di tesi
Il lavoro ditesisi on entrasu tre punti prin ipali:
il ontrollodelbrandeggio e dello zoomdella video amera;
l'integrazione della video amera nelsoftwareditra king;
l'integrazione della video amera nelmiddleware NMM.
1.5 Ipotesi di progetto
In questo progetto si suppone di avere un sistema ditra king basato su
tele a-mere giàfunzionante, he fornis eunavisione delmondoattraverso unamappa
2Dall'internodellaquale sonoidenti atiitarget. Questaèrealizzataapartire
dai frame della tele ameraomnidirezionale OmniDome, he genera una visione
a 360° dell'ambiente ir ostante (Figura 1.4), elaborata al ne di ottenere un
immagine rettangolare daquella tondaoriginale.
Pur non essendo la rilevazione del movimento sempre adabile, si ipotizza
he i target ui far onvergere l'Ulisse, siano sempre buoni e non i si porrà
mai il problemadella orrettezza delmat hing.
Sisuppone inoltre di onos ere lageometria e della mappa e dell'ambiente,
ri avando osì,all'o orrenza, leposizioni assolutedi oggetti etele amere.
Innel'arearistrettadella sperimentazione,illaboratorio,permettedi
Figura1.4: L'immaginegenerata dall'OmniDome.
1.6 Materiale già presente
Comegià itato, sisfrutteràun software ditra king preesistente,all'interno del
quale inserire inuovi moduli. Le video amere OmniDome(panorami a) e PTZ
sono già installate e funzionanti, mentre l'Ulisse Compa t, seppur già ssato
alsotto del laboratorio, ne essita della ostruzione sia si a he software, del
ollegamento seriale.
Si provvederà an he all'installazione e ongurazione del middlewareNMM
sul al olatore des ritto inizialmente, in ui da terzi verrà in luso il tra king
e ol presente lavoro sarà inve e implementato l'interfa iamento on la nuova
tele amera.
Figura 1.5: La postazione di lavoro on PC al quale sono ollegate tutte le
La tele amera Ulisse Compa t
Introduzione
Figura 2.1: Il brandeggio Ulisse Compa t della ditta Videote S.p.A.installato
sulsotto dellaboratorio.
Il brandeggio usato è prodotto dalla ditta Videote S.p.A.ed è denominato
Ulisse Compa t(Figura 2.1).
È un brandeggio ad alte prestazioni on possibilità dimovimenti pan e tilt
asso iati ad una pre isa telemetria. In grado di orire una ontinua
rotazio-ne, an he ad elevata velo ità, possiede un'alta qualità video ed un menù di
hiatura, ingradodiraggiungereuna velo itàorizzontale di200°/s inrotazione
ontinua ed ha unrangeverti ale da-90° a+90°.
Inoltre vi è la possibilità di gestire posizioni predeterminate in maniera
as-soluta e,ingenerale, avereun'a uratezzanelmovimento dell'ordinedelde imo
di grado. Una logi a di ontrollo interna imposta una urva di a elerazione
adeguata pernondanneggiare imototi passo-passo.
L'unità èingrado diveri are ontinuamente inmodo autonomolapropria
posizione, per prevenire o orreggere spostamenti a identali, quali ad esempio
quelli dovuti agli agentiatmosferi i.
La tele amera Sony è a olori, ha risoluzione 720x576 e lo zoom arriva a
36x on una lunghezza fo alevariabile da 3.4mm a 122.4 mm, onsentendo un
angolo di ampo massimodi57.8° e minino di1.7°, apertura massima variabile
traf/1.6ef/4.5efornendoun'e ezionalepre isionesia onglioggettivi ini he
quelli lontani. È possibile dareun valore predenito diingrandimento e questo
verràraggiunto nelminor tempopossibile.
Il sensore CCD Super HAD (versione da zoom otti o 10x) ha dimensione
1/3 dipolli e egarantis e unagrandesensibilitàan he inambientis arsamente
illuminati.
Sihala possibilità di reare mas herepersonalizzateperlaripresa.
L'Ulisse è equipaggiato di OSD (On S reen Display) per la ongurazione,
un'interfa ia RS485/RS422 per un totale ontrollo del sistema e la possibilità
diupdateremoti delrmware.
Leimpostazionipermettonolamodi adelbilan iamento delbian o,
dell'e-sposizione e moltoaltro.
Da notare he, sia per quanto riguarda pan e tilt, sia per quanto riguarda
lo zoom, è permesso lo spostamento ontinuo, o l'ingrandimento ontinuo
-no all'immissione di un espli ito omando di stop. Nel aso quest'ultimo non
fosse inviato, il valore della grandezza in questione arriverà a ne s ala dove
automati amente si fermerà.
Indenitival'UlisseCompa tèunatele ameraidealeperla
videosorveglian-za, per il ontrollo an he di grandi aree e possiede una grande essibilità he
permette an he la sperimentazione di nuove te ni he e te nologie he on altri
hardwaremeno versatilinon sarebbepossibilefare[3℄.
2.1 Collegamento
La onnessione si a dell'Ulisseha omportato un dis retoimpiego ditempo.
Questoper hé inlaboratorio, puressendo ilbrandeggio giàssatoalsotto
e predisposto on un avo di rete Ethernet ome mezzo per la omuni azione
seriale, man ava di do umentazione ir a le modalità di ollegamento. Si è
liperilsu essivointerfa iamento onunaportaserialeutilealla onnessione
alPC.
Sono quindistatiidenti atiiseguentili intensione( ir a495 mV):
verde;
bian o-verde;
aran ione;
bian o-aran ione.
Tra gli altri 4 li, si sono potute identi are le 2 masse, poi hé irestanti 2
li eranoevidentementeottanti:
azzurro;
bian o-azzurro.
Perin iso,restano quindiinutilizzati ilmarrone e ilbian o-marrone(Figura
2.2 ).
Dallespe i he si sa he i ollegamenti seriali possono essere 2;si sono osì
stabilite le griglie per le prove, al ne di stabilire a quali ombinazioni di li
aerissero ledue porte:
+ - GND funziona(sì/no)
verde aran ione azzurro no
aran ione verde azzurro no
bian o-verde bian o-aran ione bian o-azzurro no
bian o-aran ione bian o-verde bian o-azzurro no
Tabella 2.1: Prima griglia diprove.
+ - GND funziona(sì/no)
verde bian o-verde azzurro no
verde bian o-verde bian o-azzurro no
bian o-verde verde azzurro no
bian o-verde verde bian o-azzurro no
aran ione bian o-aran ione azzurro no
aran ione bian o-aran ione bian o-azzurro sì
bian o-aran ione aran ione azzurro nontestato
bian o-aran ione aran ione bian o-azzurro nontestato
Tabella 2.2: Se ondagriglia diprove.
Alla ne siè pro eduto al ollegamento si o deili se ondo questos hema
(Figura 2.3 ):
495+ aran ione;
495- bian o-aran ione;
GND bian o-azzurro.
Grazie all'utilizzo di un'interfa ia i omuni azione seriale hiamata
Cute-Com si sono eettuate delle prove di trasmissione, inviando stringhe
apparte-nentialProto olloMACROdi omuni azioneserialedell'UlisseCompa talne
distabilire il orretto funzionamento ditutto ilsistema.
Sièquindi ollegatalaserialeadun ross ableSERIALE->USBperl'utilizzo
sotto GNU/Linux(Figura2.4).
2.2 Congurazione
Preliminarmente all'utilizzo, l'Ullisse Compa t prevede una fase di
Figura2.3: Il ollegamento deili allaportaseriale.
Congurazioni s elteperidip-swit h:
DIP1
OFF ON ON ON ON ON ON ON
1 2 3 4 5 6 7 8
1 = ON > VISUALIZZAZIONE CONFIGURAZIONE ABILITATA (non
sipuò muoverelatele amera).
1 = OFF > VISUALIZZAZIONE DISABILITATA (posso omandare la
tele amera).
2 =ON+3=ON+4 =ON>VELOCITÀIMPOSTATA A38400 baud.
5 = ON +6 = ON> MODORS485 BIDIREZIONALEHALF DUPLEX
(quindi seriale 1 RS485-1 abilitata infull duplex e seriale 2 RS485-2
disabi-litata). 7 =ON> TERMINAZIONERS485-1ABILITATA. 8 =ON> TERMINAZIONERS485-2ABILITATA. DIP2 OFF ON ON ON ON ON ON ON ON ON 1 2 3 4 5 6 7 8 9 10
1 = ON+ 2= OFF+ 3 =OFF +4 =OFF +5 =OFF +6 =OFF +7
Figura 2.4: Il ollegamento della seriale RS485 on laRS422 perla onnessione
alPC.
DIP3
OFF OFF OFF OFF
1 2 3 4
1=OFF+2=OFF+3=OFF+4=OFF>USODELPROTOCOLLO
2.3 Datasheet
Implementazione del proto ollo
Introduzione
Il MACRO Proto ol [4℄ è il proto ollo fornito dall'azienda Videote , per il
ontrollo da remoto del brandeggio Ulisse Compa t di produzione della ditta
medesima.
Esso si ompone di una serie di aratteri ASCII, raggruppati tra
parente-si quadre [ ℄ he segnano onvenzionalmente l'inizio e la ne del messaggio.
Quest'ultimo saràpoiinoltrato viaseriale.
Il sistemaè asesensitive enessuno spazio bian o èammesso.
I parametri sonosolitamente numeri i eseparati davirgole.
Nonèpossibiles endereulteriormenteinparti olari,poi héilproto ollo
MA-CROèprotettoda opyright elasuadiusione nonèpermessa. Siriporteranno
quindilelineeguidageneri he esisostituirannolestringhedi omandoreali on
al une ttizie,ma he ne ri hiamino omunque ilsigni ato.
3.1 Interfa ia C++ di ontrollo
Diseguito lastrutturagenerale deimetodi di ontrollo delbrandeggio. [5 ℄
#define MAX_BUF 50
lass UlissePositioning {
publi :
UlissePositioning( onst har *devi e = 0);
~UlissePositioning();
// spostamenti orizzontali e verti ali
void Left(int speed) {MoveCommand("SINISTRA", speed);}
void Right(int speed) {MoveCommand("DESTRA", speed);}
void UpLeft(int speedX, int speedY) {MoveCommand("SU-SINISTRA", speedX, speedY);}
void UpRight(int speedX, int speedY) {MoveCommand("SU-DESTRA", speedX, speedY);}
void DownLeft(int speedX, int speedY) {MoveCommand("GIÙ-SINISTRA", speedX, speedY);}
void DownRight(int speedX, int speedY) {MoveCommand("GIÙ-DESTRA", speedX, speedY);}
void Stop(void) {SendCommandToDevi e("STOP");}
// spostamento a una posizione ben definita
void GoToSpe ifi Position( har *pan, har *tilt, har *run, har *zoom);
// spostamento a una posizione di preset
void GoToPresetPosition(int presetPosition);
void SendCommandToDevi e( onst har ommand[℄, onst har par1[℄ = "", \
onst har par2[℄ = "");
void SendCommandToDevi e2( onst har ommand[℄, onst har par1[℄ = "", \
onst har par2[℄ = "", onst har par3[℄ = "", onst har par4[℄="");
har EvaluateChe ksum( onst har Str[℄);
private:
void MoveCommand( onst har * ommand, int speed1, int speed2 = 0);
// buffer di memorizzazione
har buf[MAX_BUF℄;
// porta utilizzata
int port;
};
Le istruzioni sono ertamente intuitive e non hanno bisogno di lunghe
spie-gazioni. Sifanno soloal une sottolineature perquelli dimaggiore interesse.
In parti olare il metodo GoToSpe i Position a etta quali parametri, le
posizioni assolute dipan e tilt, lavelo ità di spostamento e il fattore di zoom.
Esso permette dispostare inuna posizione spe i a l'Ulisse, se ondo ilsistema
diriferimento adesso solidale.
Cisonopoiduemetodi,dipo odiversi, hiamatiSendCommandToDevi e e
SendCommandToDevi e2. Essigestis onolatrasmissionedelmessaggioASCII
via seriale e sio upanodidarglisenso se ondoil proto ollo difunzionamento.
fatto in questa tesi, le tipologie sono osì suddivise: metodo a due parametri
perimovimenti sempli i (vai a destra, vai a sinistra, stop, e etera), metodo
a quattro parametri per imovimenti se ondo oordinate assolute (vai alpunto
[x,y℄).
Inne il metodo EvaluateChe ksum serve a al olare una somma,
dipen-dente dal tipo e dal numero dei aratteri omponenti la stringa he si vuole
inviare, he asso iata a quest'ultima dà la ne essaria validità all'istruzione he
altrimentiverrebbe s artata.
3.2 Interfa ia C++ di omando
Viene sotto riportato il odi e ol quale è possibile implementare un'interfa ia
di omando manuale del brandeggio.
#in lude <iostream> #in lude "ulissepositioning.h" #in lude <math.h> #in lude <stdio.h> #in lude <stdlib.h> #in lude <f ntl.h> #in lude <termios.h>
#in lude <stdint.h> // per poter utilizzare interi a 16 bit
#in lude <string.h>
#in lude <boost/lexi al_ ast.hpp>
#define BUF 10
using namespa e std;
string onvert(int number);
string p1; string p2; string p3; string p4; int main() { UlissePositioning ulisse;
bool ontrol = true;
while ( ontrol) {
out << "inserire un omando per l'ulisse" << endl;
out << "1=destra|2=sinistra|3=su|4=giu|5=stop|
6=mandastringa|7= he ksum|8=posizione|9=us ita" << endl;
int s elta;
in >> s elta;
out << "la tua s elta è stata: " << s elta << endl; swit h (s elta) { ase 1: ulisse.Right(1); break; ase 2: ulisse.Left(1); break; ase 3: ulisse.Down(1); break; ase 4: ulisse.Up(1); break; ase 5: ulisse.Stop(); break; ase 6:
out << "inserire omando" << endl;
har stringa[6℄;
in.getline(stringa,6);
out << "inserire parametro 1" << endl;
har parametro1[3℄;
in.getline(parametro1,3);
out << "inserire parametro 2" << endl;
har parametro2[3℄;
in.getline(parametro2,3);
ulisse.SendCommandToDevi e(stringa,parametro1,parametro2);
break;
ase 7:
out << " al ola il he ksum" << endl;
har omando[30℄;
out << "inserire omando" << endl;
in.getline( omando,30);
har he ksum;
he ksum = ulisse.EvaluateChe ksum( omando);
out << he ksum << endl;
break;
ase 8:
out << "inserire parametro 1 (pan)" << endl;
int pan;
in >> pan;
// ulisse a etta solo valori ompresi tra -180 e 180 per il pan
pan = pan - round((double)pan/360)*360;
out << pan << endl;
out << (int)pan/360 << endl;
if (pan>0)
else
pan = 65536 + pan*100;
p1 = onvert(pan);
onst har *para1;
para1 = p1. _str();
out << "inserire parametro 2 (tilt)" << endl;
int tilt;
in >> tilt;
// ulisse a etta solo valori ompresi tra -90 e 90 per il tilt
tilt = tilt - round((double)tilt/180)*180;
tilt = -tilt; if (tilt>0) tilt = tilt*100; else tilt = 65536 + tilt*100; p2 = onvert(tilt);
onst har* para2;
para2 = p2. _str();
out << "inserire parametro 3 (velo ita)" << endl;
int vel;
in >> vel;
p3 = onvert(vel*100);
onst har *para3;
para3 = p3. _str();
out << "inserire parametro 4 (zoom)" << endl;
int zoom;
in >> zoom;
p4 = onvert(zoom*1000);
onst har *para4;
para4 = p4. _str(); ulisse.GoToSpe ifi Position(( har*)para1,( har*)para2,( har*)para3,( har*)para4); break; ase 9: ontrol = false; } }
// out << ulisse.EvaluateChe ksum("TM1PC1Men+") << endl;
return 0;
}
string onvert(int number) {
std::ostringstream sin;
sin << number;
std::string val = sin.str();
return val;
Il ase 6 è stato implementato perpoter permettere all'utente di
utilizza-re omandi non gestiti direttamente dal odi e s ritto. Qui infatti è ri hiesto
l'inserimento manualeditutta lastringada trasmettere all'Ulisse.
Il ase 7 al ola sempli emente il he ksum, di uisi è giàparlato, di una
determinatastringa. Ètornatomoltoutilenellavoroditesi,peritestattraverso
interfa iaserialeCuteCom,per hé omesièdettoo orreinserirequestovalore
assieme al omando per hé abbiavalidità.
Il ase 8 herisulta esserepiù orposodeglialtri, serveperportareil
bran-deggio inunaposizioneassolutaappartenente alrangeprevisto, ioètra-180° e
180° sull'assepan e tra-90°e +90° sull'asse tilt.
3.3 S hema dell'ambiente
Lo s hema dell'ambienteè stato studiatoinrelazione alla tipologia di
modelliz-zazione dello stesso,derivante dalsoftware ditra king.
La onos enza he abbiamo diforma edimensione della stanza reale e della
suaimmagine prodottaedelaborataarti ialmentedalprogramma, ipermette
dimapparelospazio3Dinunpiano2D,sfruttandol'ipotesi,ainidellavoronon
restrittiva, he lapersonadatra karesitroverà, inogniistante,ne essariamente
solidale alpavimento.
Sissanoora al unipuntissi sull'immagine arti iale:
1. posizionedel brandeggio;
2. proiezione delbrandeggio sulpavimento;
3. angoli delpavimento della stanza;
4. stipitie entrodella portadiingresso.
Diquesti sisonosalvateleposizioni inunitàdimisura pixel.
Sisonopoissatiiseguenti punti ssi reali:
1. posizione delbrandeggio;
2. proiezione delbrandeggio sulpavimento;
3. proiezione del entro dellaportadiingresso sulpavimento.
Diquesti sisonosalvateleposizioni inunitàdimisura metri.
Aquestopuntosiè er ata unarelazionediproporzionalitàtraiduesistemi
diriferimento e lasi èveri ata.
Grazie a questa onversione si trasforma la parte di mondo di interesse
ge-nerata dal tra king in quelladella tele amera, rius endo osì a omandarla on
su iente pre isione.
Inne o orre pre isare he i punti generati dalla trasformazione tengono
Figura 3.1: S hema della pianta dellaboratorio on riportate le oordinate (in
NMM (Network-Integrated
Multimedia Middleware)
Introduzione
IlNetwork-IntegratedMultimediaMiddleware(NMM)[6 ℄èilrisultatodiseianni
diri er apressoilLaboratoriodiComputerGraphi s atSaarland Universitydi
Saarbrü ken,inGermania.
Essoimplementaappli azionidiretemobileemultimedialipermettendonela
omuni azione re ipro a. Sono supportate varie te nologie e sistemi operativi,
ome Windows e GNU/Linux, osa he permette lo sviluppo ross-platform.
Usandoquesta te nologiauni a, tuttiidispositividisponibili,distribuiti inuna
rete,possonoessere ollegatie ontrollatiinmanieratrasparente onla reazione
dinuoveperiferi he virtuali. Adesempio, untelefono ellularepuòdiventareun
ri evitoreradioounaregistrazionevideo puòesserevisualizzatasutretelevisori
ontemporaneamente.
Il softwareè rilas iato sotto li enze he permettono diutilizzarlo all'interno
diprodotti ommer ialioppureOpenSour eeinprogettidiri er a. Èprodotto
da Motama, azienda spe ializzata nella progettazione e sviluppo di sistemi di
rete distribuiti e multimediali he spaziano dai sistemi embedded e mobili, ai
PC, ai luster omputing su largas ala.
Essa è uno spin-o dell'Università del Saarland. Fondata nel2005 è diretta
daldottorMar oLohse,Mi haelRepplingereilprof. Philipp Slusallek. Orelo
sviluppodeiprodotti,leli enzedella te nologiaNMMesupportonello sviluppo
dimoduli personalizzati perleappli azioni basatesu NMM.
Attualmentequestosoftwareèutilizzatonella reazionediprodottineisettori
di:
IPTV;
rendering serverbased;
building te hnologies;
ri er a appli atae sviluppo;
e-learning.
4.1 Te nologia alla base di NMM
Oltre aiPC, unnumero res entedidispositivi multimediali, qualiset-top box,
PDA e telefoni ellulari, vengono forniti on funzionalità di rete. Tuttavia le
infrastrutture multimediali, adoggi, adottanounappro io entralizzato,in ui
tutte leelaborazionimultimedialiavvengono all'internodiununi osistemaela
rete è usataperlostreaming di ontenuti predeniti daun server ai lient.
Con ettualmente, questiappro isono ostituitidadue appli azioniisolate,
unservereun lient. Larealizzazionedis enari omplessièdunque ompli atae
soggettaaerrori,soprattuttoper héil lienthaingenereun ontrollolimititato,
se nonassente, delserver.
Figura 4.1: Streaming tradizionale lient-server omposto di due appli azioni
isolate he nonfornis ono un ontrolloversatileoestendibile.
IlNetwork-IntegratedMultimediaMiddleware(NMM)superaqueste
limita-zioni, permettendo l'a esso a tutte le risorse all'interno della rete: dispositivi
multimedialidistribuitie omponentisoftwarepossonoessere ontrollatiinmodo
trasparente e integrato inun'appli azione.
A dierenza di tutte le altre ar hitetture multimediali disponibili, NMM
Figura 4.2: NMM ome middleware multimediale fornis e uno strato software
hefa ilitalosviluppodiappli azionifornendouna essotrasparenteatuttele
risorse all'interno della rete omeidispositivio i omponentisoftware.
Perfareunesempio,questo onsentelosvilupporapidoefa iledi
un'appli a-zione he ri eve unsegnaleTVda undispositivoremoto, ompresa
l'implemen-tazione diun ontrollo trasparente delri evitore TV sorgente. An he un PDA
on potere limitatodi al olopuò servirsidiquesta appli azione: le onversioni
ne essarie per adeguare il ontenuto audio e video alle risorse fornite dal PDA
possono essere distribuite all'interno della rete. La distribuzione è trasparente
pergli sviluppatori e nessun ari o è aggiunto alle appli azioni inlo ale.
Inne NMMfornis e unframework multimediale standard pertutti itipi di
appli azionidesktop.
4.2 Ar hitettura generale di NMM
L'ar hitettura del mi ro- oredel middleware è opensour e e strutturata per hé
sia possibile l'integrazione di arbitrarie risorse, he potrebbero essere presenti
in una data rete (ussi audio, ussi video, e etera). È dotato di un sistema
messaggisti a di sistema, sia per poter ri hiedere questi dati, sia per tutte le
altre omuni azioni da e verso i omponenti he risultano onnessi tra loro
tramite un grafo, nelquale peròsiano gestiti, siail usso deidati, sia il tipo di
datostesso.
NMM supporta tutti i formati di tramissione standard, quali TCP, UDP e
RTP.Inne è ompatibile on formatistandard ome XML.
Grazie ai molti plugin, NMM fornis e un alto livello diastrazione e di
tra-sparenza attraverso un'organizzazione a gra distribuiti usati per spe i are i
pro essi multimediali di streaming distribuito. Possiede poi un'ar hitettura ad
elevatasin ronizzazione he ore alta qualità intermini appunto disin ronia e
Figura 4.3: NMM fornis e un'ar hitettura mi ro- ore opensour e he permette
l'intergrazione delle risorsepresenti inrete.
Figura 4.4: Gra diusso distribuiti, estesi su più sistemi onsentono lafa ile
reazionediappli azionimultimedialidistribuite,adesempio,perlariproduzione
diMP3.
API intuitive obje t-oriented C++ sommate ad interfa e di ontrollo
obje t-oriented denite nell'Interfa e Denition Language (IDL) per la
spe i a sia out-of-band he perl'interazioneinstream;
un nu leo dilibrerie ross-platformeseguitenativamentesu Windows XP,
WindowsVista,Windows7,WindowsCE, Windows Mobile,GNU/Linux,
Embedded GNU/Linux, Ma OS;
4.3 Servizi middleware aggiuntivi
NMM ha un sistema peer-to-peer didistribuzione delRegistro dei Servizi
(Re-gistry Servi e4.8 ) he gestis e idispositivi,i omponentisoftware,rende
dispo-nibilelapotenzadielaborazionee lalarghezzadibanda.
Ha un servizio di ondivisione (Session Sharing) he permette di ollegare
le appli azioni in ese uzione, al ne di ondividere un singolo dispositivo
mul-timediale o riutilizzare parti omuni di un grafo di usso (ow graph 4.6), ad
esempio, perlatrans odi a. Sin ronizzazione e ontrollovengono osìstabiliti
traivarihost.
Peril passaggio della riproduzione di ontenuti multimediali, da un sistema
mobile ad un sistema sso, il middleware è dotato di un servizio di onsegna
(Handover Servi e)perilpassaggio ontinuo e sin ronizzatodei gra diusso.
È prevista la ongurazione automati a delle appli azioni he permette di
spe i are un pre iso task, ome la riproduzione di media, sempli emente
spe- i ando, magaria distanza, lefontideimedia e dei dispositivi direndering. Il
orrispondente grafo vieneautomati amente istanziatoe distribuito.
4.4 L'organizzazione a nodi, ja k e ow graph
L'appro io progettuale generaledell'ar hitettura diNMM è simile adaltre
ar- hitetture multimediali. All'interno diNMM, tutte le periferi he hardware (ad
esempiounas hedaTV)e omponentisoftware(adesempio,de oder)sono
rap-presentati da entità hiamate nodi. Un nodoha delle proprietà he in ludono
porte di input e output, hiamate ja k, he ne ra hiudono an he il relativo
formato multimediale supportato. Un formato denis e on pre isione il usso
multimediale fornito, spe i andone il tipo (ad esempio audio/raw per i ussi
audio non ompressi), oltre ai parametri aggiuntivi, quali la frequenza di
am-pionamento. Poi hé un nodo può fornire più ingressie us ite, i suoi ja k sono
eti hettati on tag. A se onda del tipo di nodo, vengono prodotti determinati
dati, eseguite determinateoperazionisu diessio inne onsumati.
Sour e: produ e idatied haun ja kdius ita.
Sink: onsuma idati he ri eve dalsuoja kdiinput.
Filter: haunja kdiinputeunodioutput. Modi asoloidatidelusso
e non ambia ilformato o iparametri spe i idelformato.
Converter: ha unja kdiinput e unodi output. Può modi are siaidati
del usso he il formato o i parametri (ad esempio da video normale a
Demultiplexer: ha ununi o ja kdiinput, madiversi ja kdioutput.
Questinodipossonoessere ollegati per reareun diagrammadiusso,
pur- hé idueja ktraloro onnessi gestis ano lostessoformato dati. Inoltre i
para-metri legati al formato deidue ja kdevono essere vi endevolmente disponibili.
Nellagura sivede los herma dide odi ae riproduzione diunleMP3.
Figura4.5: Grafo diusso perlariproduzione dileMP3.
4.5 Sistema di messaging
L'ar hitettura NMM utilizza un sistemadi messaggisti a standard per tutte le
omuni azioni. Ci sonodue tipi dimessaggi:
1. a buer: memorizzanoidati multimediali;
2. aeventi: sonoidenti ati daunnomeepossonoin luderequalsiasitipodi
parametro. Sono usati perle informazionidi ontrollo.
Ci sono due diversi tipi di paradigmi di interazione utilizzati all'interno di
NMM.Inprimoluogo, imessaggisonotrasmessisu ja k onnessitraloro.
Que-sto tipo di interazione è detta instream ed è più spesso eseguita in direzione
downstream, ioè daiSour e aiSink;NMM omunque onsentean he l'invio di
messaggi inupstream.
Si noti he sia i buer he gli eventi possono essere inviati instream. Per
questa omuni azione, sonoutilizzati i osiddetti ompositeevents he
onten-gono una serie dieventi da gestire all'interno diuna singola fase diese uzione.
Gli eventi instream sono molto importanti per i gra i di usso multimediale.
Per esempio, la ne di un usso (ad esempio la ne di un le) possono essere
segnalate onl'inserimentodiunospe i oevento,allanediunaseriedibuer.
Oggetti listener esterni possono essere registrati per essereavvisati quando si
veri ano determinati eventi inun nodo (ad esempio perl'aggiornamento della
GUI allane diun leoperlaselezione diunnuovole).
esempioinodioija k. Glieventisonoutilizzatiper ontrollare glioggettioper
l'invio dinoti he dagli oggettiailistener registrati.
4.6 Gra di usso distribuiti (Distributed Flow
Gra-phs)
Laparti olarità diNMMè ilfatto heisuoigra diussopossonoessere
distri-buiti attraversolarete: dispositivimultimedialilo alio remotioppurelostesso
odi e in apsulato nei nodi, possono essere integrati all'interno di un omune
ow graph distribuito per l'elaborazione multimediale. Tutto questo è
traspa-rente aglisviluppatori enonappesantis elepartidelgrafo heoperanoalivello
lo ale.
Nella Figura 4.5 viene mostrato un esempio di un diagramma di usso
di-stribuito perlariproduzionedile odi ati( ompressi), adesempio, leMP3.
Un nodo Sour e per la lettura dei dati dal le system lo ale (AudioReader) è
ollegato ad un nodo perla de odi a di ussi audio (AudioDe oder). Questo
de oderè ollegato adunnodoSinkperilrenderingaudionon ompresso
utiliz-zandounas hedaaudio(AudioRenderer). Unavolta heilgrafoèstatoavviato,
il nodo Sour e legge una erta quantità di dati da un le, in apsula in buer,
adesempio, didimensione 1024byteetrasmettequesti bueralsuosu essore.
Dopolade odi a inaudionon ompresso,ilnodoConverter mandaibuerdi
datialnodo Sink.
L'appli azione può gestire tutte le parti di questo ow graph utilizzando le
interfa e(ad esempioINode) per ontrollare gliaspetti generi i ditutti inodi
istanziati. Sinoti hetrediversi hostsonopresentinell'esempio(si veda Figura
Figura 4.4 ). L'appli azione gira sull'host1, il nodo Sour esull'host2, il de oder
e il nodo Sink sull'host3. NMM rea automati amente le onnessioni di rete
tral'appli azione eitrenodidistribuiti(interazioneout-of-band), maan he tra
il Sour e e il nodo di de oder (interazione instream). Pertanto, i dati audio
ompressiMPEG vengonotrasmessiattraverso larete.
Si noti he un ow graph osì sempli e fornis e già molti bene i. In
pri-mo luogo, onsentea un'appli azione dia edere ai lememorizzati su sistemi
distribuiti, senzala ne essità diunle systemdistribuito, ome NFS. In
se on-do luogo, idati di usso trai nodi ollegati vienegestito automati amente dal
NMM.In terzoluogo, l'appli azione agis e ometele omando pertutti inodi
distribuiti. Per fare un esempio, questo onsente in modo trasparente di
4.7 Sin ronizzazione distribuita
Poi hé i gra di usso in NMM possono essere distribuiti, è possibile il
ren-dering audio e video su sistemi diversi. Per esempio, il usso video di un le
MPEG2puòesserepresentatosuungrandes hermo ollegatoadunPC,mentre
il orrispondente audiovieneriprodottosuun dispositivomobile. Perrealizzare
la riproduzione sin ronizzata dinodidistribuiti su tutta la rete,NMM fornis e
un'ar hitettura generi adisin ronizzazionedistribuita. Inoltre,lepresentazioni
dei media possono essere eseguite an he su sistemi diversi
ontemporaneamen-te. Unadomanda omune è lariproduzione delusso audio utilizzando sistemi
diversi situati in diverse stanze di una asa, ma la teoria è la stessa su rete
geogra a.
La base per eseguire la sin ronizzazione distribuita è una omune fonte di
temporizzazione: un orologiostati o all'interno diognispazio diindirizzi.
Que-stoorologiorappresental'orologiodisistema heglobalmenteèsin ronizzato on
il Network Time Proto ol (NTP) e può quindiessere assunto ome riferimento
per la rete. Con l'impostazione orrente, il tempo di oset tra sistemi diversi
spazia da 1a 5 ms,il heè su iente.
Figura 4.6: Esempio disin ornizzazionemulti-roome multi-devi e.
4.8 Registry Servi e
IlservizioRegistrodiSistema (ServerRegistry)inNMMpermettela
rilevazio-ne, laprenotazione e l'istanziamento dinodidisponibili su hostlo ali e remoti.
Su ogni host 'è un registry server uni o he amministra tutti i nodi di quel
parti olare sistema. Per ogni nodo, il Registro ne memorizza una des rizione
he in lude il tipo (Sink, ad esempio), il nome (Playba kNode, ad esempio), le
interfa efornite (IAudioDevi e,adesempio, peraumentareo diminuirela
pro-duzionevolume)egliinputeoutputsupportati(adesempio,unformatodiinput
audio/raw onisuoiparametriaggiuntivi, omelafrequenzadi ampionamento).
peressere ollegatiadunaportanota. Dopoaverelaboratolaquery onsu esso
il Registro di Sistema interpellato riserva i nodi ri hiesti he vengono quindi
reati. Per i nodi istanziati sullo stesso host he esegue an he le ri hieste, il
RegistrodiSistemaassegneràquestioggettiall'internodellospaziodegliindirizzi
della ri hiesta stessaper evitareil he il lorosormontarsi generioverhead.
Per ongurare e reare omplessi diagrammidiusso distribuito,
un'appli- azione puòri hiedere ogninodoseparatamenteoutilizzare unagraph
des rip-tion ome query. Tale des rizione omprende una serie di nodi des rizione
ollegatitraloro.
Per hé un'appli azione possa reare un diagramma di usso distribuito, il
Server Registry deve essere in ese uzione su ias un host parte ipante. Per le
appli azioni he operano es lusivamente a livello lo ale questo non è ri hiesto.
Un server registry è sempre in ese uzione all'interno dell'appli azione stessa e
non a essibile dahost remoti.
Prima he possa essere utilizzato, deve stabilire quali dispositivi e
ompo-nentisoftwaresono disponibili su un determinato host. Pertanto, ildeve essere
inizializzatoalmeno unavolta usandoil omandoseguente.
userlinux:~/nmm/bin> ./serverregistry -s
Create onfig file with plugin information ...
Loading plugins...
AC3De odeNode available
AVDemuxNode available
AVIReadNode available
... and many further nodes
Config file su essfully written.
4.9 Utilizzo di NMM
4.9.1 Installazione e test NMM
Non si riporteranno in questo elaborato tutti i passi ne essari all'installazione
e ongurazione del software NMM, ma si ri orda solamente he in ambiente
GNU/Linuxesistonoduestradeprin ipali. Laprimaèl'installazionedasorgenti
e la se onda è attraverso i pa hetti pre ompilati, se esistono, per la propria
distribuzione.
Sira omanda, in asodiinstallazione dasorgenti,ditenerpresentitutte le
dipendenze ne essarie, in parti olare, essendo NMM dotato di molti plugin, si
dovràprestare attenzionealle ri hiestedi ias unodiessi, selisi volesseusare.
$ serverregistry -s
he restituis e la lista deinodi disponibili nel sistema. Nel aso avessimo fatto
parti olari s elte ir a lapresenza dideterminati plugins,nella lista sottostante
dovremmo essere ingrado di identi arne il nodo orrispondente. Ovviamente
in aso difallimento del omando o in assenzadei nodiprevisti, sarà il asodi
ripetere l'installazione nonessendo andata abuon ne.
serverregistry and Network-Integrated
Multimedia Middleware (NMM) Version 2.2.0
Copyright (C) 2005-2010
Motama GmbH, Saarbrue ken, Germany
http://www.motama. om
See li en e for terms and onditions of usage
No plugin information available! If you start NMM for
the first time this information is reated automati ally.
Note: If you ever hange your hardware onfiguration or
update the NMM version you must delete the file
/home/alberto/.nmm/plugins.2.2.0.xps._usr_lo al
or run 'serverregistry -s' again.
Create onfig file with plugin information ...
Loading plugins... AC3De odeNode available AC3ParseNode available ALSAPlayba kNode available ALSARe ordNode available AVDemuxNode available AVMuxNode available AnalyseDataIdNode available AudioMuxNode available BrightnessNode available BufferDropNode available BufferShapingNode available BufferTimestampControlNode available BufferTimestampNode available CopyNode available
DVBS2ReadNode not available
FFMpegAudioDe odeNode available
FFMpegAudioEn odeNode not available
FFMpegDe odeNode available FFMpegEn odeNode available FLACReadNode available FramerateConverterNode available Generi ReadNode available Generi WriteNode available H264De odeNode available
IVTVReadNode not available
I e astNode available IdNode available JPEGDe odeNode available JPEGEn odeNode available LogoNode available M4AReadNode available MP3ReadNode available MPEGAudioDe odeNode available MPEGAudioEn odeNode available MPEGDemuxNode available MPEGReadNode available MPEGTSDemuxNode available MPEGTSReadNode available MPEGTimeShiftingNode available MPEGTimeShiftingNode2 available MPEGVSHDete tionNode available MPEGVideoDe odeNode available Magi kManipulationNode available Magi kReadNode available Magi kWriteNode available
MessageSeekNode not available
NetSour eNode not available
TimeDisplayNode available
TimedBufferDropNode available
URLNode available
VISCACameraReadNode not available
VideoCropNode available
VideoGrabNode available
VideoMuxNode available
VideoS alerNode available
Voi eDete torNode not available
WavReadNode available WavWriteNode available WhiteNoiseNode available XDisplayNode available YUVDeInterla eNode available YUVtoRGBConverterNode available YUVtoYUVConverterNode available
Finished loading plugins ...
Config file su essfully written.
Proviamooraad istanziareed usare ungrafo.
NMM installa di default al uni esempi, molto utili soprattutto quando
su - essivamente andremo a reare ow graph personalizzati on nodi reati
auto-nomamente. Spostarsi quindi nella dire tory audio degli esempi (nota, per il
per orso si fa riferimento alla gerar hia di dire tory del pa hetto TAR
s om-pattato;ognunonelsuosistema,in asodiinstallazioneglobale,veri heràdove
ile di uiparleremo sono ollo ati):
$ d nmm-2.2.0/apps/ li /gd/linux/playba k/audio/
All'interno troveremo le di estensione .gd: sono des rizioni di gra già
pronte. Essi rappresentano on sempli esintassi inodi he andranno aformare
il grafo. Si onsiglia di aprirne qual uno per farsi un'idea di quel he si sta
di endo.
Sitesti orail funzionamento del middleware, provando ad eseguire la
ripro-duzione diunleaudio on l'ausilio delsoftware li (installato didefault) ed
il grafowavplay.gd':
$ d nmm-2.2.0/apps/ li /gd/linux/playba k/video/
su essivamente:
$ li noise.gd
nel asosi aprauna nestra, mostrando iil video di un disturbo, allorasi può on
tranquillità on ludere hel'installazioneèandataabuon ne.
4.9.2 Metodologie di utilizzo
Imetodi diutilizzodi NMMsonodue:
1. attraversol'utility li ,usataan henegliesempipre edenti;
2. attraversolas ritturadi odi eC/C++ hesiinterfa i onlelibreriediNMM,
utilizzandoneilnamespa eequindilelibrerie.
4.9.3 Cli (Command Line Intera tion and Conguration)
L'appli azione Cli viene utilizzata per ostruire in modo automati o gra di NMM
a partire da una loro des rizione testuale, la graph des ription. Se ne vede poi
brevementelasintassi.
Inoltre,Cli permettediutilizzareilgeneratoredigrafodiNMM he rea
automati- amenteunowgraphdistribuitodaunURLdato: lasorgentedelussomultimediale
el'us ita hepossonoessereaudioovideo,vengonoresedisponibiliin rete.
Si spiegheràoralades rizionedelWavReadNode usatopre edentemente:
% This graph des ription plays a WAV file using the
% ALSAPlayba kNode
% It an only be run on Linux.
% Command:
% li wavplay.gd -i <lo al WAV file>
WavReadNode
! ALSAPlayba kNode
Esso onsiste didue parti prin ipali: la prima parte è un ommento
(opzio-nale)elosifasemprepre edereda%,mentrelase ondaspe i ailawgraph
e ome sono onnessi i suoi nodi. Il arattere ! serve appunto a onnettere i
noditraloro;manmano he sene aggiungonoè su iente s riverliin as ata.
Sesi opiaein ollailtestopre edenteinunleelosirinominawavplay.gd
$ li wavplay.gd -i file.wav
Per avere informazioni più dettagliate sull'utilizzo di Cli , si rimanda alla
do umentazione inlinea[6 ℄. Unapanorami adelle opzionilasipuòan heavere
ol omando:
$ li -h
4.9.4 Creazione di un ow graph
E o ome ollegare i nodi. Un nodo è identi ato dal suo nome, he è
nor-malmente quello della lasse C++. Il punto es lamativo (!) serve per indi are
un ollegamento tradue nodi omesi èvisto nella des rizionedelgra o per la
riproduzione dileWAV.In questoesempio l'istruzione
WavReadNode ! ALSAPlayba kNode
ri hiedeinodiWavReadNodeeALSAPlayba kNode. Seleri hiesteavranno
su esso, il WavReadNode sarà ollegato all'ALSAPlayba kNode. Inne Cli
impostaiparametri spe i ati dariga di omando, peresempioun lediinput
e ostruis el'intero owgraph.
Perspe i are gradiusso più omplessi he in ludono demultiplexer,
ab-biamo bisogno di una sintassi più lunga he des riva i diversi ja k di input e
output di ui un (de)multiplexer è dotato. Una stringaunivo a he viene
hia-mata ja k tag è asso iata ad ogni ja k per identi arlo. Per esempio sono
utilizzateperdistingueretraaudioevideo. Seunnodofornis esolouningresso
oun'us italastringadefaultvieneusata omeja ktagedèusatonelle
des rizio-nideigrasenessun altro ja k tagè spe i ato. Perpoter utilizzareunja kdi
inputspe i o hedeveessereutilizzatoperuna onnessione,l'eti hettarelativa
deveesseres rittaprima delnomedelnodosequestoè diinput oppuredopose
è dioutput. Il seguente esempio mostra lades rizionedelplayer WAV on ja k
tag default:
WavReadNode "default"
! "default" ALSAPlayba kNode
In questo esempio non è ne essario spe i are itag, per hé Cli utilizza il
default ja kper ollegare inodisenessun altro èspe i ato.
E o inve e una sintassi più omplessaperdes rivere i rami di un
% This graph des ription realizes a simple mpeg video player with a 3 audio.
% Use the -i option of li to spe ify the mpeg video file.
Generi ReadNode ! MPEGDemuxNode { { ["mpeg_video0"℄ ! MPEGVideoDe odeNode ! XDisplayNode } { ["a 3_audio0"℄ ! AC3De odeNode ! ALSAPlayba kNode } }
L'MPEGDemuxNode demultiplexa imessaggi inentrata e spedis eilbuer
audio al ja k dius ita audio a 3_audio0 e il buer video al ja k di us ita
vi-deo mpeg_video0. Dopo MPEGDemuxNode,le parentesi ra hiudono tutte le
bran he ollegate aquestonodo. Ogniramoèasuavoltara hiusotra
parente-si grae einizia on il ja ktagdius ita delMPEGDemuxNode, in apsulato in
parentesi quadre. Questo ja kdi us itaè ollegato alnodo prin ipale delramo.
Quindiinquestoesempioabbiamoduerami. Ilprimo onsiste
nell'MPEGVideo-De odeNode, ollegatoall'XDisplayNode. L'MPEGVideoDe odeNodeèilprimo
nodo di questoramo ed è ollegato alla presa dius ita del MPEGDemuxNode
on ja k tag mpeg_video0. Il se ondo ramo l'AC3De odeNode è ollegato
al-l'ALSAPlayba kNode. Il primo nodo diquestoramo è l'AC3De odeNode he è
ollegato alja kdius itadell'MPEGDemuxNode on ja ktagmpeg_audio0.
L'esempioseguente estende illesopra onl'aggiunta diunaltro
XDisplay-Node. Sivede hesonosupportati irami nidi ati.
% This graph des ription plays an MPEG file with AC3 audio
% using the ALSAPlayba kNode and two XDisplayNodes.
% It an only be run on Linux.
% Command:
% li mpegplay_a 3_two_displays.gd -i file
}
}
Aggiungere un nodo multiplexer non dieris e molto da quanto visto per il
demultiplexer:
% This graph des ription onverts an MPEG video file with AC3
% audio into an avi file.
% Unfortunately the flow graph does not work be ause the FFMpegEn odeNode
% requires a bitrate. Generi ReadNode ! MPEGDemuxNode { { ["mpeg_video0"℄ ! MPEGVideoDe odeNode ! FFMpegEn odeNode ! ["video"℄ } { ["a 3_audio0"℄ ! ["audio"℄ } } AVMuxNode ! AVIWriteNode
Questoesempio può essereutilizzato per onvertire un leMPEGin unle
AVI on DivX-videoe audioAC3. La prima parte onsiste inun
MPEGVideo-De odeNode he è ollegato alFFMpegEn odeNode. L'ingressodelprimo nodo
di questoramo,l'MPEGVideoDe odeNode,è ollegata alja kdius ita
dell'M-PEGDemuxNode on ja k tag mpeg_video0. L'us ita dell'ultimo nodo inve e,
l'FFMpegVideoEn odeNode, è ollegato alja kdiingresso delja kA
VMuxNo-de on tag video. Il se ondo ramo non ha nodi. In questo ramo l'us ita del
ja kMPEGDemuxNode on ja ktaga 3_audio0 è ollegata alja k diingresso
di AVmuxNode on ja ktag Audio. Pertanto, ibuer audiosono direttamente
passati dalMPEGDemuxNode alAVMuxNodesenza al una onversione.
La sintassi di questo esempio è orretta, ma il ow graph non può essere
eseguito per hé l'FFMpegEn odeNode a etta solo dati on bitrate di odi a
spe i atonelformatodi onnessione. Quindi,abbiamobisognodipotersp
e i- areunformatodi onnessionedautilizzaretraduenodi. Lostatementformat
pre edutodal arattere haquestos opo. Essosiaspettaunelen odiformati
Nota: ilformato di onnessionedeveesserespe i atosullarigadelsimbolo
di onnessione (!). Nell'esempioriportato diseguito vieneillustratoil on etto.
% This graph des ription onverts an MPEG video file with AC3 audio
% into an AVI file. Furthermore the desired bitrate of the video is
% spe ified using the onne tion format.
% Use the -i option of li to spe ify the mpeg video file and -o option
% to spe ify the name of the output file.
Generi ReadNode
! MPEGDemuxNode
{
{ ["mpeg_video0"℄ ! MPEGVideoDe odeNode
! FFMpegEn odeNode
Format ("video/mpeg4", bitrate = 1200000)
! ["video"℄ } { ["a 3_audio0"℄ ! ["audio"℄ } } AVMuxNode ! AVIWriteNode
Pereseguirequestodiagramma diusso, opiarelades rizione inun le,ad
esempio, mpeg_to_avi.gded eseguire:
$ ./ li mpeg_to_avi.gd -i /home/bob/video/movie.mpeg -o /home/bob/video/movie.avi
on l'opzione -i he spe i a ille diinput e -o illedioutput.
Inoltre, è possibile spe i are due ulteriori parametri per impostare il
pro-to ollo di trasporto utilizzato per trasmettere dati tra due nodi, he è
parti o-larmente utile se sono in ese uzione su host dierenti. Entrambi i parametri
sonopre edutidal arattere. Per ongurare unospe i oproto ollo di
tra-sportoutilizzatoperla omuni azione instream,possonoessereutilizzati il
set-BuerStrategy e il setEventStrategy, ome si vede nella des rizione di grafo
seguente:
% This graph des ription des ribes a simple MP3 player whi h spe ifies the
% used transport proto ols between the nodes.
Generi ReadNode setEventStrategy("TCPStrategy")
setBufferStrategy("RTPStrategy") !
MPEGAudioDe odeNode setBufferStrategy("RTPStrategy") !
Playba kNode
Il parametro setBuerStrategy denis e ilproto ollo ditrasporto
utilizza-to pertrasmettere ilmultimedia buer e ilparametro setEventStrategy ome
trasportare gli eventi instream. In questoesempio il proto ollo RTP(Realtime
TransportProto ol)èutilizzatopertrasmettereibuerMP3eilproto olloTCP
risulta inve e adabile perla trasmissione di eventi instream. Per il trasporto
del multimedia buer tra l'MPEGAudioDe odeNode e il Playba kNode, il
vie-ne utilizzato il proto ollo RTP, ma nessun proto ollo per gli eventi instream è
spe i ato. Se unodiquestiparametri oentrambi nonsonosettati,lastrategia
di trasporto sarà quella di default di NMM, he è la Lo alStrategy, in grado
ditrasportarebuer edeventitrainodinello stessospaziodiindirizzo inmodo
e iente,attraversol'inoltrodipuntatorioppure 'èiltrasportoTCPStrategy,
he esegue lestesse operazioni dell'altro, matranodi he girano su host diversi
o indiversispazi diindirizzi.
4.9.5 SDK (Software Development Kit)
Il Software Developer Kit (NMM-SDK) permette di iniziare velo emente on
lo sviluppo di software basato su NMM. Esso fornis e una sempli e interfa ia
NMM-IDL, un plugin he implementa questa interfa ia e un'appli azione he
utilizza questi due omponentiinun diagramma diusso.
L'uso di questo software prevede ovviamente la pre edente intallazione del
pa hetto NMM-2.2.0. Senza lunghe spiegazioni, ome sempre in ambiente
GNU/Linuxè su iente s ompattare ilpa hetto edeseguire isoliti
$ ./ onfigure
$ make
$ make install
Se tuttoè andatoa buonne, ol omando
$ serverregistry -s
dovremmo vedere inomi deinodi he abbiamoaggiunto:
Tra king e Fall Dete tor
Introduzione
Los opoprin ipalediquestatesièl'integrazione, delbrandeggioUlisseCompa t
inunsoftwareditra king preesistente.
A tal ne si sono implementati al uni metodi, s ritti in linguaggio di alto
livello (C++), he ne permettono il ontrollo. Da essisono state sviluppate le
interfa eperilmiddlewareNMM he onsentono l'utilizzo della tele amera[7 ℄
ainidella falldete tion e deltra king ontinuato delsoggettoinmovimento.
Tra king mediante sottrazione dello sfondo
Questaè una te ni a he sibasa essenzialmente suiseguentipunti[8 ℄:
1. modellazione delba kground;
2. estrazione delforeground;
3. segmentazione dell'immagine;
4. ltraggio e orrezione;
5. tra iamento.
MODELLAZIONE DEL BACKGROUND
Apartiredaunaseriediimmaginiripresedaunatele amerassa,èpossibile
individuareun'immaginearti iale hevienedenitaimmaginediba kground.
Essa rappresenta la parte immobile della s ena, ioè quella parte di mondo
ri-presa hetendea ambiare lentamente neltempo. Nel aso ontingentesitratta
della stanza vuota.
imma-memorizzati perun erto tempo e he onterranno appunto l'immaginedi
par-tenza. Ora i frame su essivi a quelli utilizzati per la modellizzazione dello
sfondo, saranno onsideratidiinput.
ESTRAZIONEDEL FOREGROUND
Ilforeground ontienelaporzionedell'immagine ripresa hetendeavariare
velo emente nel tempo. In questo aso, sono le persone in movimento nella
stanza. Perottenerlodall'immagineoriginale he, om'èintuibile,èlasommadi
ba kground e foreground,si esegue unasottrazione. La osiddetta ba kground
substra tion.
Si esegue quindi un onfronto tra il modello dello sfondo (dato dalle prime
immaginimemorizzate) eivariframediinput. Un oggetto hedovesseapparire
nel ampo visivodella tele amera, sarebbe notevolmentediverso dalla
situazio-ne base e quindi attraverso quella he abbiamo denito sottrazione otterremo
l'oggetto inquestione.
SEGMENTAZIONE
Una volta ottenuto il foreground, si tratta di ri onos ere ed eti hettare i
blob ontenenti il soggetto o i soggetti da tra kare. Questa è una fase molto
deli ata he omporta problemi non indierenti di under-segmentation o
over-segmentation. Il primo è ostiuito da quegli errori ausati dal fatto he il
pro-grammageneraunnumerodiblobinferioreaquelloeettivo. Capitaadesempio
se due oggetti sonomolto vi ini e quindivengonofusi assieme. Il se ondo,in
manieraopposta, sihaquandoilprogramma rilevaunnumerodiblobsuperiore
aquelloeettivo. Questopuò apitare(edèsu essoinlaboratorio)a ausadelle
ombre,oppure diparti olari situazionidi lu e he riessa daglioggetti inganna
il software.
FILTRAGGIO E CORREZIONE
Aquestopuntoèopportunoeseguireoperazionidiltraggioe orrezioneper
ovviare ai molti problemi dimat hing errato he possono esserdovuti a fattori
quali sovrapposizioni dioggetti, s arsao e essivaluminosità e viadi endo.
TRACCIAMENTO
Per ottenere l'inseguimento degli oggettiin movimento, è opportuno
predi-sporre strutture dati adeguate. Nel odi e utilizzato sono state implementate
delle listedioggettitra ked ontourn in uisene memorizzail ontorno
(posi-zione, dimensioni, e etera). Inparti olare vengono usate dueliste, una
passa-ta e una presente. Inquesto modo attraverso il onfronto re ipro o deidati,
se ondo un riterio diprossimità (l'ideaè he tradue frame onse utivi,losp
o-stamento sia minimo e quindi se in queste due immagini ri onos o due oggetti
hehannoun ertolivello,alto,di ongruenza,stabilis o hesitrattadellostesso
oggetto hesiè distanziato),è possibilestabiliredoveun oggettosisia spostato
e tenerne, appunto, tra ia. Inoltre dal ontorno ri avo il osiddetto bounding
box,un rettangolo he inquadrail soggettoidenti ato.
goritmo tramite un'identi azione basata sulle dimensioni. In breve l'ipotesi è
he nellastanza, visia un solosoggetto inmovimento e he ditutte le ose he
possono, per qual he motivo, muoversi, esso è ertamente quello didimensioni
maggiori (ipotesiverosimile poi hé in una stanza di ilmente avremoqual osa
inmovimento piùgrandediunuomo).
Rilevazione di adute
Larilevazionedelle adute,partedall'assunto heiltra kingries aadidenti are
ilboundingbox delsoggettoinmovimento.
Data questaipotesi, ipassiprin ipalidella falldete tion sono:
1. ontrollodella geometria delbounding box andidato;
2. reazionedistrumentidituning e ontrollo delle prestazioni.
1. CONTROLLO DEL BOUNDINGBOX
In breve, vengonovalutatelageometria e l'adabilitàdei datiriguardanti i
variboundingboxidenti atidaltra king. L'ipotesidifondoè heseuna
perso-na ade,ilsuorettangolodi ontornopassadall'esseremaggiormentesviluppato
in verti ale, all'esserlo in orizzontale. Inoltre ol passare del tempo esso
man-tiene le stesse oordinate, ioè è fermo. Sempre su base temporale, si s artano
quei bounding box he pur veri ando leregole geometri he, durano perpo hi
frame. Vengono onsideratierrori per hé se unapersona adeè realisti o he lì
rimangaperuntempoabbastanza lungo.
2. TUNING EPRESTAZIONI
Sono strumenti implementati per gestire situazioni di falsi positivi o per
er arediovviarealledi oltàdeltra kinginquantopuò apitare,perle
prom-blemati he pre edentemente des ritte, he fallis a e generi dati in onsistenti o
errati.
5.1 Creazione del ontrollo
Laprimane essitàperl'integrazionedelbrandeggioUlisseCompa tneisoftware
sopra des ritti, è quella della reazione di metodi he ne permettano il totale
ontrollo.
Perfarequestosièusatoillinguaggiodialtolivello C/C++[5 ℄,inambiente
dilavoroGNU/Linux[9℄. Questoper héil ontesto lori hiedevaimpli itamente
ed an he per hé, il kernel Linux ha un alto grado di e ienza. Un linguaggio
ompilato e noninterpretato, qualeappunto quello usato, unitoad unkernel in
grado disfruttare moltobene iltempo he gli èdato, danno ampia garanzia di
risultato.
spostamento in verti ale;
spostamento in orizzontale;
spostamento versouna posizione predeterminata;
aumento zoom;
diminuzione zoom;
he hanno ri hiesto la reazionedei seguentimetodi:
MOVIMENTIBASE: UP,DOWN, LEFT, RIGHT,STOP
void Up(int speed) {MoveCommand("MXUp", speed);}
void Down(int speed) {MoveCommand("MXDn", speed);}
void Left(int speed) {MoveCommand("MXLf", speed);}
void Right(int speed) {MoveCommand("MXRg", speed);}
void Stop(void) {SendCommandToDevi e("MXSt");}
MOVIMENTI OBLIQUI: UP-LEFT, UP-RIGHT, DOWN-LEFT,
DOWN-RIGHT
void UpLeft(int speedX, int speedY) {MoveCommand("MXUL", speedX, speedY);}
void UpRight(int speedX, int speedY) {MoveCommand("MXUR", speedX, speedY);}
void DownLeft(int speedX, int speedY) {MoveCommand("MXDL", speedX, speedY);}
void DownRight(int speedX, int speedY) {MoveCommand("MXDR", speedX, speedY);}
SPOSTAMENTOIN UNAPOSIZIONE DIPRESET
void GoToPresetPosition(int presetPosition);
SPOSTAMENTOVERSO UNAPOSIZIONESPECIFICA
void GoToSpe ifi Position( har *pan, har *tilt, har *run, har *zoom);
Inne sonostati reatideimetodidi ontorno, ne essari a:
spedire il omando(stringa ASCII) attraverso laportaseriale [10℄;