\chapter{Separation of Concerns}
\label{chap:separation}
We have an initial design and in this step we will define features and subsystems.
To structure this process we will use a tiny bit of the RobMoSys approach.
With that we will define the mission, tasks, skills, functions and subsystems.
The subsystem combines some layers of RobMoSys as they are to specific for the scope of this thesis.

\section{RobMoSys}
The mission is clear and has already been stated before.
The system shall be able to write a tweet on a whiteboard.
\autoref{fig:robmosys} shows how the mission organized.
This separation is not created to be the most optimal as it is based on our initial design.
The three skills of move marker, move wiper and move carriage are redundant as they all have movement in the same plane.
One could say that this overcomplicates the design.
However, we chose for some complexity in the design, which creates dependency between subsystems, such that the design method can be tested.

\begin{figure*}
    \centering
    \includegraphics[width=0.8\paperwidth]{graphics/robmosys.pdf}
    \caption{Separation of the mission into tasks, skills, functions and subsystems based on a simplification of RobMoSys.}
    \label{fig:robmosys}
\end{figure*}

RobMoSys creates a top-down approach which results in the different subsystems.
The design method specifies that we want to implement feature by feature.
From \autoref{fig:robmosys} we can conclude that each step in the graph represents a sub-feature.
It might be a piece of hardware, control law or interface, they can all be classified as features of some sort.
Furthermore, it automatically generates the dependency tree as well.
As we cannot write a character somewhere on the board if we cannot move the marker.

\section{Feature Definition and Dependencies}
In the previous section we discussed that we have loads of sub-features.
We could implement all these features one by one.
But as some of them have single dependencies they could be combined.
The function 'Move wiper on board' is directly linked to the skill 'Wipe area' and could easily combined.
Especially as the skill is a direct test case for the function and as test cases are already required this is a valid optimization.

\section{Feature specifications}
The specifications that are listed in the system specifications document have to be distributed among the features.
We have grouped some specifications as they influence the same feature-group.

\subsection{Reach}
The first grouping is for the reach of the robot.
From the specifications document we find three specifications which influence the possible position of the carriage:
\begin{itemize}
    \item The Writer shall be able to write at least 50 characters per line.
    \item The Writer shall be able to write at least 5 lines of text.
    \item If the Writer is not wiping or writing then the Writer shall not obstruct the view of the whiteboard.
\end{itemize}
The first two specify the minimum reach of the carriage.
The third specifies that the carriage has to move out of the way.

\autoref{fig:reach} shows the sub-features that cover the behavior of the carriage.
We have to take these three into account when we will develop these sub-features.

\begin{marginfigure}
    \includegraphics[width=0.8\linewidth]{graphics/reach.pdf}
    \caption{Sub-features that are responsible for reach related specifications}
    \label{fig:reach}
\end{marginfigure}

\subsection{Character Writing}
The sub-systems shown in \autoref{fig:char} are responsible for getting the characters on the board.
The character writing specifications are given as:
\begin{itemize}
    \item The Writer shall plot characters with a size that is readable from 4 meters for a person with good eyesight.
    \item The Writer shall plot in a regular used font with corresponding character spacing.
    \item While writing, the Writer shall have a writing speed of at least 1 character per second.
\end{itemize}
The later one covers the writing speed.
The speed does not only depend on the time required for a single char.
It also depends on moving to the position of the next character.
This is overlaps with the grouping for the reach specification as described in the previous subsection and can be seen in \autoref{fig:reach}
So we will split this into the following sub-specifications:
\begin{itemize}
    \item While writing, the SCARA shall have a writing speed of at least 1.5 characters per second.
    \item When the Carriage/base of the SCARA is at a static position, the SCARA shall be able to write at least 3 characters at that position.
    \item When the SCARA finished writing at their current position, the Carriage shall move the SCARA to it's next position where it can write the subsequent characters.
    \item When the SCARA has to be moved to a new position, the Carriage shall perform this movement within 1 second.
\end{itemize}

\begin{marginfigure}
    \includegraphics[width=0.8\linewidth]{graphics/char.pdf}
    \caption{Sub-features that are responisible for character writing specifications}
    \label{fig:char}
\end{marginfigure}

\subsection{Tooling}
For the system to be able to switch from writing to wiping, there must be some toolchanging.
The general idea is that the end-effector can hold a tool and for a marker it shall be able to press it on the board.

