\chapter{Projecto}

\epigraph{\emph{``O único homem que nunca comete erros é aquele que nunca faz coisa alguma. Não tenha medo de errar, pois aprenderá a não cometer duas vezes o mesmo erro.''}}%
         {Theodore Roosevelt}

No capítulo anterior, quando se aborda os pequenos robôs para aprendizagem, nota-se que em nenhum dos robôs descritos existe um dispositivo de pára-choques, à excepção do pioneer 3-DX que possui um módulo de expansão. Para um robô aprender um comportamento de locomoção necessita de um \textit{feedback} do ambiente, que pode ser dado por diversos sensores. Um dispositivo de pára-choques não é imperativo para um robô poder aprender. No entanto, um sensor de contacto físico, como é um sensor passivo, tem uma fiabilidade, normalmente, superior à de qualquer tipo de sensor activo. Isto porque, um sensor de contacto é menos susceptível a factores externos que possam interferir com a sua mecânica, ao contrário da maioria dos sensores activos, onde, por vezes, a temperatura, campos electromagnéticos ou a humidade, podem interferir com a mecânica de percepção desses sensores.

Ainda assim, os sensores de contacto fornecem apenas a informação de um robô ter ou não embatido, pelo que são necessários outro tipo de sensores que possibilitem ao robô ter uma percepção do ambiente que o rodeia, nomeadamente sensores de distância, como infra-vermelhos ou ultra-sons, que permitem ao mesmo saber a distância a que se encontram obstáculos.

Numa primeira abordagem deste trabalho, a ideia era melhorar o equipamento de um robô já existente, para poder aprender. No entanto, os robôs existentes no mercado ou são muito dispendiosos, ou são muito limitados no que diz respeito à expansão de \textit{hardware}. Por exemplo, cada Khepera III custa cerca de 2500 \euro, cada Miabot 950 \euro, e mesmo o e-puck (figura \ref{fig:e_puck}) custa 600 \euro. Estes preços incluem apenas o equipamento base dos robôs. Existem robôs mais baratos, como o 3pi da Polulu que custa cerca de 86 \euro, porém, além da fraca expansibilidade que este robô apresenta, seria necessário introduzir mais sensores e uma nova estrutura para suportar esses sensores, o que implicaria mais gastos.

Então, optou-se por conceber um robô novo de raiz, de baixo custo, usando, como inspiração, um projecto \textit{open source} de um robô concebido para competições de mini-sumo, o Mark III\cite{MarkIII}.
\begin{figure}[ht]
    \centering
    \includegraphics[width=0.5\textwidth]{MarkIII}
    \caption{Robô MarkIII.}
    \label{fig:MarkIII}
\end{figure}

\pagebreak

O Mark III (figura \ref{fig:MarkIII}) é um robô concebido para lutas entre robôs mini-sumo, em que o objectivo principal é colocar o robô adversário fora da área de luta. Uma vez que se trata de lutas entre robôs, este apresenta um chassi robusto, um dos factores importantes para um robô de aprendizagem por reforço. Este robô também possui hardware electrónico expansível, factor igualmente importante para a escolha deste robô como base para o desenvolvimento do robô de aprendizagem.

O Mark III possui um microcontrolador PIC16F877 da Microchip, pré-programado, com 368 bytes de memória RAM, 14 KB de memória \textit{flash} e 256 bytes EEPROM, dois servos, dois sensores de proximidade de infra-vermelhos e três sensores infra-vermelhos para a detecção de linhas no chão.

Concebeu-se assim, um robô com um chassi robusto, um sistema de pára-choques, que contém dez sensores de contacto, robusto e flexível, quatro sensores infra-vermelhos de distância, um sensor ultra-sons, dois servos e um módulo de comunicação \textit{wireless}. Ao robô concebido foi dado o nome SALbot (\textit{Small Autonomous Learning Robot}). Foram fabricados e montados dois SALbot para testar e comparar algoritmos de aprendizagem. Um pouco maior que o Khepera III, o SALbot mede 148 mm de comprimento por 172 mm de largura e 102 mm de altura, o que possibilita a operação do robô em bancadas de laboratório.

O SALbot é um robô do tipo diferencial de duas rodas com dois pontos adicionais de contacto. Isto é, o SALbot possui quatro rodas, sendo duas, accionadas pelos servos S3003 da Futaba\textsuperscript{\scriptsize{\textregistered}} no centro do chassi do robô, e duas rodas de apoio que correspondem a dois apoios esféricos livres. O SALbot possui também um micro controlador PIC18F4620 da Microchip, com 3968 bytes de memória RAM, 64 KB de memória \textit{flash} e 1024 bytes EEPROM.

%\pagebreak

\section{Projecto Mecânico}

\subsection{Chassi}

Como já foi referido, foram concebidos um chassi e um sistema de pára-choques suficientemente robustos para que a aprendizagem possa ser realizada eficientemente. A base do chassi foi fabricada a partir de uma chapa de 1 mm de espessura de alumínio AW1050-H111, que, embora não possua uma elevada resistência mecânica, apresenta uma boa conformabilidade, sendo que essa característica foi tida em conta devido ao facto de ser necessário conformar a chapa, para esta adquirir as formas do chassi. Para colmatar a fraca resistência mecânica do alumínio, foi concebida uma peça em acrílico que, para além de aumentar a resistência mecânica do chassi, também aloja os sensores de contacto que fazem parte do sistema de pára-choques. O chassi é composto também por quatro pilares que suportam os dois servo motores e a placa de circuito impresso; uma peça onde encaixa o suporte para os sensores de ultra-sons e infra-vermelhos de distância frontais; dois pilares que suportam, cada um, um sensor de distância infra-vermelho; e dois apoios esféricos livres.

Como é possível ver na figura \ref{fig:Chassi_explodido}, a base do chassi tem uma área plana grande no centro, onde são alojados os servos. Nas extremidades laterais estão dois ``braços'' onde são colocadas as peças de acrílico, e alojados os sensores de contacto do sistema de pára-choques. Na parte de trás, a chapa é dobrada em forma de ``U'', para dar mais resistência mecânica ao chassi e para a colocação de um sensor de distância de infra-vermelhos na traseira. Nas extremidades frontal e traseira a chapa é dobrada para alojar dois apoios esféricos livres.

\subsection{Dimensionamento dos apoios do chassi}

Para saber quantos apoios seriam necessários no SALbot, determinou-se o centro de massa e calculou-se o momento que o peso do robô exerce no eixo de rotação dos servos, comparando-o com o binário máximo dos mesmos. Devido à complexa distribuição de massas dos diversos componentes do SALbot, o centro de massa foi determinado a partir do modelo 3D, que, como é possível verificar na figura \ref{fig:Torque_calc}, se encontra na parte posterior em relação ao eixo de rotação das rodas, o que implica a necessidade de um apoio na parte frontal do chassi. Das características do servo da Futaba\textsuperscript{\scriptsize{\textregistered}} S3003 retiraram-se os seguintes valores:
\begin{description}
  \centering
  \item[Velocidade:] $\left\lgroup
                       \begin{array}{l}
                         \hbox{$0.23\ \mathrm{s}/60^{\circ}\quad \textrm{@}\quad 4.8\ \mathrm{V}$;} \\
                         \hbox{$0.19\ \mathrm{s}/60^{\circ}\quad \textrm{@}\quad 6\ \mathrm{V}$.}
                       \end{array}
                     \right.$
  \item[Binário:] $\left\lgroup
                       \begin{array}{l}
                         \hbox{$3.2\ \mathrm{kgf}\cdot\mathrm{cm}\quad \textrm{@}\quad 4.8\ \mathrm{V}$;} \\
                         \hbox{$4.1\ \mathrm{kgf}\cdot\mathrm{cm}\quad \textrm{@}\quad 6\ \mathrm{V}$.}
                       \end{array}
                     \right.$
\end{description}

\begin{figure}[!h]
  \centering
  \includegraphics[width=0.7\linewidth]{SALbot_torque_calc}\\
  \caption{Diagrama de corpo livre para o cálculo do somatório dos momentos.}\label{fig:Torque_calc}
\end{figure}

Para verificar se o momento criado pelo peso do robô é suficiente para anular o binário dos servos, foi necessário calcular-se o binário dos dois servos e compará-lo ao momento criado pelo peso do próprio robô. Uma vez que os servos operam a $5 \mathrm{V}$, usou-se interpolação linear para calculo:
\begin{eqnarray*}
    \vec M_{1} & = & 2 \times \Bigg( \frac{6-5}{6-4.8} \times 3.2 + \frac{5-4.8}{6-4.8} \times 4.1 \Bigg) \\
    & \cong & 6.7\quad \mathrm{kgf}\cdot\mathrm{cm} \\
\end{eqnarray*}
e como,
\begin{eqnarray*}
    1\quad \mathrm{kgf}\cdot\mathrm{cm} & = & \frac{1}{100} \times 9.8\quad \mathrm{N}\cdot\mathrm{m} \\
    & = & 9.8 \times 10^{-2}\quad \mathrm{N}\cdot\mathrm{m}
\end{eqnarray*}
então,
\begin{eqnarray*}
    \vec M_{1} & = & 6.7 \times 9.8 \times 10^{-2} \\
    & = & 65.6\times10^{-2}\quad \mathrm{N}\cdot\mathrm{m}
\end{eqnarray*}
A massa do robô foi obtido a partir do modelo 3D com uma majoração de 50\%, e calculou-se o momento criado no eixo de rotação dos servos:
\begin{eqnarray*}
    \vec P & = & m \times \vec g \\
    \vec P & = & 0.462 \times 9.8 \\
    & = & 4.5\ \mathrm{N}\ ; \\
    \vec M_{P} & = & \vec P \times \mathrm{d} \\
    & = & 4.5 \times 11.6\times10^{-3} \\
    & = & 5.2\times10^{-2} \mathrm{N}\cdot\mathrm{m}
\end{eqnarray*}
%como
%\begin{eqnarray*}
%    \overrightarrow{M}_{1} > \overrightarrow{M}_{P}
%\end{eqnarray*}
Como $\vec M_{1} > \vec {M}_{P}$,
é necessário então um apoio na parte traseira do robô para que este não levante no arranque para trás.

Os apoios esféricos livres são compostos por  uma esfera de aço de $\varnothing$ 7 mm, uma mola e uma estrutura cilíndrica com $\varnothing$ 8 mm. A mola pressiona a esfera contra a estrutura, para que esta apenas ceda a uma força que vença a força da mola, sem, no entanto, impedir que esta rode livremente. Cada apoio esférico é fixado, por aperto veio-furo, a uma peça de acrílico que por sua vez é fixa, através de uma ligação colada, à base do chassi.

\subsection{Suportes}

Tanto os pilares que suportam os servos, como os que suportam os sensores infra-vermelhos de distância, foram fabricados a partir de uma vara de perfil quadrado de $8 x 8\ \mathrm{mm}$ de alumínio corrente, para garantir uma fixação rígida entre os servos e o chassi, e também, para suportar as placas de circuito impresso. Os pilares, como se pode ver na figura \ref{fig:Chassi_explodido}, são fixados à base do chassi por uma ligação aparafusada; cada pilar possui um furo roscado no qual, um parafuso M3 garante a fixação do pilar à base do chassi. Nos pilares dos sensores existem, também, mais dois furos roscados que permitem a fixação do sensor com dois parafusos M3. Enquanto que, nos pilares que suportam os servos, além de um furo passante para introduzir um parafuso para a fixação do servo, possui, também, outro furo roscado para a fixação da placa de circuito impresso. Cada pilar que suporta um sensor de distância infra-vermelhos pode ser fixado por forma a colocar o sensor numa determinada orientação desejada. O que permite várias configurações diferentes do SALbot que podem ser testadas, em vários tipos de aprendizagem ou vários tipos de ambiente, com o fim de descobrir a orientação que mais se adequa ao tipo de aprendizagem ou ambiente.

A peça onde encaixa o suporte dos sensores de ultra-sons e infra-vermelhos de distância frontais, além de permitir a fixação do suporte dos sensores frontais, garantida por dois furos roscados onde apertam dois parafusos M3, permite também a fixação dos servos aos pilares frontais do chassi, através de dois furos roscados onde apertam dois parafusos M3, sendo que, cada parafuso aperta o servo ao pilar. Esta peça foi concebida em acrílico, uma vez que é leve e suficientemente resistente para a sua função.

Existe ainda um suporte traseiro para fixar um sensor de distância por ultra-sons; prescindiu-se no entanto da implementação desse sensor, pelo que, posteriormente, esse suporte passou a suportar a pilha que alimenta o circuito electrónico das placas.

\subsection{Sistema de pára-choques}

O sistema de pára-choques foi concebido tendo em conta a necessidade de robustez e flexibilidade, mas também de forma a permitir alguma distinção em relação ao local de embate. A ideia foi distinguir oito zonas distintas de contacto, nomeadamente frente-esquerda, frente-direita, lateral-esquerda-frente, lateral-direita-frente, lateral-esquerda, lateral-direita, trás-esquerda e trás-direita do robô, como se pode ver na figura \ref{fig:pontos de contacto}.

Para isso, projectou-se o SALbot com dez sensores de contacto, um para cada zona de contacto, excepto nas zonas laterais esquerda e direita, que contêm dois em paralelo, para uma maior estabilidade. Esses sensores de contacto, são fins-de-curso com uma haste que contém um rolete na ponta para poderem deslizar na face de contacto. Além desses sensores, o sistema de pára-choques é constituído por barras de contacto, que fazem a transferência de um impacto exterior com os sensores de contacto e representam cada uma das zonas de impacto, chapas arredondadas para os cantos do robô, que permitem a transferência de um impacto exterior nos cantos para os sensores de contacto para uma ou duas zonas de impacto vizinhas desse canto.

As barras de contacto foram concebidas em Teflon\textsuperscript{\scriptsize{\textregistered}} por forma a permitirem um deslizamento quer das rodas dos sensores de contacto, quer da chapa de alumínio dos cantos, com pouco atrito. As barras possuem um perfil em forma de um duplo ``T'', para que a chapa de alumínio possa deslizar em duas direcções, longitudinal e transversalmente, com alguma estabilidade, principalmente quando desliza transversalmente ao perfil. Cada barra de contacto apoia na extremidade da haste de dois sensores de contacto, excepto as barras lateral-esquerda-frente e lateral-direita-frente, que apoiam apenas na extremidade da haste de um único sensor. As barras são fixadas, por um adesivo, a uma tela fina de latex na face de contacto, que por sua vez é fixada ao chassi do robô através de parafusos e porcas M2 e M3. Esses parafusos e porcas apertam numas tiras de PVC transparente que fixam uniformemente as telas de latex ao chassi.

Por serem flexíveis, as telas de latex permitem que as barras de contacto se movam quando existe uma colisão, mas também garantem a posição das barras de contacto quando estas não são solicitadas.

%\pagebreak

\begin{figure}[htb]
  \centering
  \begin{minipage}[c]{0.65\linewidth}
    \centering
    \includegraphics[width=0.9\textwidth]{Para-choques_system}
  \end{minipage}
  \hfill
  \begin{minipage}[c]{0.3\linewidth}
      \begin{tabular*}{0.45\textwidth}[t]{l}
        % after \\: \hline or \cline{col1-col2} \cline{col3-col4} ...
        1 - Frente-esquerda; \\ \\ 2 - Frente-direita; \\ \\ 3 - Lateral-esquerda-frente; \\ \\
        4 - Lateral-direita-frente; \\ \\ 5 - Lateral-esquerda; \\ \\ 6 - Lateral-direita; \\ \\
        7 - Trás-esquerda; \\ \\ 8 - Trás-direita
      \end{tabular*}
  \end{minipage}
  \caption{Zonas de impacto.}\label{fig:pontos de contacto}
\end{figure}

Para que um robô ``saiba'' quando bateu necessita de um dispositivo de detecção que distinga um embate em qualquer direcção; por isso concebeu-se o sistema de pára-choques para que quando exista um contacto nos cantos, este, seja distinguido independentemente da direcção do contacto. Isso foi conseguido com um sistema que consiste numa chapa dobrada a 90$^{\circ}$, que forma o canto, que desliza entre as barras de contacto, que estão próximas do canto, e as rodas das hates dos sensores de contacto. Na figura \ref{fig:bumper_system} é possível ver as várias situações de embate que podem ocorrer nos cantos do sistema de pára-choques. Quando o choque se dá na zona das barras de contacto, quer a barra de contacto, onde se dá o contacto, quer o canto são deslocados e o sensor de contacto (fim de curso) é activado. Se o choque se der exclusivamente na zona do canto, apenas este é deslocado, activando um ou ambos os sensores de contacto, dependendo da direcção do embate. No caso de existir um duplo contacto, um na zona de uma das barras de contacto e outro na zona do canto, a barra de contacto e o canto são deslocados na direcção do embate na zona da barra de contacto, activando um dos sensores de contacto, e o canto é, também, deslocado na direcção do segundo contacto, activando o outro sensor de contacto. Além disso, nas partes laterais a distância entre as barras de contacto, laterais-frontais e laterais, é de 1 mm, o que permite a detecção de uma colisão em qualquer zona lateral. Assim, o sistema de pára-choques do SALbot permite a detecção de um embate qualquer que seja a direcção do mesmo.

\begin{figure}[!h]
  \centering
  \includegraphics[width=0.875\textwidth]{Bumper_system}\\
  \caption{Possibilidades de detecção de colisão pelo sistema de pára-choques nos cantos.}\label{fig:bumper_system}
\end{figure}

\pagebreak

Os cantos foram concebidos em chapa de 1 mm de espessura de alumínio AW1050-H111, dobrada com um raio médio de 16.5 mm e com dois rasgos de cada extremidade, por forma a que encaixem nas barras de contacto onde deslizam. Os cantos são fixados, por um adesivo, a uma tira de latex que é também fixada na extremidade de duas barras que formam um canto, também por um adesivo. Esta tira de latex vai garantir quer o retorno correcto do canto ao estado inicial após um choque, quer a correcta movimentação quando existe um choque, garantindo o paralelismo em relação às barras des contacto.

\subsection{Sistema de locomoção}

Em cada servo está fixada uma roda, de $\varnothing$ 65 mm, por um parafuso. Cada roda tem um elástico de borracha à volta, o que permite uma melhor aderência ao piso. Uma vez que os servos S3003 da Futaba\textsuperscript{\scriptsize{\textregistered}} apenas têm um amplitude de rotação de 90$^{\circ}$ para cada lado, foi necessário a modificação dos mesmos para poderem rodar continuamente. Para tal, houve a necessidade de abrir cada servo, cortar o batente da roda dentada, retirar o potenciómetro, que limita a amplitude de rotação do servo, e colocar, no seu lugar, duas resistências de $2.2\ k\Omega$ em paralelo, o que faz com que o controlador do servo ``pense'' que o servo se encontra sempre a meio da sua amplitude de rotação. Assim, para que o servo rode numa determinada direcção à velocidade máxima, basta enviar o comando para uma das posições extremas. Para o parar basta enviar o comando para o centro da amplitude de rotação. O controlo dos servos é descrito mais detalhadamente na secção \ref{seq:Servo_PW}. Como já foi referido, cada servo é fixado aos pilares do chassi que os suportam. Esta fixação é garantida por dois parafusos M3, na parte frontal o parafuso é apertado à peça de acrílico onde é também fixado o suporte dos sensores frontais, na parte traseira o parafuso é apertado a uma porca M3.

\subsection{Montagem do Conjunto}

Na figura \ref{fig:SALbot_explodido} é possível ver a perspectiva explodida do SALbot e na figura \ref{fig:Chassi_explodido} a perspectiva explodida do chassi. A maior parte da montagem dos componentes é feita com o recurso a parafusos. No entanto, os suportes dos apoios esféricos são fixados com uma fita adesiva de dupla face e as baterias para alimentação dos servos e das placas de circuito impresso são fixadas com tiras adesivas de velcro, para poderem ser retiradas e substituídas facilmente para o recarregamento, por exemplo.

\begin{figure}[ht]
  \centering
  \includegraphics[width=0.9\textwidth]{Chassi_explodido}\\
  A- Suporte dos sensores de contacto; B- Tiras de PVC; C- Porcas M2; D- Sensores de contacto; E- Porcas M3; F- Barras de contacto; G- Cantos do pára-choques; H- Base do chassi; I- Telas de Latex; J- Telas de Latex para os cantos; K- Parafusos M2; L- Parafusos M3; M- Apoios esféricos com suporte.
  \caption{Perspectiva explodida do chassi do SALbot.}\label{fig:Chassi_explodido}
\end{figure}

A sequência de montagem para o chassi é a seguinte:
\begin{enumerate}
  \item Fixar as peças que suportam os sensores de contacto (A) à base do chassi (H), através de dois parafusos (L) e duas porcas M3 (E) na parte traseira;
  \item Fixar os apoios esféricos nos suportes respectivos (M) e fixá-los na base do chassi (H);
  \item Colocar cada sensor de contacto (D) em cada caixa, das duas peças que suportam os sensores (A), para o efeito;
  \item Colar cada tela de latex (I) à barra de contacto (F) correspondente;
\pagebreak
  \item Orientar os furos de cada tela de latex (I), da parte superior, com os furos dos ``braços'' da base do chassi (H), colocar as respectivas tiras de PVC (B) orientando-as pelos furos e aplicar os parafusos M3 (L) e M2 (K);
  \item Orientar os furos de uma tela de latex (I), da parte inferior, de cada lado do robô (no caso da parte da frente e de trás apenas um dos lados da tela) com os furos dos suportes dos sensores de contacto (A), colocar as respectivas tiras de PVC (B) orientando-as pelos furos e aplicar as porcas M3 (E) e M2 (C);
  \item Encaixar os cantos (G) nas barras de contacto (F) já fixadas;
  \item Orientar os furos das restantes telas de latex (I), da parte inferior, com os furos dos suportes dos sensores de contacto (A), encaixando as respectivas barras de contacto (F) nos cantos (G), colocar as respectivas tiras de PVC (B) orientando-as pelos furos e aplicar as porcas M3 (E) e M2 (C).
\end{enumerate}

\begin{figure}[ht]
  \centering
  \includegraphics[width=0.9\textwidth]{SALbot_explodido}\\
  1- Rodas ; 2- Pilares de suporte dos servos ; 3- Suporte dos sensores de distância frontais ; 4- Sensor de distância por ultra-sons ; 5- Espaçador de Nylon ; 6- Peça de fixação do suporte dos sensores de distância frontais ao chassi; 7- Chassi; 8- Pilares de suporte dos sensores de distância por infra-vermelhos laterais; 9- Parafusos de fixação das rodas aos servos; 10- Parafusos M3; 11- Porcas M3; 12- Sensores de distância por infra-vermelhos; 13- Espaçador de plástico; 14- Suporte para sensor de distância por ultra-sons traseiro; 15- Parafusos M3 de Nylon; 16- PCB auxiliar; 17- PCB principal; 18- \textit{O-rings}; 19- Servos.
  \caption{Perspectiva explodida do SALbot.}\label{fig:SALbot_explodido}
\end{figure}

\pagebreak

Depois da montagem do chassi o robô é montado da seguinte forma:
\begin{enumerate}
  \item Fixar cada servo (19) aos pilares (2) traseiros com um parafuso (10) e porca (11) M3, no furo superior que se encontra mais próximo do centro de rotação do servo;
  \item Fixar cada servo (19) aos pilares (2) frontais com um parafuso (10) apertando-o à peça de fixação do suporte dos sensores de distância frontais (6);
  \item Fixar as rodas (1) nos servos (19) com os parafusos (9);
  \item Ligar os fios aos sensores de contacto que estão no chassi, que posteriormente serão ligados à placa auxiliar (16);
  \item Fixar os pilares (2), já fixados aos servos (19) e à peça de fixação do suporte dos servos frontais (6), à base do chassi (7) com parafusos M3 (10);
  \item Fixar os sensores de infra-vermelhos (12) nos pilares (8) respectivos para o efeito, com parafusos M3 (10), e o sensor de ultra-sons frontal (4) na chapa de suporte dos sensores frontais (3), com dois parafusos M3 de nylon (15), duas porcas M3 (11) e com um espaçador de nylon (5) entre o sensor (4) e a chapa de suporte (3);
%\pagebreak
  \item Fixar o sensor de infra-vermelhos (12) traseiro na parte de trás do chassi com dois parafusos (10) e porcas M3 (11), fixar os pilares (8) de suporte dos sensores de infra-vermelhos à base do chassi (7), com a orientação desejada, e fixar o sensor de infra-vermelhos (12) frontal à chapa de suporte dos sensores frontais (3), fixando, esta, à peça de fixação do suporte dos sensores frontais (6);
  \item Fixar a chapa de suporte traseira (14) com dois parafusos (10) e porcas M3 (11) ao chassi (7);
  \item Fixar a bateria de alimentação dos servos por baixo da base do chassi (11) e a bateria de alimentação das placas de circuito impresso na chapa de suporte traseira (14), utilizando fitas adesivas de velcro;
  \item Fixar a placa de circuito impressa principal (17) aos pilares (2) com parafusos M3 de nylon (15), colocando um espaçador de plástico (13) entre cada pilar e a placa, e um o-ring (18) de borracha entre a cabeça de cada parafuso e a placa;
  \item Fazer as ligações dos servos (19), baterias, sensores de infra-vermelhos (12)  e ultra-sons (4) com a placa de circuito impresso principal (17);
  \item Encaixar a placa de circuito auxiliar (16) na placa de circuito impresso principal (17) e ligar os fios dos sensores de contacto na placa auxiliar.
\end{enumerate}

\section{Projecto Electrónico}
\label{seq:Projecto_Electronico}

Nesta secção é descrito o desenvolvimento das placas de circuito impresso utilizadas no SALbot. Foram concebidos três tipos de placas de circuito impresso: uma placa de circuito principal (figura \ref{fig:SALbot_main}) para cada SALbot; uma placa de circuito auxiliar (figura \ref{fig:SALbot_Aux}) para cada SALbot; e uma placa de interface de comunicação \textit{wireless} (figura \ref{fig:SALbot_com_receiver}) para o computador comunicar com o SALbot. A placa principal é responsável pelo controlo do robô e da aquisição dos sensores de distância infra-vermelhos e ultra-sons. Enquanto que a placa auxiliar é responsável pela comunicação \textit{wireless}, aquisição dos sensores de contacto e interface de programação do microcontrolador. A placa de interface de comunicação \textit{wireless} serve unicamente para a comunicação entre o computador e o SALbot.

A placa de circuito principal foi desenvolvida com base na placa do Mark III. Esta contém o microcontrolador que controla o robô; a interface de porta série RS-232, controlado por um MAX232 ACPE+; os terminais de alimentação da placa e dos servos; as portas dos servos, dos sensores de infra-vermelhos e de ultra-sons; a porta de expansão de 40 pinos da placa; uma unidade de memória EEPROM 24LC1025 com 1 Mbit; uma porta de expansão da interface I$^{2}$C\textsuperscript{\scriptsize{\texttrademark}}, que é configurada por 6 pinos; um botão de \textit{reset}; e um botão \textit{on-off}. Contém ainda dois \textit{LEDs}: um verde que indica se o circuito da placa está ligado e um vermelho que indica que a bateria de alimentação do circuito está fraca. O \textit{LED} vermelho é controlado pelo regulador de tensão MAX667, que, recorrendo a um divisor resistivo, acende o \textit{LED} quando a bateria baixa para perto dos 5V.

\begin{figure}[ht]
  \centering
%  \includegraphics[width=0.8\textwidth]{SALbot_Main}\\
  \includegraphics[width=1\textwidth]{SALbot_Main_diagram}\\
  \caption{Placa de circuito principal do SALbot.}\label{fig:SALbot_main}
\end{figure}

A placa de circuito auxiliar foi desenvolvida de raiz para a interface de comunicação \textit{wireless} e aquisição dos sinais dos sensores de contacto. Esta placa contém um dispositivo XBee, responsável pela comunicação \textit{wireless}, que é descrito detalhadamente no próximo capítulo; oito terminais duplos, para a aquisição dos sinais dos sensores de contacto de cada zona de embate; uma porta de expansão de 40 pinos, que faz a ligação entre a placa de circuito principal e esta placa; um botão de on-off da comunicação \textit{wireless}; um botão de reset do XBee; um regulador de tensão LM1117 DT-3.3, que regula a tensão de 5V vinda da placa de circuito principal para 3.3V para a alimentação do XBee; e, ainda, quatro \textit{LEDs} de interface visual do estado da comunicação \textit{wireless}. Um \textit{LED} amarelo para indicar a recepção de dados, um vermelho para indicar o envio de dados, um azul que indica a potência do sinal recebido, ou RSSI (\textit{Received signal strength indication}), e um verde que indica se o circuito de comunicação \textit{wireless} está ligado.

%\pagebreak

A placa de interface de comunicação \textit{wireless} foi também desenvolvida de raiz para a comunicação entre o computador e o SALbot. O computador recebe e envia informações para a placa a partir de uma porta série DB-9 implementada na placa. A comunicação série entre o computador e a placa é controlada por um MAX3232 CPE. A placa possui também um dispositivo XBee, responsável pela comunicação \textit{wireless}, e um terminal de ligação da alimentação da placa, que é alimentada por uma pilha de 9V. À semelhança da placa de circuito auxiliar do SALbot, também a placa de interface de comunicação \textit{wireless} para o computador, integra quatro \textit{LEDs} de interface visual do estado da comunicação \textit{wireless}. Um \textit{LED} amarelo para indicar a recepção de dados, um vermelho para indicar o envio de dados, um azul que indica a potência do sinal recebido, ou RSSI (\textit{Received signal strength indication}), e um verde que indica se o circuito de comunicação \textit{wireless} está ligado.

\begin{figure}[ht]
  \centering
  %\includegraphics[width=0.8\textwidth]{SALbot_Aux}\\
  \includegraphics[width=1\textwidth]{SALbot_Aux_diagram}\\
  \caption{Placa de circuito auxiliar do SALbot.}\label{fig:SALbot_Aux}
\end{figure}

\begin{figure}[ht]
  \centering
  %\includegraphics[width=0.8\textwidth]{SALbot_com_receiver}\\
  \includegraphics[width=1\textwidth]{SALbot_Com_diagram}\\
  \caption{Placa de interface de comunicação.}\label{fig:SALbot_com_receiver}
\end{figure} 