PhysXLabs
Esperimenti di Fisica
(C) 2009 Francesco Settembrini - f.settembrini@poliba.it - www.dft.poliba.it
Files di dati ed installazione.
[ clicca qui per vedere il filmato ad alta risoluzione ]
PhysXLabs e` una applicazione di Video-Analysis per acquisire, frame dopo frame, le posizioni degli oggetti dello scenario e farne analisi di vario tipo.
Sul web sono disponibili diverse applicazioni di tal genere ( es. VideoPoint, LoggerPro, Tracker, ecc...) ma ad oggi nessuna di esse consente una acquisizione in automatico degli oggetti dello scenario.
PhysXLabs, oltre alla consueta procedura manuale, e` anche in grado, mediante tecniche di computer-vision, di agganciare ed inseguire gli oggetti di interesse presenti nello scenario, consentendo una acquisizione accurata e soprattutto rapida .
I filmati sono stati acquisiti con telecamera analogica Hi-8 / PAL con CCD ad alta sensibilita`, dotata di controllo manuale dello shutter ( da 1 secondo a 1/10000 di secondo) e convertiti in AVI Video for Windows senza compressione per garantire la massima qualita` del segnale.
Per motivi di convenienza i filmati sono stati trasformati in sequenze numerate di frames, come si puo` vedere nella directory data di questa applicazione.
In questo modo, per chi ne avesse voglia, e` possibile ripetere le esperienze anche usando applicazioni diverse dal PhysXLabs (ad esempio sfruttando le features di computer vision ed image processing di alcuni ottimi toolbox del Matlab).
Lo standard PAL Europeo prevede un frame rate di 25 fps costituito da 50 semiquadri (campi) interallacciati: ho sfruttato questa caratteristica per ottenere una base dei tempi di ben 1/50 di secondo, piu` che sufficiente per tutti gli esperimenti di questa sessione di lavoro.
Per cio` che riguarda l'analisi dei dati PhysXLabs utilizza la connessione OLE al Matlab : tutto cio` che e` calcolabile in Matlab e` calcolabile anche in PhysXLabs, direttamente, senza dover passare per files di scambio di dati. In altre parole si crea in link diretto tra PhysXLabs e Matlab, con notevoli vantaggi in termini di flessibilita` e semplicita` d'uso.
PhysXLabs consente comunque di esportate i dati acquisiti su files di testo standard (ASCII) .
Una volta avviato il PhysXLabs ed aver selezionato uno degli esperimenti presenti nel database e` sufficiente accedere al menu azioni e selezionare la voce esegui tutto : in tal modo verranno eseguite, nell'ordine, l'impostazione del sistema di riferimento (SOR) e della regione di interesse (ROI), l'acquisizione delle posizioni degli oggetti dello scenario, l'analisi e la graficazione dei dati.
L'immagine seguente e` il risultato delle prime due operazioni di setup del sistema di riferimento (a sinistra dell'immagine) e di acquisizione delle posizioni del pendolo (a destra vien riportato il feedback delle posizioni acquisite) :
Se l'utente non dovesse disporre del Matlab non viene effettuata alcuna analisi dei dati acquisiti: e` sempre possibile esportare tali dati e analizzarli con programmi di propria preferenza (anche col MicroSoft Excel).
L'immagine seguente mostra la misura del periodo di oscillazione ed una stima dell'accelerazione di gravita`, nota la lunghezza del pendolo. Tutti i parametri dell'esperimento si possono trovare nel file sorgente TFormPendulum.cpp presente nella directory sources di questo cd.
Il periodo di oscillazione del pendolo vien calcolato mediante l'analisi di Fourier, utilizzando la funzione Matlab periodogram.
Per maggior completezza riporto di seguito la sequenza di operazioni che conduce al calcolo del periodo T, tratte dalla funzione AnalyzeDataWithMatlab() del file sorgente TFormPendulum.cpp:
La frequenza di Nyquist e` di 12.5 Hz dal momento che l'acquisizione del filmato e` stata fatta a 25 fps : piu` che sufficiente per questo moto oscillatorio di periodo pari a circa 3 secondi.
Faccio notare che, dalle numerose esperienze sul pendolo semplice da me effettuate, sembri essere opportuno misurare la lunghezza del pendolo dal punto di ancoraggio fino al collo, non al baricentro, della massa oscillante.
Ricordo infine che, al solito, i dati acquisiti possono essere esportati su file di testo ASCII, basta accedere al menu` Files/Save della form Tabelle, come illustra la figura seguente :
Questi esperimenti sono stati condotti per evidenziare il nesso tra masse e corrispettivi periodi di oscillazione : in particolare ci aspettiamo che, a parita` di altre condizioni, un aumento della massa appesa comporti un aumento del periodo di oscillazione.
Gli esperimenti effettuati confermano tutto cio` anche se, affinche` i conti tornino, ci sono alcune considerazioni da fare.
Nel primo esperimento si e` fatto uso di un elastico di cautcciu` anziche` di una molla, con masse di 0.5, 1.0 e 1.5 kg : cio` ha portato a risultati non molto precisi perche` l'elastico e` stato caricato eccessivamente. In effetti conveniva appendere pesi meno gravosi per rientrare nel regime di elasticita` dello stesso.
Nel secondo esperimento si e` fatto uso di una molla metallica : i risultati sono in ottimo accordo con quello che ci si aspetta dalla teoria purche` si tenga conto della massa propria della molla (circa 50 grammi).
In pratica e` come se ad una molla ideale priva di massa avessimo attaccato una massa pari alla SOMMA della massa di prova PIU` la massa della molla stessa.
Il periodo di oscillazione viene calcolato mediante l'analisi di Fourier, utilizzando la funzione periodogram del Matlab.
Per maggior completezza riporto di seguito la sequenza di operazioni che conduce al calcolo del periodo T, tratte dalla funzione AnalyzeDataWithMatlab() del file sorgente TFormSpring.cpp:
Se non e` presente il link col Matlab il PhysXLabs effettua un tipo di analisi dei dati abbastanza grezza : esso calcola i valori di velocita` e accelerazione direttamente dai dati di posizione acquisiti, semplicemente applicando le definizioni v=Ds/Dt e a=Dv/Dt.
Cio` porta a risultati normalmente abbastanza imprecisi, perche` l'hardware da me adottato non consente elevate risoluzioni spaziali e temporali (lo standard PAL prevede la risoluzione massima di 768x576 pixels a 25 fps ).
Per ovviare alla limitatezza dell'hardware si sono applicate alcune tecniche di curve-fitting : in pratica il calcolo dell'accelerazione di gravita` e` stato ottenuto calcolando l'equazione di secondo grado che meglio passa per i punti (posizioni) acquisiti.
Ho fatto uso di filmati trovati anche sul web per cui ho ottenuto diversi valori per l'accelerazione di gravita` g, tutti pero` rientrano nell'intervallo che va da 9.3 a 10.5 m/s^2 quindi con valori medi che si attestano attorno ai canonici 9.8 m/s^2 .
Per maggior completezza riporto di seguito la sequenza di operazioni di curve-fitting, tratte dalla funzione AnalyzeDataWithMatlab() del file sorgente TFormFreeFall.cpp:
Per questo tipo di esperienze ho dovuto far uso di alcuni filmati scaricati dal web, dal momento che non dispongo del piano a cuscino d'aria necessario.
L'urto e` di tipo elastico tra due oggetti di ugual massa : l'esperimento vuol mettere in evidenza l'importante principio fisico di conservazione della quantita` di moto del sistema.
Dal grafico finale si evince che la quantita` di moto del centro di massa e` rimasta pressocche` invariata .
Si osserva altresi` una leggera riduzione delle velocita` dei due oggetti dopo l'urto ( ... in realta` gli urti perfettamente elastici non esistono!).
Faccio osservare che ai dati acquisiti ho dovuto applicare un filtro mediano per eliminare il classico effetto a zig-zag dovuto ad una qualita` del filmato non tra le migliori (bassa risoluzione spaziale e temporale).
Per maggior completezza riporto di seguito la sequenza di operazioni di convoluzione, tratte dalla funzione AnalyzeDataWithMatlab() del file sorgente TFormCollision.cpp:
Per i piu` curiosi e per chi, come me, condivide la passione per l'informatica, ho riportato i codici sorgente relativi ai moduli principali di ciascun set di esperimenti :
TFormPendulum.cpp, TFormFreeFall.cpp, TFormSpring.cpp, TFormCollision.cpp .
Files di dati ed installazione.
Nella directory data di questo cd sono presenti alcuni files di dati in formato testo, direttamente importabili in Matlab on in Excel : freefall.txt, pendolo.txt, spring.txt.
Per installare l'applicazione PhysXLabs e` sufficiente avviare l'installer PhysXLabs_setup.exe presente nella directory laboratories/redist di questo CD.
Ringrazio gli autori di prodotti simili al PhysXLabs (VideoPoint, Tracker, LoggerPro) per aver pubblicato sui corrispettivi siti web i filmati di alcuni interessanti esperimenti di fisica, alcuni dei quali presenti su questo stesso cd.
Ringrazio gli amici ed i colleghi del Dipartimento di Achitettura e Urbanistica del mio amato Politecnico.
Francesco Settembrini, Settembre 2009.
^ ^ ^ ^ ^