
Outro dos objetivos era a criação de um algoritmo que consiga reconhecer o condutor do veículo, com base num processo prévio de registo de dados da condução. Para tal ser exequível, foi necessário escolher de entre todas as manobras de condução uma que fosse característica a cada condutor: a manobra escolhida foi o estacionamento em paralelo.


\section{Pressupostos}\label{sec:query} 

Para esta experiência foram selecionados três voluntários do sexo masculino, com idades compreendidas entre os 22 e 25 anos, tendo sido instruídos quanto ao tipo de manobra a fazer, bem como os estágios intermédios que a manobra envolve. \\
Assim, a manobra foi dividida em três estágios diferentes (Figura \ref{fig:park}). No primeiro a), o condutor imobiliza o carro e inicia a marcha atrás; o segundo b), já compreende uma paragem perto do local de destino; e por fim um pequeno deslocamento para a frente c).

\begin{figure}[ht]
	\centering
 \includegraphics[width=0.8\textwidth]{imagens/parking.eps}
\caption{Diferentes fases da manobra.}
\label{fig:park}
\end{figure}

Esta divisão da manobra em três fases distintas permite um melhor tratamento estatístico, visto que é possível distinguir facilmente o início e fim de cada estágio da manobra, bastando para isso, verificar a alteração do valor da velocidade.

\section{Tratamento de dados}\label{sec:data_treat}

A experiência contabilizou seis testes a cada um dos 3 indivíduos.\\
Todos os testes foram considerados válidos, pois cumpriam com os pressupostos indicados no início da experiência. 

Tendo em vista uma melhor ferramenta para tratar os dados foi desenvolvido uma \textit{package} de  \textit{R.O.S.} que exporta a informação em formato \textit{ascii} para posterior tratamento em \textit{MATLAB}. 
Quando este módulo é executado, gera um ficheiro em formato de texto com o estado de algumas das variáveis do sistema (tabela \ref{tab:msg_matlab}).

\begin{table}[h!]
\centering
    \begin{tabular}{  c  c  }
    \hline \hline
     \textbf{Variáveis gravadas pelo modulo ROS} & \textbf{Valores / unidades}  \\ \hline \hline
      Nome do ficheiro \textit{.bag} & \\ \hline
      Tempo do ficheiro &  segundos\\ \hline
      Estado da ignição & 0 ou 1\\ \hline
      Estado pisca esquerdo & 0 ou 1\\ \hline
      Estado pisca direito & 0 ou 1\\ \hline
      Valor do sensor da acelerador & 0 a 1023\\ \hline
      Valor do sensor da travão & 0 a 1023\\ \hline
      Valor do sensor da embraiagem & 0 a 1023\\ \hline
      Velocidade do veículo & $m/s$\\ \hline
      Rotações do motor &  rotações por minuto\\ 
  \hline \hline
 \end{tabular}
\caption{Mensagem gravada para posterior tratamento em ambiente \textit{MATLAB}.}
\label{tab:msg_matlab}
\end{table}


\section{Descritores utilizados}\label{sec:descriptors}

Para conseguir escolher de entre os vários condutores foi necessário identificar descritores para toda a manobra; os descritores potenciais considerados são mostrados na tabela \ref{tab:descriptors}.

 

\begin{table}[H]
\centering
    \begin{tabular}{ c  p{11cm}  }
    \hline \hline
 \textbf{ Notação  } &  \textbf{ Variáveis gravadas pelo modulo \textit{ROS}} \\ 
 \textbf{ matemática } &    \\ \hline \hline
\begin{math} D_{1}  \end{math} & tempo total da manobra (s) \\ \hline
\begin{math} D_{2}  \end{math} & tempo do primeiro estágio (s)  \\ \hline
\begin{math} D_{3}  \end{math} & tempo do segundo estágio (s)  \\ \hline
\begin{math} D_{4}  \end{math} & tempo do terceiro estágio (s)   \\ \hline
\begin{math} D_{5}  \end{math} & velocidade média no primeiro estágio  \\ \hline 
\begin{math} D_{6}  \end{math} & velocidade média no terceiro estágio  \\ \hline
\begin{math} D_{7}  \end{math} & rotação média do motor no primeiro estágio  \\ \hline
\begin{math} D_{8}  \end{math} & rotação média do motor no segundo estágio  \\ \hline
\begin{math} D_{9}  \end{math} & rotação média do motor no terceiro estágio  \\ \hline
\begin{math} D_{10}  \end{math} & média do produto do ângulo da direção com a velocidade no primeiro estágio  \\ \hline
\begin{math} D_{11}  \end{math} & média do produto do ângulo da direção com a velocidade no terceiro estágio  \\ \hline
\begin{math} D_{12}  \end{math} & ângulo médio da direção no segundo estágio  \\ \hline
\begin{math} D_{13}  \end{math} & variância do ângulo da direção no segundo estágio  \\ \hline
\begin{math} D_{14}  \end{math} & tempo que o pisca direito está ligado  \\ \hline
\begin{math} D_{15}  \end{math} & número de vezes que o acelerador esta premido "ao de leve"  \\ \hline
\begin{math} D_{16}  \end{math} & número de vezes que o acelerador esta premido com "leve média"  \\ \hline
\begin{math} D_{17}  \end{math} & número de vezes que o acelerador esta premido com "média força"  \\ \hline
\begin{math} D_{18}  \end{math} & número de vezes que o acelerador esta premido com "muita força"   \\ \hline
\begin{math} D_{19}  \end{math} & quantidade de tempo que a embraiagem está premida  \\ \hline
\begin{math} D_{20}  \end{math} & número de vezes que o travão esta premido "ao de leve"  \\ \hline
\begin{math} D_{21}  \end{math} & número de vezes que o travão esta premido com "força leve média"  \\ \hline
\begin{math} D_{22}  \end{math} & número de vezes que o travão esta premido com "média força" \\ \hline
\begin{math} D_{23}  \end{math} & número de vezes que o travão esta premido com "muita força"  \\ 
  \hline \hline
 \end{tabular}
\caption{Representação de todos os descritores utilizados.}
\label{tab:descriptors}
\end{table}




Alguns descritores da tabela \ref{tab:descriptors} foram separados consoante os diferentes estágios da manobra, (figura \ref{fig:park}) pois estão presentes ao longo de toda a manobra, destacando assim os tempos  e as rotações do motor, \begin{math} D_{2,3,4}  \end{math} e \begin{math} D_{7,8,9}  \end{math}, respetivamente.

Foram tidos em conta os tempos totais em que o acelerador e travão estiveram premidos durante toda a manobra de estacionamento. 
Nos casos do acelerador e travão foi possível dividir em quatro gamas diferentes a força aplicada, \begin{math} D_{15,16,17,18}  \end{math} e \begin{math} D_{20,21,22,23}  \end{math}, respetivamente.

Nos casos do pedal da embraiagem, \begin{math} D_{19}  \end{math}, e do sinal indicador de mudança de direção \begin{math} D_{14}  \end{math}, foi tido em conta a quantidade de tempo que estes estão premidos. 
No caso particular da embraiagem, esta está sempre no seu valor máximo ou não apresenta carga, tornando-a numa variável booleana para esta manobra específica. 

O descritor da velocidade foi tido em conta no primeiro e terceiro estágios, \begin{math} D_{5,6}  \end{math}. De notar que o carro está parado durante o segundo estágio, daí que não seja relevante ter como descritor a velocidade do veículo. Outro descritor para os estágios anteriormente descritos poderá ser o produto da velocidade do carro pelo ângulo da direção \begin{math} D_{10,11}  \end{math}. No segundo estágio utilizamos o ângulo médio da direção e a sua variância, \begin{math} D_{12,13}  \end{math}.

\section{Escolha de descritores }\label{sec:choice_descriptors}

Com uma lista de vinte e dois descritores seria complexo escolher o melhor descritor ou combinação de descritores que distinguissem os diferentes condutores durante o estacionamento, porque são excessivos face à baixa diversidade de amostras obtidas.
Por este motivo, foi necessário desenvolver um algoritmo que fizesse teste a todas as combinações possíveis e que depois de executado desse as combinações que cumprissem as condições impostas pelo utilizador.



\subsection{Notação utilizada}\label{subsec:Notation_used}

Nesta subsecção é apresentada notação matemática utilizada na formalização do algoritmo de escolha de descritores.

\begin{table}[H]
\centering
    \begin{tabular}{ p{3cm}  p{8cm}  c }
    \hline \hline
 \textbf{ Notação  } &  \textbf{ Significado} &  \textbf{Dimensão}  \\ 
 \textbf{ matemática } &  &  \\ \hline \hline
\begin{math} \textbf{T}^x_{k}  \end{math} &  teste k do indivíduo x. & $1 \times 23$\\ \hline
\begin{math} D_{n}  \end{math} &  descritor n da tabela \ref{tab:descriptors}. & $1 \times 1$\\ \hline
\begin{math} \textbf{B}^x  \end{math} &  matriz base de descritores de referência do indivíduo x. & $4 \times 23$\\ \hline
\begin{math} \overline{\textbf{B}}^x  \end{math} &  média dos descritores para o indivíduo x. & $1 \times 23$\\ \hline
\begin{math} \overline{\textbf{B}}_t  \end{math} &  média das bases de referência dos três indivíduos. & $3 \times 23$\\ \hline
\begin{math} \textbf{B}_m  \end{math} &  valores máximos de cada descritor das bases de referência. & $1 \times 23$\\ \hline
\begin{math} \overline{\textbf{B}}_n  \end{math} &  valores médios normalizados das bases. & $3 \times 23$\\ \hline
\begin{math} \textbf{V}_d  \end{math} & variância de cada descritor, presente nas três bases de referência. & $1 \times 23$\\ \hline
\begin{math} \text{P}  \end{math} &  valor definido pelo utilizador como variância mínima que os descritores têm de ter, para serem considerados como descriminantes. & $1 \times 1$\\ \hline
\begin{math} k_i  \end{math} &  número de arranjos para cada combinação de descritores. Parâmetro definido pelo utilizador. & $1 \times 1$ \\ \hline\begin{math}  \textbf{V}_{fd} \end{math} & índices dos descritores escolhidos pelo parâmetro \begin{math} P  \end{math}. & $1 \times k_i$\\ \hline
\begin{math} \textbf{C}  \end{math} & matriz de combinações de descritores a serem testadas. & $ C_p \times k_i$ \\ \hline
\begin{math} \textbf{B}^{T^x} \end{math} &  valor médio dos descritores de cada linha de \textbf{C}, para cada base de referência. & $1 \times  k_i$\\ \hline
\begin{math} \textbf{T}^{T^t}_5 \end{math} & valor dos descritores de cada linha de \textbf{C}, para o quinto ficheiro de cada individuo.  & $1 \times  k_i$\\ \hline
\begin{math} \textbf{E}^x_t \end{math} &  distância euclideana para o teste t e base de referência do indivíduo x. & $1 \times  23$\\ \hline
\begin{math} \textbf{F}^{k_i} \end{math} & matriz de combinações escolhidas pelo algoritmo para arranjos de $k_i$  &  $C_p  \times k_i$. \\ 
  \hline \hline
 \end{tabular}
\caption{Descrição da notação utilizada.}
\label{tab:Notation_used}
\end{table}


%Nomenclatura utilizada:
\begin{itemize}

\item  $ \underset{k}{med}  \underbrace{\big[ A(n,k) \big]}_\text{n x k} =  \underbrace{\big[  med A(:,1) \ ...\  med A(:,k) \big]}_\text{1 x k} $

\item \begin{math} \textbf{X}./\textbf{Y}  \rightarrow\end{math} Divisão dos elementos de \textbf{X} por \textbf{Y}, um a um.


\item \begin{math} \textbf{X}(:,\textbf{Y}(\textbf{Z},:))  \rightarrow \end{math} Seleção das colunas de \textbf{X} cujo valor seja o valor da linha \textbf{Z} do vetor \textbf{Y}.
\end{itemize}





\subsection{Formalização do algoritmo utilizado}\label{subsec:formal_algoritm}

São dados de entrada os 22 descritores (tabela \ref{tab:descriptors}), 6 ficheiros de teste para cada condutor, num total de 18 testes. Dos seis ficheiros de cada condutor, quatro são ficheiros que serão usados para criar a base de referência, \begin{math}\textbf{B}^x\end{math}.

O quinto ficheiro de cada condutor servirá para escolher os descritores que mais se adequam a um determinado condutor, \begin{math}\textbf{T}^x_5\end{math}.



Desta forma cada teste pode ser descrito por:
		\begin{equation} 	\textbf{T}^x_{k}	= \begin{bmatrix}   D_{1} & D_{2} & D_{3} & ... & D_{22} \end{bmatrix},\  x = \lbrace1,2,3\rbrace\ k=\lbrace1,2,...,6\rbrace 	\end{equation}


Em seguida é criada uma base de referência para cada indivíduo \begin{math}  x \end{math}, utilizando apenas os 4 primeiros ficheiros de teste, \begin{math}\textbf{B}^x\end{math}.



	\begin{equation} \textbf{B}^x	= \begin{bmatrix} \textbf{T}^x_{1}  \\ \textbf{T}^x_{2} \\ \textbf{T}^x_{3} \\ \textbf{T}^x_{4}  \end{bmatrix},\  x = \lbrace1,2,3\rbrace	\end{equation}
		
		

Será feita a média de cada descritor para cada base de referência.
A média é feita ao longo da variável \begin{math} D_n \end{math}, isto é, para todas as colunas de \begin{math}\textbf{B}^x\end{math}.
		
	\begin{equation} \overline{\textbf{B}}^x= \underset{D_n}{med}\left(\begin{bmatrix} \textbf{B}^x(1:4,D_{n}) \end{bmatrix} \right) ,\  x = \lbrace 1,2,3\rbrace, \ n=\lbrace 1,2,...,22\rbrace \end{equation} 
		
	O valor médio das três bases de referência é concatenado, dando origem a \begin{math}\overline{\textbf{B}}_t \end{math}.
		
	\begin{equation} \overline{\textbf{B}}_t = \begin{bmatrix} \overline{\textbf{B}}^1  \\\overline{\textbf{B}}^2 \\ \overline{\textbf{B}}^3 \end{bmatrix}    \end{equation}

 Para conseguir normalizar os descritores é então calculado o máximo de cada descritor.

	\begin{equation} \textbf{B}_m = \underset{D_n}{max} \bigg( \overline{\textbf{B}}_t(1:3,D_n) \bigg),\ D_n = \lbrace1,2,...,22\rbrace \end{equation} 
		
		

Em seguida normalizam-se os valores de todos os descritores da base de referência, \begin{math}\overline{\textbf{B}}_t \end{math}, pelos valores máximos,  \begin{math} \textbf{B}_m \end{math}.

% maximo da coluna

		\begin{equation}  \overline{\textbf{B}}_n(1:3,D_n) = \overline{\textbf{B}}_t./\textbf{B}_m	\end{equation}
		
		

Depois é calculada a variância de cada descritor nas três bases de referência.
		\begin{equation}  \textbf{V}_d = \underset{D_n}{var}(\overline{\textbf{B}}_n(1:3,D_n)),\ em\ coluna	\end{equation}
				
				
		
Em seguida o algoritmo percorre todas as colunas de \begin{math}\textbf{V}_d \end{math} e compara-os com um valor \begin{math} P \end{math}, definido pelo utilizador.
Se o valor \begin{math} \textbf{V}_d \end{math} for maior do que o valor de \begin{math} P \end{math}, então cria-se o vetor \begin{math} \textbf{V}_{fd} \end{math} que contém o número dos descritores que passaram neste filtro.
Esta operação tem o objetivo de excluir os descritores que variam muito pouco nas três bases de dados, logo não serão adequados como descritores dos diferentes condutores.
		

Após esta primeira filtragem aos descritores, será então necessário verificar as diferentes combinações para cada um dos ficheiros de teste, deste modo:

Obtém-se uma matriz \begin{math} \textbf{C} \end{math} que, ao longo de cada linha, contém as combinações de \begin{math} \textbf{V}_{fd} \end{math} arranjados a \begin{math} k_i \end{math}. Onde \begin{math} k_i \end{math} pode ter valores entre 1 e 3.
O número total de combinações possíveis dos valores das colunas de \begin{math} \textbf{V}_{fd} \end{math} é dado por:
		
		\begin{equation}   C_p = \frac{n!}{k_i!(n-k_i)!}, \text{ onde \begin{math} n \end{math} é o número de descritores contidos em \begin{math} \textbf{V}_{fd} \end{math}}  \end{equation}  
		
A matriz \textbf{C} é o resultado da utilização da função \textit{MATLAB}, \textit{combnk}, que disponibiliza uma matriz com todas as combinações possíveis de \begin{math} \textbf{V}_{fd} \end{math} arranjadas a \begin{math} k_i \end{math}.	
Como podemos reparar, a matriz \textbf{C} tem tamanho variável, consoante os arranjos \begin{math}k_i\end{math} que sejam feitos e a quantidade de descritores existentes.
		
  \begin{equation}  \textbf{C} = \begin{bmatrix} C_p\times k_i\end{bmatrix} \end{equation}  
		
De modo a encontrar combinações que discriminem os três condutores, para cada linha de C, isto é, para cada conjunto de descritores arranjados a $k_i$:

São retiradas as colunas correspondentes aos descritores de cada base de referência média. 
		
  \begin{equation} \textbf{B}^{T^x} = \overline{\textbf{B}}^x(1,\textbf{C}(n_i,:)) ,\ n_i=\lbrace 1,2,...,C_p\rbrace \end{equation}

Onde \begin{math}\textbf{B}^{T^x}\end{math} representa um vetor linha com os valores médios de cada descritor da base de referência do indivíduo x.

De mesma forma para cada quinto teste ($\textbf{T}^x_5$) são retiradas as colunas respetivas a cada linha de C.

 \begin{equation} \textbf{T}^{T^t}_5 = \textbf{T}^x_5(1,\textbf{C}(n_i,:)) ,\ n_i=\lbrace 1,2,...,C_p\rbrace \end{equation}


É então calculada a distancia Euclideana entre o vetor \begin{math} \textbf{T}^{T^t}_5 \end{math} e cada base de referência de cada individuo, \begin{math}\textbf{B}^{T^x}\end{math}.

		 \begin{equation}		\textbf{E}^x_t=\sqrt{ \Big(\textbf{T}^{T^t}_5-\textbf{B}^{T^x}\Big)^\intercal \times \Big(\textbf{T}^{T^t}_5-\textbf{B}^{T^x}\Big) },\ x=\lbrace 1,2,3\rbrace,\ t=\lbrace 1,2,3\rbrace      \end{equation}	

O mesmo processo ocorre para os ficheiros de teste seguintes, t=2 e t=3.
A combinação só é considerada válida caso o valor mínimo da distância euclideana em cada teste $\textbf{T}^{T^t}_5$ corresponda à base de referência do indivíduo que fez o teste. Em caso de serem verificadas estas condições, o conjunto de descritores são armazenadas na matriz $\textbf{F}^{k_i}$.

Por fim os últimos ficheiros de teste $\textbf{T}^t_6$ são reservados para validação das combinações escolhidas pelo algoritmo. Desta forma é repetida apenas a última fase do processo anteriormente descrito, onde para cada combinação de $\textbf{F}^{k_i}$ é verificado se o valor é mínimo para a distância euclideana daquele teste quando calculado com as bases de referência dos três indivíduos, prosseguindo desta forma até ao último ficheiro de teste.



