+++ /dev/null
-\section{Robot architecture}
-\subsection{Mapping of the sensors and actuators}
-The actuators are all plugged into the master brick to achieve the maximum
-safety in case the \emph{Bluetooth} connection fails between the master and the
-slave and one of the actuators is moving. All the safety-critical sensors for
-movement are placed on the master brick too. All other sensors are placed on
-the slave brick. Any increased latency on those sensors will not danger the
-safety. The final mapping is described in \autoref{tab:mapping}.
-
-\begin{table}[H]
- \centering
- \begin{tabular}{lll}
- \toprule
- & Master Brick & Slave Brick\\
- \midrule
- \multirow{2}{*}{Actuators} & Left motor\\
- & Right motor & \\
- & Measurement motor\\
- \midrule
- \multirow{4}{*}{Sensors} & Left light sensor & Color sensor\\
- & Right light sensor & Front ultrasone sensor\\
- & Back ultrasone sensor & Left touch sensor\\
- & Gyro sensor & Right touch sensor\\
- \bottomrule
- \end{tabular}
- \caption{Proposed mapping of the sensors and actuators}\label{tab:mapping}
-\end{table}
-
-\subsection{Design patterns}
--- /dev/null
+
+@article{brooks_robust_1986,
+ title = {A robust layered control system for a mobile robot},
+ volume = {2},
+ url = {http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1087032},
+ number = {1},
+ urldate = {2015-12-16},
+ journal = {Robotics and Automation, IEEE Journal of},
+ author = {Brooks, Rodney},
+ year = {1986},
+ pages = {14--23},
+ file = {01087032.pdf:/home/mart/.zotero/zotero/ofn8ivnf.default/zotero/storage/RRTSK9H5/01087032.pdf:application/pdf}
+}
+
+@misc{lejos_team_lejos_2015,
+ title = {{LeJOS} {EV}3 {API} {Documentation}},
+ url = {http://www.lejos.org/ev3/docs/},
+ urldate = {2015-12-16},
+ author = {LeJOS Team},
+ month = nov,
+ year = {2015}
+}
\ No newline at end of file
--- /dev/null
+\section{Robot architecture}
+\subsection{Tools}
+\emph{LeJOS}\cite{lejos_team_lejos_2015}
+
+\subsection{Design patterns}
+\subsubsection{Leader-Follower}
+Ultimately we want to only program one robot. The fact that the one robot
+contains multiple control bricks is something that needs to be abstracted away
+from. As will be discussed in Section~\ref{sec:mapping} the first brick, from
+now on \textit{Leader}, has the direct control over all the motors. However the
+second brick, from now on \textit{Follower}, controls no motors. Both the
+\textit{Leader} and the \textit{Follower} control $4$ sensors. Because of this
+configuration the \textit{Follower} only needs to send its sensor data to the
+\textit{Leader}. There is no need to communicate anything back since the
+\textit{Follower} can not respond in any physical way. An option could be to
+distribute the processing power but due to the strength of the bricks and the
+limitation of the bluetooth this is very hard or even impossible to achieve.
+
+\subsubsection{Subsumption}
+As the higher level architecture we use a slightly adapted version of the
+subsumption architecture first described by Brooks\cite{brooks_robust_1986}.
+We use the pre-implemented architecture from the \emph{LeJOS} where with the
+use of a \texttt{suppressed} flag in every behaviour we can start and interrupt
+the behaviour. Our version is a little bit adapted from the original
+subsumption behaviour because in our implementation the robot can finish the
+designated task even if the behaviour does not want control anymore. For
+example when the left light sensor detects that the robot is driving of the
+planet a right turn of $90$ degrees may be initiated. This right turn will be
+completed even when the left light sensor is not detecting a dangerous value.
+The suppressed flag can take three states. \texttt{IDLE}, \texttt{IN\_ACTION}
+and \texttt{SUPPRESSED}. By default all behaviours have the \texttt{IDLE}
+state. When a behaviour is started the state will change to \texttt{IN\_ACTION}
+and when a behaviour finished the state will be reset to \texttt{IDLE}. When a
+behaviour needs to be interrupted the state is set to \texttt{SUPPRESSED} and
+since the behaviour is always monitoring the state it will shutdown as soon as
+possible and reset the state.
+
+\subsection{Mapping of the sensors and actuators}\label{sec:mapping}
+The actuators are all plugged into the master brick to achieve the maximum
+safety in case the \emph{Bluetooth} connection fails between the master and the
+slave and one of the actuators is moving. All the safety-critical sensors for
+movement are placed on the master brick too. All other sensors are placed on
+the slave brick. Any increased latency on those sensors will not danger the
+safety. The final mapping is described in \autoref{tab:mapping}.
+
+\begin{table}[H]
+ \centering
+ \begin{tabular}{lll}
+ \toprule
+ & Master Brick & Slave Brick\\
+ \midrule
+ \multirow{2}{*}{Actuators} & Left motor\\
+ & Right motor & \\
+ & Measurement motor\\
+ \midrule
+ \multirow{4}{*}{Sensors} & Left light sensor & Color sensor\\
+ & Right light sensor & Front ultrasone sensor\\
+ & Back ultrasone sensor & Left touch sensor\\
+ & Gyro sensor & Right touch sensor\\
+ \bottomrule
+ \end{tabular}
+ \caption{Proposed mapping of the sensors and actuators}\label{tab:mapping}
+\end{table}
+