\section{Raccolta dati}

\subsection{Impostazione}
Per eseguire le campagne di racca

\subsection{I dispositivi utilizzati}
Per eseguire le misurazioni delle grandezze di interesse sono stati utilizzati i dispositivi equipaggiati  \textit{MoteIV Tmote Sky} con sensori per il rilevamento di temperatura, umidità e luminosità. Sebbene questi sensori siano predisposti per una comunicazione dei dati mediante rete wireless si è scelto di effettuare l'acquisizione off-line sfruttando la memoria flash (1024 Kb, sufficiente per tutto il tempo di raccolta) in cui immagazzinare i dati raccolti più delle informazioni aggiuntive che sono stati letti alla fine mediante usb. La scelta di utilizzare questa modalità di lettura è dipesa principalmente dall'esigenza di un attento utilizzo del consumo energetico, infatti sebbene questi dispositivi siano progettati per garantire un basso consumo ed abbiano un processore in grado di funzionare con tensioni che arrivano fino a 1.9 V i componenti necessari all'esperimento (i sensori e la memoria flash) necessitano di una tensione costante di circa 3 V fornita da due batterie di tipo AA alcaline. Se la tensione in ingresso diminuisce eccessivamente posso accadere dei malfunzionamenti al convertitore ADC con una perdita di bit significativi (da 14 bit a 12 bit upper) e alla memoria flash che per una scrittura sicura richiede una almeno 2.6 V. Si fa notare che la scelta di una alimentazione mediante porta usb per questa esperienza non è possibile poichè in questo caso l'alimentazione a 5 V provoca un surriscaldamento del processore posto in prossimità del sensore di temperatura, sfalsando così la misura di temperatura. In questo modo si è riusciti ad avere una alimentazione corretta durante tutta la raccolta dei dati, in Figura ??? è riportato l'andamento della tensione di ogni dispositivo.\\
Viene riportata qui di seguito una breve descrizione dei sensori utilizzati dai \textit{Tmote}:
\begin{enumerate}
\item \textit{Umidità e temperatura}:  Il sensore di temperatura e umidità utilizzato sul mote è il sensore Sensiron SHT11. Esso consta di un sensore di temperatura il cui principio di funzionamento si basa sulla dipendenza dalla temperatura della banda di non conduzione di un semiconduttore ed ha range di funzionamento: -40/+123.8 C. La sua risoluzione è a 14 bit (può essere ridotta a 12 bit per applicazioni che richiedono velocità elevate o un utilizzo con potenza in ingresso molto bassa). La calibrazione è gestita internamente in base a delle tabelle, la formula di conversione dalla parola a 14 bit $T_{raw}$ presente nella memoria flash a gradi centigradi è
\begin{equation}
T = b_1+b_2T_{raw}-b_3(T_{raw}-b_4)^2 \quad [C]
\end{equation}
con costanti $b_1=-39.6$, $b_2=0.01$, $b_3=-2 \cdot 10^{-8}$ e $b_4=7000$
 \\ Il sensore per rilevare l'umidità è basato sulla variazione di capacità di un polimero in funzione dell'umidità presente nell'ambiente circostante e ha range di funzionamento 0/100 \% RH. La misura viene registrata in una parola a 12 bit $H_{raw}$ che può scendere ad 8 bit se necessario. La formula per la conversione è:
\begin{equation}
RH_{true} = (T-25)(c_1+c_2H_{raw})+c_3+c_4H_{raw}+c_5H_{raw}^2 [\%]
\label{rh_true}
\end{equation}
con constanti $c_1=0.01$, $c_2=8\cdot 10^{-6}$, $c_3=-4$,$c_4=0.0405$ e $c_5=-2.8\cdot 10^{-6}$. Per maggiori informazioni si rimanda al datasheet ???.
\item \textit{Luminosità} I sensori presenti nel mote per misurare la quantità di luce sono due fotodiodi prodotti dalla Hamamatsu. In particolare è presente il modello S1087 sensibile alla sola luce visibile (320 - 730nm) e il modello S1087-01 che rivela anche lo spettro infrarosso (320 - 1100nm). Le misure sono memorizzate in parole da 16 bit unsigned e la conversione in lux é data da:
\begin{equation}
AR = 625AR_{raw} \quad [lux]
\label{ar}
\end{equation}
con $AR_{raw}$ il valore in bit fornito dal sensore S1087. Analogamente a partire dal dato in bit $TR_{raw}$ del sensore S1087-01 si implementa
\begin{equation}
TR = 76.9TR_{raw} \quad{[lux]}\,.
\label{tr}
\end{equation}
Per la fase di identificazione la misura che viene utilizzata è quella fornita dal secondo sensore, ovvero quella comprensiva della radiazione visibile e dell'infrarosso poichè entrambe influiscono sul comportamento dinamico dell'edificio.
\item \textit{Memoria flash} Il mote è equipaggiato con una unità di memoria flash esterna di tipo seriale di capienza 1024kb. Essendo tuttavia configurata in lettura e scrittura solo nei primi quindici settori lo spazio effettivamente disponibile è di 983040 byte. La struttura dati presente consta di 6 campi da 16 bit ciascuno, il che significa una capacità totale di 81920 campioni. Questo valore è in realtà ridotto a 65535 campioni poichè parte dello spazio è utilizzato per controllare se dei dati non vengono scritti in memoria (di fatto l'ultimo dei sei campi è occupato da un numero che aumenta di un passo ad ogni istante di campionamento). Contando che il tempo di campionamento adatto per le dinamiche termiche di un edificio è dell'ordine dei 5-10 minuti si capisce che la memoria disponibile nel mote è più che sufficiente per lo svolgimento dell'esperienza.

\item \textit{Codice utilizzato}
Si fornisce qui di seguito una breve descrizione del codice che viene utilizzato per la gestione dei mote.\\
Il firmware caricato su ogni mote divide la sessione di aquisizione in tre fasi.  La prima parte è dedicata al setup che viene effettuato comunicando con il mote tramite usb e pc. In questa fase vengono gestite le operazioni principali di lettura della memoria flash e di cancellazione della stessa. La seconda fase è dedicata alla sincronizzazione e il passaggio avviene allo scadere di un timer opportunamente impostato. In questa fase le comunicazioni usb sono interrotte e gli unici eventi che il mote è può rilevare sono ricezione del pacchetto radio di sincronizzazione o la pressione del tasto user (che causa la partenza di un nuovo timer e l'invio di un nuovo pacchetto di sincronizzazione). Con la terza fase si inizia l'acquisizione vera e propria dei dati. Il modulo radio viene disattivato ed un timer posto uguale al tempo di campionamento comanda la lettura dei dati rilevati dai sensori e la scrittura su flash. Il principio di funzionamento è riportato in Figura \ref{strutturaStati}.\\
L'interfaccia con il PC è sviluppata in Java su piattaforma Linux ed utilizza le librerie di comunicazione seriale e le classi per la gestione dei pacchetti fornite con TinyOS 2.x. La lettura del mote fornisce in outuput un file di testo contenente i valori registati dai sensori che vengono convertiti in unità ingegneristiche da uno script in Matlab secondo (\ref{rh_true})-(\ref{tr}). La programmazione dei mote è avvenuta eseguendo lo script $EggMote.h$ in cui si precedentemente impostato il tempo di campionamento.

\begin{figure}[H]
\begin{center}
\includegraphics[width=7cm]{figure/pp.eps}
\caption{Struttura degli stati e delle funzionalità del mote}
\label{strutturaStati}
\end{center}
\end{figure}

\end{enumerate}


\section{Metodi di identificazione ai sottospazi}
I metodi di identificazione a sottospazi sono particolarmente adatti per l'identificazione di sistemi MISO (o MIMO) di grandi dimensioni per la loro efficienza computazionale. Vengono implementati utilizzando strumenti derivati dall'algebra lineare (per effettuare opportune proiezioni ortogonali e oblique) come la decomposizione QR e SVD di cui esistono implementazioni molto efficienti. Si noti che in questo modo si evita l'utilizzo di minimizzazioni ricorsive e quindi si evitano i problemi di convergenza che esse comportano (e che possono capitare con i metodi PEM).\\
Il problema è dunque, date le osservazioni $\{y_1,\ldots,y_T,u_1,\ldots,u_T\}$, $y_t\in \mathbb{R}^p$, $u_t\in \mathbb{R}^m$ costruire il modello:
\begin{equation}
\left\{ \begin{array}{rcl}
x(t+1) & =& Ax(t)+Bu(t)+Ke(t)\\
y(t) &=& Cx(t)+e(t)
\end{array}\right.
\end{equation}
che descriva i dati (con $e(t)$ rumore bianco).
%Si richiede che il sistema abbia tutti i modi eccitabili dall' ingresso $u$ (stocastico o deterministico) ovvero si richiede la controllabilità della coppia $(A,[BQ^{1/2}])$. Inoltre tutti i modi devono essere osservabili dall'uscita $y$, cioè la coppia $(A,C)$ deve essere osservabile. Il problema è dunque quello di trovare un ordine $n$ per il modello e le matrici $A,B,C,D,Q,R,S$ dati gli ingressi $u_0,\ldots,u_{s-1}$ e le uscite $y_0,\ldots,y_{s-1}$. A partire da una proiezione attraverso una decomposizione ai valori singolari si ottiene una stima dell'ordine e la matrice di osservabilità (e se necessario la sequenza degli stati del sistema). Nel caso di un ingresso deterministico le matrici $A,B,C,D$ del sistema vengono trovate risolvendo in maniera esatta di un opportuno sistema lineare. Nel caso di ingresso stocastico il sistema lineare viene risolto tramite i minimi quadrati e successivamente si ricavano dai residui le matrici di covarianza $Q,S,R$ e di conseguenza gli ingressi stocastici del sistema. In questa trattazione verranno usati alcuni strumenti la cui trattazione completa esula lo scopo prefissato. Per approfondimenti si rimanda a ??. 

A partire dal processo stostico $\mathbf{y}(t)$ si scrivono i dati nella forma $\{y_t,\ldots,y_{t+N-1}\}=\mathbf{Y}_t $ per creare una corrispondenza biunivoca (al crescere del numero $N$ di dati) tra lo spazio astratto di variabili aleatorie $span\{y(t),\ldots,y(s) \}$ e lo spazio generato dalle righe $\mathbf{Y}_t$ della matrice di Henkel diagonale a blocchi:
\begin{equation}
Y_{[t,s]}=
\begin{bmatrix}
y_t & y_{t+1} & \ldots & y_{t+N-1}\\
y_{t+1} & y_{t+2} & \ldots & y_{t+N} \\
\vdots & \vdots & \ddots & \vdots \\
y_s & y_{s+1} & \ldots & y_{s+N-1}
\end{bmatrix}
\end{equation}
di dimensione $Y_{[t,s]}\in \mathbb{R}^{p(s-t)xN}$ e da questa si definiscono le matrici delle uscite passate e future
\begin{equation}
Y_{[0,2t-1]}=
\begin{bmatrix}
Y_p \\
Y_f
\end{bmatrix}
=
\begin{bmatrix}
Y_{[0,t-1]} \\
Y_{[t,2t-1]}
\end{bmatrix}
\end{equation}
e si svolgono delle operazioni analoghe con i dati d'ingresso $\mathbf{u}(t)$. A questo punto si può costruire una base per lo spazio di stato $X_t$ attraverso una proiezione adatta delle sequenze dei dati e successivamente da questa base si risolve nel senso dei minimi quadrati il sistema:
\begin{equation}
\left\{ \begin{array}{rcl}
\hat{X}_{t+1} & \simeq & A\hat{X}_t+B\hat{U}_t+KE_t \\
Y_t & \simeq & C\hat{X}_t+E_t
\end{array}\right.
\end{equation}
dove $\hat{E}_t:=Y_t-\hat{C}X_t$. 
\\Si definisce poi la matrice di osservabilità del sistema come:
\begin{equation}
\Gamma:=
\begin{bmatrix}
C\\
CA\\
CA^2\\
\vdots \\
CA^f
\end{bmatrix}
\end{equation}
e matrici triangolari inferiori a blocchi di Toeplitz con i parametri di Markov del sistema:
\begin{equation}
H_d=
\begin{bmatrix}
0 & 0 & \ldots & 0 \\
CB & 0 & \ldots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
CA^{f-1}B & CA^{f-2}B & \ldots & 0
\end{bmatrix} \quad,
\end{equation}
\begin{equation}
H_s=
\begin{bmatrix}
I & 0 & \ldots & 0 \\
CK & I & \ldots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
CA^{f-1} & CA^{f-2}K & \ldots & I
\end{bmatrix} \quad .
\end{equation}
 \\ Utilizzando ora la relazione
\begin{equation}
\mathbf{Y}_{[p,p+f]}=\Gamma \mathbf{X}_p+H_d\mathbf{U}_{[p,p+f]}+H_s\mathbf{E}_{[p,p+f]}
\end{equation}
e si effettua la proiezione obliqua 
\footnote{
La proiezione obliqua \'e la scomposizione in due sottospazi tra loro non ortogonali. Si denota come $\hat{E}_{||B}[\cdot|C_t]$, ossia la proiezione lungo lo spazio generato delle righe di $B$ sullo spazio generato dalle righe di $C_t$. La formula estesa \'e:
\begin{equation}
 \hat{E}_{||B_t}[A_t|C_t] = \hat{\Sigma}_{ac|b}\hat{\Sigma}_{cc|b}^{-1}C_t
\label{obl}
\end{equation}
Dove sotto le ipotesi di ergodicit\'a le matrici di covarianza campionaria (condizionata e non) sono: $ \hat{\Sigma}_{ab} := \frac{1}{N}\sum_{i=0}^{N-1}a_{t+i}b_{t+i}^{\top} $ e $ \hat{\Sigma}_{ab|c} := \hat{\Sigma}_{ab} - \hat{\Sigma}_{ac}\hat{\Sigma}_{cc}^{-1}\hat{\Sigma}_{cb} $
}
 (mediante decomposizione QR)
\begin{equation}
\Gamma \mathbf{X}_p \simeq \hat{\mathbf{Y}}_{[p,p+f]}:=E_{||\mathbf{U}_{[p,p+f]}}\left[\mathbf{Y}_{[p,p+f]}|\mathbf{Z}_{[0,p)}\right].
\label{proiez_obl}
\end{equation}
%inserire figura

\begin{figure}[H]
\begin{center}
\includegraphics[width=7cm]{figure/proiezione_obliqua.eps}
\caption{Rappresentazione geometrica della proiezione obliqua effettutata in (\ref{proiez_obl})}
\label{proiezione_obliqua}
\end{center}
\end{figure}

Per stimare $\Gamma$  ( e se necessario $\mathbf{X}_p$ ) si utilizza una decomposizione "`SVD pesata"'
\begin{equation}
U_nS_nV_n^T \simeq W_r \hat{\mathbf{Y}}_{[p,p+f]}W_c
\end{equation}
e si ottiene
\begin{equation}
\hat{\Gamma}:=W_r^{-1}U_nS_n^{1/2} \qquad \hat{\mathbf{X}}_p:=\hat{\Gamma}_r^{-L}\hat{\mathbf{Y}}_{[p,p+f]}
\end{equation}