| @@ -16,7 +16,7 @@ | |||||
| \tcbline | \tcbline | ||||
| \begin{description} | \begin{description} | ||||
| \item[Features:] Cable Bot | \item[Features:] Cable Bot | ||||
| \item[Specifications:] 1, 2, 6, 11, (12) | |||||
| \item[Requirements:] 1, 2, 6, 11, (12) | |||||
| \item[Results:] The test passes when: | \item[Results:] The test passes when: | ||||
| \begin{itemize} | \begin{itemize} | ||||
| \item The Cable bot moved along the edge of the text area. | \item The Cable bot moved along the edge of the text area. | ||||
| @@ -33,7 +33,7 @@ | |||||
| \tcbline | \tcbline | ||||
| \begin{description} | \begin{description} | ||||
| \item[Features:] Cable Bot | \item[Features:] Cable Bot | ||||
| \item[Specifications:] 7, 9, (12), 14, 15, 16 | |||||
| \item[Requirements:] 7, 9, (12), 14, 15, 16 | |||||
| \item[Results:] The test passes when: | \item[Results:] The test passes when: | ||||
| \begin{itemize} | \begin{itemize} | ||||
| \item At the start and end of the test, the Cable bot does not move relative to the board. | \item At the start and end of the test, the Cable bot does not move relative to the board. | ||||
| @@ -52,7 +52,7 @@ | |||||
| \tcbline | \tcbline | ||||
| \begin{description} | \begin{description} | ||||
| \item[Features:] SCARA, End-Effector | \item[Features:] SCARA, End-Effector | ||||
| \item[Specifications:] 3, 4, (12), 13, 14 | |||||
| \item[Requirements:] 3, 4, (12), 13, 14 | |||||
| \item[Results:] The test passes when: | \item[Results:] The test passes when: | ||||
| \begin{itemize} | \begin{itemize} | ||||
| \item The SCARA wrote three characters on the whiteboard within \SI{2}{\second}. | \item The SCARA wrote three characters on the whiteboard within \SI{2}{\second}. | ||||
| @@ -68,7 +68,7 @@ | |||||
| \tcbline | \tcbline | ||||
| \begin{description} | \begin{description} | ||||
| \item[Features:] SCARA, End-Effector | \item[Features:] SCARA, End-Effector | ||||
| \item[Specifications:] (5), (12), 17 | |||||
| \item[Requirements:] (5), (12), 17 | |||||
| \item[Results:] The test passes when: | \item[Results:] The test passes when: | ||||
| \begin{itemize} | \begin{itemize} | ||||
| \item A tool is released from the end-effector and stored for later use. | \item A tool is released from the end-effector and stored for later use. | ||||
| @@ -90,7 +90,7 @@ | |||||
| \tcbline | \tcbline | ||||
| \begin{description} | \begin{description} | ||||
| \item[Features:] SCARA, End-Effector, Cable Bot | \item[Features:] SCARA, End-Effector, Cable Bot | ||||
| \item[Specifications:] 1, 2, 3, (12) | |||||
| \item[Requirements:] 1, 2, 3, (12) | |||||
| \item[Results:] The test passes when: | \item[Results:] The test passes when: | ||||
| \begin{itemize} | \begin{itemize} | ||||
| \item All lines are drawn, 11 vertical and 4 horizontal lines. | \item All lines are drawn, 11 vertical and 4 horizontal lines. | ||||
| @@ -118,7 +118,7 @@ the quick brown fox jumps over the lazy dog!?@,.- | |||||
| \tcbline | \tcbline | ||||
| \begin{description} | \begin{description} | ||||
| \item[Features:] SCARA, End-Effector, Cable Bot | \item[Features:] SCARA, End-Effector, Cable Bot | ||||
| \item[Specifications:] 1, 2, 3, 4, (5), 6, 7, 12, 13, 14, 15, 16 | |||||
| \item[Requirements:] 1, 2, 3, 4, (5), 6, 7, 12, 13, 14, 15, 16 | |||||
| \item[Results:] The test passes when: | \item[Results:] The test passes when: | ||||
| \begin{itemize} | \begin{itemize} | ||||
| \item The text as described is readable from a atleast \SI{4}{\meter} distance. | \item The text as described is readable from a atleast \SI{4}{\meter} distance. | ||||
| @@ -133,7 +133,7 @@ the quick brown fox jumps over the lazy dog!?@,.- | |||||
| \tcbline | \tcbline | ||||
| \begin{description} | \begin{description} | ||||
| \item[Features:] SCARA, End-Effector, Cable Bot | \item[Features:] SCARA, End-Effector, Cable Bot | ||||
| \item[Specifications:] (5), 10, 11, 12 | |||||
| \item[Requirements:] (5), 10, 11, 12 | |||||
| \item[Results:] The test passes when: | \item[Results:] The test passes when: | ||||
| \begin{itemize} | \begin{itemize} | ||||
| \item The system cleaned the board within \SI{60}{\second}. | \item The system cleaned the board within \SI{60}{\second}. | ||||
| @@ -147,7 +147,7 @@ the quick brown fox jumps over the lazy dog!?@,.- | |||||
| \tcbline | \tcbline | ||||
| \begin{description} | \begin{description} | ||||
| \item[Features:] SCARA, End-Effector, Cable Bot | \item[Features:] SCARA, End-Effector, Cable Bot | ||||
| \item[Specifications:] 8 | |||||
| \item[Requirements:] 8 | |||||
| \item[Results:] The test passes when: | \item[Results:] The test passes when: | ||||
| \begin{itemize} | \begin{itemize} | ||||
| \item The developer can motivate that the system is complex enough to evaluate the case study. | \item The developer can motivate that the system is complex enough to evaluate the case study. | ||||
| @@ -1,15 +1,6 @@ | |||||
| %&tex | %&tex | ||||
| \chapter{Case Study: Evaluation} | \chapter{Case Study: Evaluation} | ||||
| \label{chap:case_evaluation} | \label{chap:case_evaluation} | ||||
| \begin{marginfigure} | |||||
| \centering | |||||
| \includegraphics[width=51mm]{graphics/model_versions.pdf} | |||||
| \caption{ | |||||
| Levels of detail of the design are shown on the right, starting with the least detail at the top and most detail at the bottom. | |||||
| Through out the development different types of models are used, these are shown on the left. | |||||
| } | |||||
| \label{fig:levels} | |||||
| \end{marginfigure} | |||||
| The previous chapter described the development and implementation process of the Whiteboard Writer. | The previous chapter described the development and implementation process of the Whiteboard Writer. | ||||
| This chapter focusses on the evaluation of the development during the case study. | This chapter focusses on the evaluation of the development during the case study. | ||||
| The design method itself is evaluated in the next chapter. | The design method itself is evaluated in the next chapter. | ||||
| @@ -20,8 +11,8 @@ Then a section is about the time spend on the development. | |||||
| Followed by two sections on the role of stake holders and the use of modelling languages during a development. | Followed by two sections on the role of stake holders and the use of modelling languages during a development. | ||||
| The last section is a more personal reflection about the development. | The last section is a more personal reflection about the development. | ||||
| \section{Result} | |||||
| \input{content/case_evaluation_result.tex} | |||||
| % \section{Result} | |||||
| % \input{content/case_evaluation_result.tex} | |||||
| \section{Time Investment} | \section{Time Investment} | ||||
| Prior to each step in the development, I made an estimation on the workload of that particular step. | Prior to each step in the development, I made an estimation on the workload of that particular step. | ||||
| @@ -2,10 +2,19 @@ | |||||
| In the end, the development produced eight models with increasing levels of detail and one prototype. | In the end, the development produced eight models with increasing levels of detail and one prototype. | ||||
| The different levels of detail and how they are modelled are shown in \autoref{fig:levels}. | The different levels of detail and how they are modelled are shown in \autoref{fig:levels}. | ||||
| The assembled \ac{scara} prototype is shown in \autoref{fig:prototype}. | The assembled \ac{scara} prototype is shown in \autoref{fig:prototype}. | ||||
| This prototype is able execute the small rectangle as described in \autoref{test1}, and thus passes the test. | |||||
| This prototype is able to execute the small rectangle as described in \autoref{test1}, and thus passes the test. | |||||
| In addition, it was possible to write three characters. Therefore, passing \autoref{test_triple_char}. | In addition, it was possible to write three characters. Therefore, passing \autoref{test_triple_char}. | ||||
| \begin{figure} | |||||
| \begin{marginfigure} | |||||
| \centering | |||||
| \includegraphics[width=51mm]{graphics/model_versions.pdf} | |||||
| \caption{ | |||||
| Levels of detail of the design are shown on the right, starting with the least detail at the top and most detail at the bottom. | |||||
| Through out the development different types of models are used, these are shown on the left. | |||||
| } | |||||
| \label{fig:levels} | |||||
| \end{marginfigure} | |||||
| \begin{figure}[t] | |||||
| \hspace{5mm} | \hspace{5mm} | ||||
| \includegraphics[width=96mm]{graphics/prototype.JPG} | \includegraphics[width=96mm]{graphics/prototype.JPG} | ||||
| \caption{Assembled prototype of the \ac{scara}.} | \caption{Assembled prototype of the \ac{scara}.} | ||||
| @@ -4,23 +4,23 @@ | |||||
| This chapter presents the execution of the case study. | This chapter presents the execution of the case study. | ||||
| Where the goal of the case study is to evaluate the design plan as presented in \autoref{chap:analysis}. | Where the goal of the case study is to evaluate the design plan as presented in \autoref{chap:analysis}. | ||||
| To achieve this goal, I develop a system according to the design plan and document this design process. | To achieve this goal, I develop a system according to the design plan and document this design process. | ||||
| As described in \autoref{sec:sod}, the system to be designed is a "Tweet on a Whiteboard Writer". | |||||
| As described in \autoref{sec:sod}, the subject of design is a "Tweet on a Whiteboard Writer". | |||||
| Documenting the process is done by following the evaluation protocol as described in \autoref{sec:evaluation_protocol}. | Documenting the process is done by following the evaluation protocol as described in \autoref{sec:evaluation_protocol}. | ||||
| To start the case study unbiased, during the preparation I did perform as little preliminary research as possible on the design options of the whiteboard writer. | To start the case study unbiased, during the preparation I did perform as little preliminary research as possible on the design options of the whiteboard writer. | ||||
| The chapter begins with the section about the preparation phase, which contains the four corresponding design steps as shown in \autoref{fig:design_plan_analysis}. | |||||
| The chapter begins with the section about the preparation phase, which contains the five steps from problem description to test protocol step as shown in \autoref{fig:design_plan_analysis}. | |||||
| This is followed by two completed development cycles in the later two sections. | This is followed by two completed development cycles in the later two sections. | ||||
| Both of these sections cover the three steps that are shown in \autoref{fig:design_plan_analysis}. | |||||
| Each design step is described in a separate subsection. | |||||
| Herein, the result of the design step is presented and concluded with an evaluation section at the end. | |||||
| Both of these sections cover the feature selection, variable-detail approach and rapid development steps as shown in \autoref{fig:design_plan_analysis}. | |||||
| Each design step is described in a separate section. | |||||
| Herein, the result of each design step is presented and concluded with an evaluation section at the end. | |||||
| This evaluation section discusses the pairs of questions that were answered according to the evaluation protocol (\autoref{tab:prepost}). | This evaluation section discusses the pairs of questions that were answered according to the evaluation protocol (\autoref{tab:prepost}). | ||||
| The questions regarding the design method itself are discussed in \autoref{chap:reflection}. | The questions regarding the design method itself are discussed in \autoref{chap:reflection}. | ||||
| \section{Preparation Phase} | \section{Preparation Phase} | ||||
| The preparation phase contains four design steps. | The preparation phase contains four design steps. | ||||
| It begins with a problem description. | It begins with a problem description. | ||||
| This description is detailed into a list of specifications. | |||||
| Based on the specifications, a number of design solutions proposed and eventually one of these solutions is chosen as initial design. | |||||
| The problem description is used to create a list of system requirements. | |||||
| Based on the requirements, a number of design solutions proposed and eventually one of these solutions is chosen as initial design. | |||||
| Splitting the initial design into features is done in the feature definition step. | Splitting the initial design into features is done in the feature definition step. | ||||
| \input{content/case_experiment_problem_description.tex} | \input{content/case_experiment_problem_description.tex} | ||||
| @@ -1,49 +1,52 @@ | |||||
| With the preparation phase completed, the development cycle is next. | With the preparation phase completed, the development cycle is next. | ||||
| This consists of three steps: Feature selection, Rapid Development and Variable Approach. | |||||
| This consists of three steps: Feature selection, Rapid Development and Variable-detail Approach. | |||||
| The current section explains the first development cycle during the design. | The current section explains the first development cycle during the design. | ||||
| For this first cycle of the design process, I design the end-effector. | For this first cycle of the design process, I design the end-effector. | ||||
| However, not long after the start of the development process, the implementation proved to be too complex. | |||||
| However, not long after the start of the development process, the implementation of the end-effector proved to be too complex. | |||||
| This led to the decision to abort the implemention of the end-effector. | This led to the decision to abort the implemention of the end-effector. | ||||
| Eventhough no progress was made, this attempted implementation did provide valuable insight in the desing process. | |||||
| Eventhough no progress was made in the design, this attempted implementation did provide valuable insight in the desing process. | |||||
| \subsection{Feature Selection} | \subsection{Feature Selection} | ||||
| \label{sec:case_feature_selection_1} | \label{sec:case_feature_selection_1} | ||||
| \begin{table}[] | |||||
| \caption{Overview of the different features and their dependencies, number of tests that are covered and the risk/time factor. | |||||
| The risk/time factor is calculate as risk divided by time.} | |||||
| For each feature in the system the dependees, tests and \ac{cof}/time factor is determined, as explained in \autoref{sec:feature_selection}. | |||||
| These values are combined into \autoref{tab:firstfeatureselection}. | |||||
| \begin{table}[h] | |||||
| \caption{Overview of the different features and their dependencies, number of tests that are covered and the \ac{cof}/time factor. | |||||
| The \ac{cof}/time factor is calculate as \ac{cof} divided by time.} | |||||
| \label{tab:firstfeatureselection} | \label{tab:firstfeatureselection} | ||||
| \begin{tabular}{|l|l|l|l|l|l|} | |||||
| \hline | |||||
| Feature & Dependees & Tests & Risk & Time & Risk/Time \\ \hline | |||||
| \ac{scara} & - & 3 & 40\% & 10 days & 4 \\ \hline | |||||
| End-effector & \ac{scara} & 2 & 60\% & 8 days & 7.5 \\ \hline | |||||
| \ac{cdc} & - & 2 & 30\% & 10 days & 3 \\ \hline | |||||
| \rowcolors{2}{lightgray}{white!100} | |||||
| \begin{tabular}{llrrrr} | |||||
| \toprule | |||||
| Feature & Dependees & Tests & \ac{cof} & \multicolumn{1}{l}{Time} & \ac{cof}/Time \\ | |||||
| \midrule | |||||
| \ac{scara} & $-$ & $3$ & $40\%$ & $10$ days & $4 $ \\ | |||||
| End-effector & \ac{scara} & $2$ & $60\%$ & $8$ days & $7.5$ \\ | |||||
| \ac{cdc} & $-$ & $2$ & $30\%$ & $10$ days & $3 $ \\ | |||||
| \bottomrule | |||||
| \end{tabular} | \end{tabular} | ||||
| \end{table} | \end{table} | ||||
| For each feature in the system the dependees, tests and risk/time factor is determined, as explained in \autoref{sec:feature_selection}. | |||||
| These values are combined into \autoref{tab:firstfeatureselection}. | |||||
| The \ac{scara} depends on the end-effector, as explained in the initial design. | The \ac{scara} depends on the end-effector, as explained in the initial design. | ||||
| However, for the \ac{cdc} no dependency was defined even though it has to lift the other two components. | However, for the \ac{cdc} no dependency was defined even though it has to lift the other two components. | ||||
| This is mainly because the torque and range requirements of the \ac{scara} depending on the implementation of the end-effector. | |||||
| This is mainly because the torque and range requirements of the \ac{scara} depend on the implementation of the end-effector. | |||||
| Especially the required range depends on the method of grabbing and releasing tools. | Especially the required range depends on the method of grabbing and releasing tools. | ||||
| For the \ac{cdc} it only changes the mass that has to be lifted. | For the \ac{cdc} it only changes the mass that has to be lifted. | ||||
| Upgrading the motor torque is a minor parametric change and the dependency is therefore insignificant. | |||||
| Upgrading the motor torque is a minor parametric change and the dependency is therefore deemed insignificant. | |||||
| The testing number is directly the number of tests that apply to that feature. | The testing number is directly the number of tests that apply to that feature. | ||||
| The risk and time values are not determined with a specific protocol, but with simple engineering judgement. | |||||
| The estimated risk is high for the end-effector due to the collision dynamics of the operation. | |||||
| The \ac{cof} and time values are not determined with a specific protocol, but with simple engineering judgement. | |||||
| The estimated \ac{cof} is high for the end-effector due to the collision dynamics of the operation. | |||||
| It has to grab something and that is difficult to model. Furthermore, it was not known if that design would work. | It has to grab something and that is difficult to model. Furthermore, it was not known if that design would work. | ||||
| The \ac{scara} has the most moving parts, but no difficult dynamics and has therefore an estimated risk of medium. | |||||
| For the \ac{cdc} there was no real risks and got therefore a low risk indication. | |||||
| The \ac{scara} has the most moving parts, but no difficult dynamics and has therefore an estimated \ac{cof} of medium. | |||||
| For the \ac{cdc} there was no real \ac{cof} and got therefore a low \ac{cof} indication. | |||||
| Based on \autoref{tab:firstfeatureselection}, the end-effector is implemented first. | Based on \autoref{tab:firstfeatureselection}, the end-effector is implemented first. | ||||
| The end-effector has the most dependees, and is therefore chosen above the other two. | The end-effector has the most dependees, and is therefore chosen above the other two. | ||||
| \subsubsection{Evaluation} | \subsubsection{Evaluation} | ||||
| This first step of the detail design phase did go well. | This first step of the detail design phase did go well. | ||||
| Although risk and time assessment is always depend on some engineering judgment, this human factor introduces uncertainty in the assessment. | |||||
| However, an improved approach for the risk assesment can drastically reduce this human factor. | |||||
| Although \ac{cof} and time assessment is always depend on some engineering judgment, this human factor introduces uncertainty in the assessment. | |||||
| However, an improved approach for the \ac{cof} assessment can drastically reduce this human factor. | |||||
| Within a design team a form of planning poker \autocite{grenning_planning_2002} could be a good option. | Within a design team a form of planning poker \autocite{grenning_planning_2002} could be a good option. | ||||
| \subsection{Rapid Development of the End-Effector} | \subsection{Rapid Development of the End-Effector} | ||||
| @@ -52,33 +55,29 @@ Eventhough no progress was made, this attempted implementation did provide valua | |||||
| The first step is to create an initial design of the model. | The first step is to create an initial design of the model. | ||||
| In subsequent steps, detail is added to this model. | In subsequent steps, detail is added to this model. | ||||
| The previous section explained the relative high risk assessment for the end-effector. | |||||
| The previous section explained the relative high \ac{cof} assessment for the end-effector. | |||||
| Which was not exaggerated as the implementation proved to be troublesome. | Which was not exaggerated as the implementation proved to be troublesome. | ||||
| Eventually, the implementation was unfeasible and was therefore cut short. | Eventually, the implementation was unfeasible and was therefore cut short. | ||||
| Nonetheless did it result in useful evaluation points on the design method. | Nonetheless did it result in useful evaluation points on the design method. | ||||
| The process of this step is explained in the following sections. | The process of this step is explained in the following sections. | ||||
| The development starts with an initial design of the system. | |||||
| The next step is to develop that further into a model and prototype. | |||||
| This development did not get past the basic model implementation due to unforeseen difficulties. | |||||
| However, the evaluation gave new useful insight on the design plan. | |||||
| \subsubsection{Initial design} | \subsubsection{Initial design} | ||||
| The end-effector is mounted on the \ac{scara} and acts as an interface. | |||||
| With the end-effector, the \ac{scara} is able to grab and release tools. | |||||
| There are multiple approaches to handle these tools. | |||||
| The end-effector is mounted on the \ac{scara} and acts as an interface for the tooling. | |||||
| The \ac{scara} and end-effector combined are able to grab and release the write and erase tooling. | |||||
| There are multiple approaches to handle the tooling. | |||||
| However, there is a trade-off to be made with the \ac{scara} feature, the heavier the end-effector is, the more force the \ac{scara} must deliver. | However, there is a trade-off to be made with the \ac{scara} feature, the heavier the end-effector is, the more force the \ac{scara} must deliver. | ||||
| And because the goal is to make the \ac{scara} light and quick, this end-effector must be light-weight as well. | And because the goal is to make the \ac{scara} light and quick, this end-effector must be light-weight as well. | ||||
| The best options in this case is a simple spring-loaded clamp. | The best options in this case is a simple spring-loaded clamp. | ||||
| To release the tool, the clamp is forced open, pushing it against the holder. | To release the tool, the clamp is forced open, pushing it against the holder. | ||||
| As the end-effector is connected to the \ac{scara}, the \ac{scara} is responsible for the pushing force. | As the end-effector is connected to the \ac{scara}, the \ac{scara} is responsible for the pushing force. | ||||
| Because the actuation force of the \ac{scara} is used, it removes the need for an additional servo in the end-effector. | Because the actuation force of the \ac{scara} is used, it removes the need for an additional servo in the end-effector. | ||||
| Resulting in a simpler and lighter design. | Resulting in a simpler and lighter design. | ||||
| The initial design of the clamp and the operation is shown in \autoref{fig:gripper}. | The initial design of the clamp and the operation is shown in \autoref{fig:gripper}. | ||||
| Although this design requires the \ac{scara} to deliver more force. | Although this design requires the \ac{scara} to deliver more force. | ||||
| The relative low mass of the end-effector also keeps the moment of inertia small. | The relative low mass of the end-effector also keeps the moment of inertia small. | ||||
| Therefore, the current design reduces the impact on the acceleration of the \ac{scara} to a minimum. | |||||
| Therefore, the current design reduces the impact on the acceleration of the \ac{scara}. | |||||
| \begin{figure*} | \begin{figure*} | ||||
| \centering | \centering | ||||
| \includegraphics[width=151mm]{graphics/end-effector.pdf} | \includegraphics[width=151mm]{graphics/end-effector.pdf} | ||||
| @@ -93,17 +92,18 @@ Eventhough no progress was made, this attempted implementation did provide valua | |||||
| Based on some experience in modelling with collisions, I decided to use the 20-sim 3D mechanics editor. | Based on some experience in modelling with collisions, I decided to use the 20-sim 3D mechanics editor. | ||||
| Unfortunately, there is little tooling available and there are no debugging options if the model does not behave as expected. | Unfortunately, there is little tooling available and there are no debugging options if the model does not behave as expected. | ||||
| The marker kept falling trough the gripper or flew away. | The marker kept falling trough the gripper or flew away. | ||||
| With the small amount of progress made in two days the implementation was not promising. | With the small amount of progress made in two days the implementation was not promising. | ||||
| A system freeze caused the model to corrupt, where the complete configuration of the shapes and their collisions was lost. | A system freeze caused the model to corrupt, where the complete configuration of the shapes and their collisions was lost. | ||||
| Based on the loss of work and the low feasibility of the implementation, the decision was made to remove the end-effector from the design. | Based on the loss of work and the low feasibility of the implementation, the decision was made to remove the end-effector from the design. | ||||
| With the end-effector removed, the \ac{scara} gets a direct connection with the marker. | With the end-effector removed, the \ac{scara} gets a direct connection with the marker. | ||||
| The lifting of the marker from the is included in the \ac{scara} as well. | |||||
| Furthermore, this means that the erasing is no longer possible as a feature. | |||||
| Lifting and lowering the marker is included in the \ac{scara} feature as well. | |||||
| Unfortunately, this means that switching to the eraser is not longer possible as functionality. | |||||
| \subsubsection{Evaluation} | \subsubsection{Evaluation} | ||||
| The lost progress of the model is unfortunate, but the implementation did not go as expected anyway. | The lost progress of the model is unfortunate, but the implementation did not go as expected anyway. | ||||
| It was probably for the best as it forced an evaluation of the design and avoided a tunnel vision while trying to get it to work. | It was probably for the best as it forced an evaluation of the design and avoided a tunnel vision while trying to get it to work. | ||||
| However, it did show the value of the risk/time analysis. | |||||
| However, it did show the value of the \ac{cof} per time analysis. | |||||
| This early failure resulted in changes for other components. | This early failure resulted in changes for other components. | ||||
| But as none of the components were implemented yet, no work was lost. | |||||
| But as none of the other components are implemented yet, no work is lost. | |||||
| @@ -1,8 +1,8 @@ | |||||
| %&tex | %&tex | ||||
| \subsection{Feature Definition} | \subsection{Feature Definition} | ||||
| \label{sec:case_featuredefinition} | \label{sec:case_featuredefinition} | ||||
| This step divides the specifications and initial design into features. | |||||
| These features will be implemented one by one during the development cycle, later in the process. | |||||
| This step divides the requirements and initial design into features. | |||||
| These features are implemented one by one during the development cycle, later in the process. | |||||
| As described in \autoref{sec:featuredefinition}, the functionality of the system is split over four different levels of abstraction. | As described in \autoref{sec:featuredefinition}, the functionality of the system is split over four different levels of abstraction. | ||||
| The result of this split is shown \autoref{fig:robmosys}. | The result of this split is shown \autoref{fig:robmosys}. | ||||
| @@ -19,10 +19,8 @@ | |||||
| The skill and service features become a bit more vague, often features fit in both categories. | The skill and service features become a bit more vague, often features fit in both categories. | ||||
| Sometimes it is difficult to split a skill into a service, as they are already very specific. | Sometimes it is difficult to split a skill into a service, as they are already very specific. | ||||
| Additionally, I attempted to keep the feature tree a bit compact, to keep in scope with this thesis. | Additionally, I attempted to keep the feature tree a bit compact, to keep in scope with this thesis. | ||||
| If each feature would have been split methodically, the amount of features would be immense. | |||||
| The components could also use a similar approach as the functions, resulting in a hierarchical structure of sub-components. | |||||
| Where the \ac{scara} would have motors and electronics as sub-components. | |||||
| The components also use a similar approach as the functions, resulting in a hierarchical structure of sub-components, where the \ac{scara} would have motors and electronics as sub-components. | |||||
| % Even though there is a feature definition that can be used in the next step, there remain a couple of difficulties. | % Even though there is a feature definition that can be used in the next step, there remain a couple of difficulties. | ||||
| % There is still a clear separation between features and components. | % There is still a clear separation between features and components. | ||||
| @@ -1,25 +1,25 @@ | |||||
| %&tex | %&tex | ||||
| \subsection{Initial design} | |||||
| \subsection{Initial Design} | |||||
| \label{sec:initialdesign} | \label{sec:initialdesign} | ||||
| The initial design started with a design space exploration. | The initial design started with a design space exploration. | ||||
| The goal was to collect possible solutions and ideas for the implementation. | The goal was to collect possible solutions and ideas for the implementation. | ||||
| The exploration resulted in a lot of whiteboard writing robots ideas. | The exploration resulted in a lot of whiteboard writing robots ideas. | ||||
| These robots can be sorted in four different configurations | |||||
| These robots are sorted in four different configurations. | |||||
| Each configuration explained in the following sections. | Each configuration explained in the following sections. | ||||
| From the possible configurations, the one that fits the specifications best, is made into an initial design. | |||||
| From the possible configurations, the one that fits the requirements best, is made into an initial design. | |||||
| \subsubsection{Cable-Driven} | \subsubsection{Cable-Driven} | ||||
| The cable-driven robot is suspended with multiple cables. | The cable-driven robot is suspended with multiple cables. | ||||
| The end-effector that contains the marker is moved along a board by changing the length of the cables. | The end-effector that contains the marker is moved along a board by changing the length of the cables. | ||||
| The cable-based positioning systems result in an end-effector with a large range and high velocities. | |||||
| A basic setup can be seen in \autoref{fig:cablebotdrawing}. | |||||
| The cable-based positioning system results in an end-effector with a large range and high velocities. | |||||
| A basic setup is shown in \autoref{fig:cablebotdrawing}. | |||||
| This given setup contains two cables that are motorized. | This given setup contains two cables that are motorized. | ||||
| The big advantage of this system is that it scales well, as the cables can have almost any length. | The big advantage of this system is that it scales well, as the cables can have almost any length. | ||||
| \begin{figure} | \begin{figure} | ||||
| \centering | \centering | ||||
| \includegraphics[width=10.8cm]{graphics/cablebot.pdf} | \includegraphics[width=10.8cm]{graphics/cablebot.pdf} | ||||
| \caption{Planar view of cable driven robot. This setup contains two motorized pulleys in both top corners. From these two cables a mass is suspended at position $x,y$. | |||||
| By changing the length of the cables, the mass can be moved over along the whole board.} | |||||
| \caption{Planar view of cable-driven robot. This setup contains two motorized pulleys in both top corners. From these two cables a mass is suspended at position $x,y$. | |||||
| By changing the length of the cables, the mass is moved over along the whole board.} | |||||
| \label{fig:cablebotdrawing} | \label{fig:cablebotdrawing} | ||||
| \end{figure} | \end{figure} | ||||
| \begin{marginfigure} | \begin{marginfigure} | ||||
| @@ -47,9 +47,8 @@ | |||||
| It normally consists of two sliders, which behave as a prismatic joint. | It normally consists of two sliders, which behave as a prismatic joint. | ||||
| Because each slider covers a single X or Y axis, the control and dynamics of this system are rather simple. | Because each slider covers a single X or Y axis, the control and dynamics of this system are rather simple. | ||||
| The biggest challenge is in the construction of the system, especially when the size of the system is increased. | The biggest challenge is in the construction of the system, especially when the size of the system is increased. | ||||
| The larger system requires bigger length sliders, which are expensive. | |||||
| Another difficulty is the actuation of both horizontal sliders, if these sliders do not operate synchronous, the vertical slider rotates. | |||||
| However, the construction of the slider is not able to rotate, resulting in damage to the system. | |||||
| The larger system requires longer sliders, which are expensive. | |||||
| Another difficulty is the actuation of both horizontal sliders, if these sliders do not operate synchronous the vertical slider would slant and likely jam. | |||||
| \begin{figure} | \begin{figure} | ||||
| \centering | \centering | ||||
| \includegraphics[width=8.74cm]{graphics/plotter.pdf} | \includegraphics[width=8.74cm]{graphics/plotter.pdf} | ||||
| @@ -59,7 +58,7 @@ | |||||
| \subsubsection{Polar-coordinate robot} | \subsubsection{Polar-coordinate robot} | ||||
| This robot is a combination of a prismatic and a revolute joint. | This robot is a combination of a prismatic and a revolute joint. | ||||
| Where the revolute joint can rotate the prismatic joint as seen in \autoref{fig:polar}. | |||||
| Where the revolute joint can rotate the prismatic joint as shown in \autoref{fig:polar}. | |||||
| With this it can reach any point within a radius from the rotational joint. | With this it can reach any point within a radius from the rotational joint. | ||||
| This is a little more complex design than the Cartesian robot. | This is a little more complex design than the Cartesian robot. | ||||
| \begin{figure} | \begin{figure} | ||||
| @@ -82,28 +81,47 @@ | |||||
| Therefore, the complete radius around the revolute joint cannot have any obstacles. | Therefore, the complete radius around the revolute joint cannot have any obstacles. | ||||
| \autoref{fig:polar_protrude} gives an impression of the required area. | \autoref{fig:polar_protrude} gives an impression of the required area. | ||||
| Even with this area, the arm cannot reach the complete board. | Even with this area, the arm cannot reach the complete board. | ||||
| This makes required space of the setup very inefficient. | |||||
| This makes the required space of the setup very inefficient. | |||||
| Another disadvantage is that a long arm increases the moment of inertia and the gravitational torque on the joint quadratically. | Another disadvantage is that a long arm increases the moment of inertia and the gravitational torque on the joint quadratically. | ||||
| Furthermore, the long arm introduces stiffness problems and it amplifies any inaccuracy in the joint. | Furthermore, the long arm introduces stiffness problems and it amplifies any inaccuracy in the joint. | ||||
| \subsubsection{SCARA} | \subsubsection{SCARA} | ||||
| The SCARA robot is a configuration with two linkages that are connected via rotational joints. | |||||
| It can be compared to a human arm drawing on a table as seen in \autoref{fig:scara}. | |||||
| Similar to the Polar robot it can reach all points within a radius from the base of the robot. | |||||
| But the SCARA does not protrude like the polar arm (\autoref{fig:polar_protrude}). | |||||
| The \ac{scara} robot is a configuration with two linkages that are connected via rotational joints. | |||||
| It compares to a human arm drawing on a table as shown in \autoref{fig:scara}. | |||||
| Similar to the polar robot it can reach all points within a radius from the base of the robot. | |||||
| But the \ac{scara} does not protrude like the polar arm (\autoref{fig:polar_protrude}). | |||||
| Depending on the configuration of the arm, it is possible to keep the arm completely within the area of operation. | Depending on the configuration of the arm, it is possible to keep the arm completely within the area of operation. | ||||
| A downside is that the mass of the additional joint and extra arm length increase the moment of inertia and gravitational torque similar to the polar robot. | A downside is that the mass of the additional joint and extra arm length increase the moment of inertia and gravitational torque similar to the polar robot. | ||||
| This makes the SCARA configuration convenient for small working areas as that keeps the forces managable. | |||||
| Additionally, as the arms of the SCARA have a fixed length, it is possible to create a counter balance. | |||||
| This makes the \ac{scara} configuration convenient for small working areas as that keeps the forces manageable. | |||||
| Additionally, as the arms of the \ac{scara} have a fixed length, it is possible to create a counter balance. | |||||
| This can be used to remove any gravitational torque from the system. It would however increase the moment of inertia even further. | This can be used to remove any gravitational torque from the system. It would however increase the moment of inertia even further. | ||||
| For current specifications, the working area is too large for any practical application of the SCARA. | |||||
| For current requirements, the working area is too large for any practical application of the \ac{scara}. | |||||
| \begin{figure} | \begin{figure} | ||||
| \centering | \centering | ||||
| \includegraphics[width=8.74cm]{graphics/scara.pdf} | \includegraphics[width=8.74cm]{graphics/scara.pdf} | ||||
| \caption{Schematic example of a SCARA, consisting of two rotation linkages. This setup can be compared to a human arm, where the gray base above the whiteboard represents the shoulder and the connections between both linkages the elbow.} | |||||
| \caption{Schematic example of a \ac{scara}, consisting of two rotation linkages. This setup can be compared to a human arm, where the gray base above the whiteboard represents the shoulder and the connections between both linkages the elbow.} | |||||
| \label{fig:scara} | \label{fig:scara} | ||||
| \end{figure} | \end{figure} | ||||
| \subsubsection{Combining} | |||||
| A fifth option is to combine two of the discussed configurations, wherein the best properties of two configurations are used. | |||||
| The most interesting combination is the cable bot together with the \ac{scara}. | |||||
| In this combination, the \ac{scara} is small, only able to write a couple of characters. | |||||
| The smaller size of the \ac{scara} makes it quick. | |||||
| To write full sentences the \ac{scara} is placed on a carriage that is suspended by the cable bot. | |||||
| An example of this \ac{cdc} with the mounted \ac{scara} is shown in \autoref{fig:combined}. | |||||
| \begin{figure}[h] | |||||
| \centering | |||||
| \includegraphics[width=10.8cm]{graphics/combined.pdf} | |||||
| \caption{Combined system that integrates the cable bot together with the \ac{scara}. The \ac{scara} in red is mounted on the \ac{cdc}.} | |||||
| \label{fig:combined} | |||||
| \end{figure} | |||||
| This increases the complexity of the dynamics of the system, by having four degrees of freedom. | |||||
| Furthermore, the movement of the \ac{scara} also causes movement of the \ac{cdc}. | |||||
| Shrinking the \ac{scara} also decreases the challenges regarding construction, as long and unstable arms are out of the picture. | |||||
| \subsubsection{Choice of system} | \subsubsection{Choice of system} | ||||
| The previous sections have shown four different configurations. | The previous sections have shown four different configurations. | ||||
| These configurations are compared in \autoref{tab:initial_design}. | These configurations are compared in \autoref{tab:initial_design}. | ||||
| @@ -111,8 +129,8 @@ | |||||
| \begin{description} | \begin{description} | ||||
| \item{\emph{Range}}\\ | \item{\emph{Range}}\\ | ||||
| The range scores the system on the practical dimension of the system, larger is better. | The range scores the system on the practical dimension of the system, larger is better. | ||||
| The cable and cartesian configuration scale very well, the cables or slider rails can be made longer without real difficulty. | |||||
| The SCARA or polar configuration run into problems with the arm lengths, as forces scale quadratically with their length. | |||||
| The cable, cartesian, and combined configuration scale very well, the cables or slider rails can be made longer without real difficulty. | |||||
| The \ac{scara} or polar configuration run into problems with the arm lengths, as forces scale quadratically with their length. | |||||
| \item{\emph{Speed}}\\ | \item{\emph{Speed}}\\ | ||||
| Except for the cable bot, all configurations score sufficient on speed. | Except for the cable bot, all configurations score sufficient on speed. | ||||
| The cable bot can reach high velocities, but the acceleration is limited, depending on the configuration, to the gravitational acceleration. | The cable bot can reach high velocities, but the acceleration is limited, depending on the configuration, to the gravitational acceleration. | ||||
| @@ -121,73 +139,70 @@ | |||||
| All systems require DC or stepper motors, but the cartesian setup also requires linear sliders which are expensive, especially for longer distances. | All systems require DC or stepper motors, but the cartesian setup also requires linear sliders which are expensive, especially for longer distances. | ||||
| \item{\emph{Obstruction}}\\ | \item{\emph{Obstruction}}\\ | ||||
| The obstruction score depends on the capability of the system to move away from the text on the board, such that the system does not obstruct the written tweet. | The obstruction score depends on the capability of the system to move away from the text on the board, such that the system does not obstruct the written tweet. | ||||
| All systems except for the cable bot can move themself outside of the working area. | |||||
| It is possible that the cables of the cable bot obstruct the view. | |||||
| All systems except for the cable and combined configuration can move themself outside of the working area. | |||||
| It is possible that the wires of the cable or combined configuration obstruct the view. | |||||
| However, the wires are expected to be thin enough to not block any text. | However, the wires are expected to be thin enough to not block any text. | ||||
| \item{\emph{Scalability}}\\ | \item{\emph{Scalability}}\\ | ||||
| For the scalability, only the cable bot scores high. | |||||
| For the scalability, the cable bot and the combined system score high. | |||||
| The cables make it possible to easily change the operating range of the system, only requiring reconfiguration. | The cables make it possible to easily change the operating range of the system, only requiring reconfiguration. | ||||
| The cartesian system scales poor because the length of the sliders is fixed, and longer sliders are expensive. | The cartesian system scales poor because the length of the sliders is fixed, and longer sliders are expensive. | ||||
| For the Polar system and SCARA, the forces on the joints scale quadratically with the length of the arms. | |||||
| However, the SCARA can be build with counter balance making it scale less worse than the Polar system. | |||||
| For the polar system and \ac{scara}, the forces on the joints scale quadratically with the length of the arms. | |||||
| However, the \ac{scara} can be build with counter balance making it scale less worse than the Polar system. | |||||
| \item{\emph{Effective Area}}\\ | \item{\emph{Effective Area}}\\ | ||||
| With the effective area, the system is scored on the area it requires to operated versus the writable area. | With the effective area, the system is scored on the area it requires to operated versus the writable area. | ||||
| The polar configuration has a low score due to the protruding arm. | |||||
| \item{\emph{Interesting Dynamics}}\\ | \item{\emph{Interesting Dynamics}}\\ | ||||
| The last metric, scores the system on the complexity of the dynamics. | The last metric, scores the system on the complexity of the dynamics. | ||||
| This is a more subjective metric, but also a very important one. | This is a more subjective metric, but also a very important one. | ||||
| In the problem description, the complexity of the dynamics was determined as one of the core requirements. | In the problem description, the complexity of the dynamics was determined as one of the core requirements. | ||||
| The cartesian configuration is trivial, both sliders operate completely separate from each other and the position coordinates can be mapped one to one with the sliders. | The cartesian configuration is trivial, both sliders operate completely separate from each other and the position coordinates can be mapped one to one with the sliders. | ||||
| For the other configuration, some inverse kinematics are required to get from desired position to the control angles of the system. | |||||
| The combined configuration excels for this metric, as it has 4 degrees of freedom and the \ac{scara} movement can cause the carriage to swing. | |||||
| \end{description} | \end{description} | ||||
| \begin{table}[] | |||||
| \caption{Table with comparison of the four proposed configurations and a combined configuration of the cable bot and the SCARA.} | |||||
| \begin{table}[h] | |||||
| \caption{Table with comparison of the four proposed configurations and a combined configuration of the cable bot and the \ac{scara}.} | |||||
| \label{tab:initial_design} | \label{tab:initial_design} | ||||
| \begin{tabular}{l|l|l|l|l|l|} | |||||
| \cline{2-6} | |||||
| & Cable bot & Cartesian & Polar & SCARA & Combined \\ \hline | |||||
| \multicolumn{1}{|l|}{Range} & + + & + & - - & - & + + \\ \hline | |||||
| \multicolumn{1}{|l|}{Speed} & - & + & + & + + & + \\ \hline | |||||
| \multicolumn{1}{|l|}{Cost} & + + & - - & + & + & + \\ \hline | |||||
| \multicolumn{1}{|l|}{Obstruction} & - & + & + & + & - \\ \hline | |||||
| \multicolumn{1}{|l|}{Scalability} & + + & - & - - & - & + \\ \hline | |||||
| \multicolumn{1}{|l|}{\begin{tabular}[c]{@{}l@{}}Effective\\ area\end{tabular}} & + + & + & - - & + & + + \\ \hline | |||||
| \multicolumn{1}{|l|}{\begin{tabular}[c]{@{}l@{}}Interesting\\ dynamics\end{tabular}} & - & - - & - & + & + + \\ \hline | |||||
| \rowcolors{2}{lightgray}{white!100} | |||||
| \begin{tabular}{l c c c c c } | |||||
| \toprule | |||||
| & Cable bot & Cartesian & Polar & \ac{scara} & Combined \\ | |||||
| \midrule | |||||
| \multicolumn{1}{l}{Range} & $+ +$ & $+ $ & $- -$ & $- $ & $+ +$ \\ | |||||
| \multicolumn{1}{l}{Speed} & $- $ & $+ $ & $+ $ & $+ +$ & $+ $ \\ | |||||
| \multicolumn{1}{l}{Cost} & $+ +$ & $- -$ & $+ $ & $+ $ & $+ $ \\ | |||||
| \multicolumn{1}{l}{Obstruction} & $- $ & $+ $ & $+ $ & $+ $ & $- $ \\ | |||||
| \multicolumn{1}{l}{Scalability} & $+ +$ & $- $ & $- -$ & $- $ & $+ $ \\ | |||||
| \multicolumn{1}{l}{\begin{tabular}[c]{@{}l@{}}Effective\\ area\end{tabular}} & $+ +$ & $+ $ & $- -$ & $+ $ & $+ +$ \\ | |||||
| \multicolumn{1}{l}{\begin{tabular}[c]{@{}l@{}}Interesting\\ dynamics\end{tabular}} & $- $ & $- -$ & $- $ & $+ $ & $+ +$ \\ | |||||
| \midrule | |||||
| \hiderowcolors | |||||
| \multicolumn{1}{l}{Total} & \multicolumn{1}{r}{$ +5$} & \multicolumn{1}{r}{$ -1$} & \multicolumn{1}{r}{$ -4$} & \multicolumn{1}{r}{$ +4$} & \multicolumn{1}{r}{$ +8$} \\ | |||||
| \bottomrule | |||||
| \end{tabular} | \end{tabular} | ||||
| \end{table} | \end{table} | ||||
| Based on this comparison, I disqualified the cartesian and polar system. | |||||
| The cartesian has no interesting dynamics and is expensive to build at the current scale. | |||||
| The polar system is just not feasible, the arm length required to cover the writing area results forces that are too large. | |||||
| Making a rotational joint that delivers the torque and velocity required for such an arm, is just out of the scope of this case study. | |||||
| The two remaining configurations come with serious downsides as well. | |||||
| The cable bot is slow, and the arm length for the SCARA is also likely to cause problems. | |||||
| However, by combining both, it is possible to get a system that fits the requirements very well. | |||||
| By building a small SCARA that is the suspended by the cable bot, it combines the best of both worlds. | |||||
| The small SCARA is quick and accurate, while the cable bot gives the system an enormous range. | |||||
| Resulting in a system that scores high on all criteria except obstruction. | |||||
| The grading for the combined system is shown in the most right column in \autoref{tab:initial_design}. | |||||
| \begin{figure} | |||||
| \centering | |||||
| \includegraphics[width=10.8cm]{graphics/combined.pdf} | |||||
| \caption{Combined system that integrates the cable bot together with the SCARA. The SCARA in red is mounted on the carriage. This carriage is then suspended by cables.} | |||||
| \label{fig:combined} | |||||
| \end{figure} | |||||
| In the combined system, the SCARA will only be large enough to write a small number of characters at the time. | |||||
| This will alternate with the cable bot moving the base of the SCARA to the next position, so that it can write the next set of characters on the whiteboard. | |||||
| \autoref{fig:combined} shows a simple view of the system. | |||||
| The comparison in \autoref{tab:initial_design} shows that the combined configuration as preferred. | |||||
| Which is not surprising as it combines the advantages of both the cable bot and \ac{scara}. | |||||
| Although those systems have a good score of their own, they have disadvantages. | |||||
| The cable bot has low acceleration and no challenging dynamics. | |||||
| The main difficulty for the \ac{scara} is being able to build it large enough. | |||||
| The combined configurations, complement each other. | |||||
| The range of the \ac{cdc} allows for a small \ac{scara}. | |||||
| The small size of the \ac{scara} makes it quick. | |||||
| This compensates for the low acceleration of the cable bot and removes the need for a \ac{scara} with long arms. | |||||
| Therefore, the choice of configuration is the combined system of the \ac{scara} and \ac{cdc}. | |||||
| \subsubsection{Evaluation} | \subsubsection{Evaluation} | ||||
| This was the first step that felt really productive in the design process. | This was the first step that felt really productive in the design process. | ||||
| It created a enormous amount of information and insight of the design. | It created a enormous amount of information and insight of the design. | ||||
| In hind sight, it would have been useful to have this information during the specifications step. | |||||
| However, as the specifications step are mainly on the "what" to solve, and specifically not on "how" to solve it, this information was avoided on purpose during the specifications step. | |||||
| In hind sight, it would have been useful to have this information during the requirements step. | |||||
| However, as the requirements step are mainly on the "what" to solve, and specifically not on "how" to solve it, this information was avoided on purpose during the requirements step. | |||||
| This step did result in an initial design that can be used in the next steps. | |||||
| This step did result in an initial design that is used in the next steps. | |||||
| However, I noticed that none of the previous steps have a clear start or end. | However, I noticed that none of the previous steps have a clear start or end. | ||||
| For the problem description and the specification steps the question is when all required information is collected. | |||||
| For the problem description and the requirements steps the question is when all required information is collected. | |||||
| In the initial design it is always possible continue researching design options to come up with an even better design. | In the initial design it is always possible continue researching design options to come up with an even better design. | ||||
| Especially with complex system, it is unrealistic to create complete specifications before making design decissions. | |||||
| Especially with complex system, it is unrealistic to create complete requirements before making design decisions. | |||||
| Resulting in the question: at what point do we have enough information and must we move to the next design step? | Resulting in the question: at what point do we have enough information and must we move to the next design step? | ||||
| This is also known as the \emph{requirement versus design paradox} \autocite{fitzgerald_collaborative_2014}. | This is also known as the \emph{requirement versus design paradox} \autocite{fitzgerald_collaborative_2014}. | ||||
| @@ -2,7 +2,8 @@ | |||||
| \subsection{Problem Description} | \subsection{Problem Description} | ||||
| The problem description describes the need for a solution or system. | The problem description describes the need for a solution or system. | ||||
| In this case, I want a robot that can write a tweet on a whiteboard. | In this case, I want a robot that can write a tweet on a whiteboard. | ||||
| A specific requirement is that the system must be complex enough, such that it uses sufficient aspects of the design method to be able to evaluate that design method. | |||||
| A specific requirement is that the system must be complex enough, such that the specific aspects of the design method are used. | |||||
| These specific aspects are the ones that deal with complexity and are subject to the evaluation. | |||||
| The system must meet the following requirements: | The system must meet the following requirements: | ||||
| \begin{itemize} | \begin{itemize} | ||||
| \item Write a twitter message, or tweet, on a whiteboard. | \item Write a twitter message, or tweet, on a whiteboard. | ||||
| @@ -18,5 +19,5 @@ As most of the work for the problem description was already done by choosing the | |||||
| However, it was not expected to be this minimal. | However, it was not expected to be this minimal. | ||||
| Perhaps the most serious disadvantage is the absence of stakeholders. | Perhaps the most serious disadvantage is the absence of stakeholders. | ||||
| Normally, a good problem definition focusses on getting the stakeholders on the same line \autocite{shafaat_exploring_2015}. | Normally, a good problem definition focusses on getting the stakeholders on the same line \autocite{shafaat_exploring_2015}. | ||||
| However, this case study does only have one stakeholder, the author, defeating the purpose getting everyone on the same line. | |||||
| However, this case study does only have one stakeholder, the author, defeating the purpose of getting everyone on the same line. | |||||
| Creating a more elaborate problem description would not improve the evaluation of the design process, but it does cost valuable time. | Creating a more elaborate problem description would not improve the evaluation of the design process, but it does cost valuable time. | ||||
| @@ -1,49 +1,62 @@ | |||||
| %&tex | %&tex | ||||
| To validate the dynamical and mechanical models, I will build a prototype of the current design. | |||||
| To validate the dynamical and mechanical models, I have build a prototype of the current design. | |||||
| For the mechanical design, the CAD model is used to print the custom parts. | For the mechanical design, the CAD model is used to print the custom parts. | ||||
| Other components, such as steppers, microcontroller, screws and miscellaneous electronics, are ordered. | Other components, such as steppers, microcontroller, screws and miscellaneous electronics, are ordered. | ||||
| To test the dynamics, the steppers and servo have to be actuated. | To test the dynamics, the steppers and servo have to be actuated. | ||||
| To achieve this actuation a control law is written in software. | |||||
| To achieve this actuation a control law has been written in software. | |||||
| \subsection{Mechanical Construction} | \subsection{Mechanical Construction} | ||||
| With the 3D printed parts the SCARA was easy to construct. | |||||
| The diameter of the holes in the parts were printed slightly undersized. | |||||
| This was on purpose, such that the holes can be drilled to the specified size. | |||||
| With the 3D printed parts the \ac{scara} was easy to construct. | |||||
| To connect the bodies on the joints, a bolt with washers is used. | To connect the bodies on the joints, a bolt with washers is used. | ||||
| Although this is clearly not the ideal technique to build joints, it was by far the easiest option. | |||||
| Although this is clearly not the ideal technique to build joints, it sufficed and was by far the easiest option. | |||||
| During assembly I noticed that the bolts of a joint and those that hold the stepper motor in place collided. | During assembly I noticed that the bolts of a joint and those that hold the stepper motor in place collided. | ||||
| This was possible because the bolts were not included in the CAD-model. | This was possible because the bolts were not included in the CAD-model. | ||||
| In hindsight this should have been included. | In hindsight this should have been included. | ||||
| Fortunately there was enough clearance to mount the SCARA slightly further on the axle. | |||||
| Resulting in an operating SCARA without having to redesign the mechanics. | |||||
| Fortunately there was enough clearance to mount the \ac{scara} slightly further on the axle. | |||||
| Resulting in an operating \ac{scara} without having to redesign the mechanics. | |||||
| \subsection{Control of the SCARA} | |||||
| \subsection{Control of the \ac{scara}} | |||||
| Although the focus of the design plan was specifically not the software, it still forms an important part of the development. | |||||
| To run the software, I chose for a STM32 \ac{mcu}, which is a powerful processor with sufficient IO available. | |||||
| The servo motor is directly connected to the IO of the \ac{mcu} while the stepper motor is connected via a stepper driver board\footnote{IC with H-bridges to power the stepper motor.}, see \autoref{fig:signals}. | |||||
| RIOT-OS was chosen as an operating system due to prior experience and available support. | |||||
| To write characters on the board the following tasks are implemented in software: | |||||
| \begin{itemize} | |||||
| \item Software driver for the stepper controller | |||||
| \item Software driver for servo motor | |||||
| \item Inverse Kinematics Function | |||||
| \item Control/Path planning | |||||
| \end{itemize} | |||||
| \begin{marginfigure} | \begin{marginfigure} | ||||
| \centering | \centering | ||||
| \includegraphics[width=5cm]{graphics/electronics.pdf} | \includegraphics[width=5cm]{graphics/electronics.pdf} | ||||
| \caption{Hardware connections. The servo motor connected to a pwm-output. The stepper controller connected via UART and IO-pins. The stepper controller provides the correct current for the stepper motors.} | |||||
| \caption{Hardware connections. The servo motor connected to an IO-output. The stepper controller connected via UART and IO-pins. The stepper controller provides the correct current for the stepper motors.} | |||||
| \label{fig:signals} | \label{fig:signals} | ||||
| \end{marginfigure} | \end{marginfigure} | ||||
| Although the focus of the design plan was specifically not the software, it still forms a important part of the development. | |||||
| To run the hardware, I chose for for a STM32 \ac{mcu}. This is a powerfull processor with sufficient IO available. | |||||
| The servo motor is directly connected to the IO of the \ac{mcu} while the stepper motor is connected via a stepper controller board, see \autoref{fig:signals}. | |||||
| RIOT-OS was chosen as an operating system due to prior experience and available support. | |||||
| To be able to write characters on the board the following tasks have to be implemented in software: | |||||
| \begin{itemize} | |||||
| \item Driver for the stepper controller | |||||
| \item Driver for servo motor | |||||
| \item Inverse Kinematics | |||||
| \item Control/Path planning | |||||
| \end{itemize} | |||||
| The stepper controller chip can be configured over UART and has two simple IO pins for step and direction signal. | |||||
| To simplify the control, the software driver configures the stepper controller and includes functions to move the stepper motor to a certain angle. | |||||
| Meaning that the feedforward control of the steppers is handled by the software driver class. | |||||
| The angle of the servo motor is controlled by the pulse length of a square wave. | |||||
| This signal is generated in the IO peripherals as a PWM signal. | |||||
| The software driver has a toggle function that changes the pulse length. Making the maker lift from or lower on the board. | |||||
| The code for the servo driver was already available as a module in RIOT-OS. | |||||
| The task of the software driver is to handle the communication to the hardware stepper drivers. | |||||
| At initialisation of the software, the hardware stepper driver is configured over hardware. | |||||
| When a new set-point is set in the software driver, the time between each step is calculated. | |||||
| The software driver creates a time-out event with a callback that sends a step signal to the hardware stepper driver. | |||||
| The use of time-out events make it possible to run multiple stepper drivers in software asynchronous. | |||||
| The set-point for the software driver is calculated by interpolating the path between the current position and the desired position. | |||||
| This interpolation is necessary to draw a straight line between two points with the \ac{scara}, as a linear movement of the angle would create curved paths. | |||||
| Because the software stepper driver counts the steps send to the stepper motor, which gives the current position of the \ac{scara}. | |||||
| The calculation and update of the next set-point is done with a fixed interval. | |||||
| To calculate the angles that are needed for the set-points a lookup table is used, which replaces expensive trigonometric calculation needed for inverse kinematics. | |||||
| An advantage of this approach is that it can cope with missed or late event callbacks for the software stepper driver. | |||||
| The path planning is responsible for the desired position. | |||||
| This can be a rectangle or a set of three characters. | |||||
| The font for the characters is made by \textcite{hudson_asteroids_2015} and consists of a header file with an array of coordinates for each character. | |||||
| When the current position of the \ac{scara} is within range of the desired position, the desired position is updated with the next coordinate of the character. | |||||
| There are two special elements in the array of coordinates: up and down. | |||||
| These specify whether the marker should be lifted from or lowered on the board. | |||||
| In the transition period of lifting or lowering, there is a short builtin wait for the stepper movement, to avoid unwanted drawing. | |||||
| When the marker is lifted, the interpolation is disabled and the stepper drivers move directly to the position where the next line starts. | |||||
| \begin{marginfigure} | \begin{marginfigure} | ||||
| \centering | \centering | ||||
| \includegraphics[width=2.83cm]{graphics/code_objects.pdf} | \includegraphics[width=2.83cm]{graphics/code_objects.pdf} | ||||
| @@ -51,21 +64,17 @@ The code for the servo driver was already available as a module in RIOT-OS. | |||||
| \label{fig:objects} | \label{fig:objects} | ||||
| \end{marginfigure} | \end{marginfigure} | ||||
| The path planning is able to write three characters with the SCARA. | |||||
| The font for the characters is made by \textcite{hudson_asteroids_2015}. | |||||
| This font consists of a simple coordinates for characters and is written in C. | |||||
| The path planning is updated with a fixed interval. | |||||
| During the update, the set point is linearly interpolated, otherwise the lines are curved between set points. | |||||
| To get the angle set points for the stepper motors, the $x,y$-coordinate set point is converted using the inverse kinematics. | |||||
| The inverse kinematics is analogous to the model that is used in the development cycle of the SCARA. | |||||
| The angle set points are updated for the stepper driver. | |||||
| The data path is shown in \autoref{fig:objects}. | |||||
| For the lifting of the marker the servo on the arm is used. | |||||
| The angle of the servo motor is controlled by the pulse length of a square wave. | |||||
| The software servo driver switches the pulse length when it is ordered to lift or lower the marker. | |||||
| The code for the servo driver is a provide module in RIOT-OS. | |||||
| In summary, the path planning uses the coordinates of the characters to determine the next desired position and the state of the marker. | |||||
| When a line must be drawn the marker is lowered and the path to the end of the line is interpolated. | |||||
| The position from the interpolation is then converted to angles using the look-up table. | |||||
| The angles are pushed to the software stepper driver, which are used to calculate the interval between steps. | |||||
| The data path for drawing a line is shown in \autoref{fig:objects}. | |||||
| The stepper driver has a feedforward controller. | |||||
| The driver limits the acceleration and speed to keep the motor within operating specifications and keeps track of the current status of the stepper motor. | |||||
| When the angle set point is updated, the driver calculates the time interval between each step and sets a hardware timer to that interval. | |||||
| This allows the controller and other drivers to be executed between each step. | |||||
| This approach works only if the code executes fast enough. | |||||
| During the testing, I found that the inverse kinematics calculation was too expensive, even with the integrated floating point unit. | |||||
| As the \ac{mcu} has sufficient flash storage available, the inverse kinematics calculation is replaced by a lookup table. | |||||
| \section{Result} | |||||
| \input{content/case_evaluation_result.tex} | |||||
| @@ -7,18 +7,21 @@ | |||||
| The implementation of the end-effector proved to be unfeasible and was therefore removed from the design. | The implementation of the end-effector proved to be unfeasible and was therefore removed from the design. | ||||
| This means that only two features are left. | This means that only two features are left. | ||||
| \autoref{tab:featurestab2} shows an updated feature comparison. | \autoref{tab:featurestab2} shows an updated feature comparison. | ||||
| Compared with the previous feature selection in \autoref{tab:firstfeatureselection}, the number of tests for the \ac{scara} decreased and the Risk/Time increased. | |||||
| Compared with the previous feature selection in \autoref{tab:firstfeatureselection}, the number of tests for the \ac{scara} decreased and the \ac{cof}/Time increased. | |||||
| This is because \autoref{test_tool_change} relied on both the \ac{scara} and the End-effector which is no longer applicable. | This is because \autoref{test_tool_change} relied on both the \ac{scara} and the End-effector which is no longer applicable. | ||||
| Based on the feature comparison, the next component to implement is the \ac{scara}. | Based on the feature comparison, the next component to implement is the \ac{scara}. | ||||
| \begin{table}[] | |||||
| \begin{table}[h] | |||||
| \caption{Comparison of the two remaining features in the design process. This table is an updated version of \autoref{tab:firstfeatureselection}.} | \caption{Comparison of the two remaining features in the design process. This table is an updated version of \autoref{tab:firstfeatureselection}.} | ||||
| \label{tab:featurestab2} | \label{tab:featurestab2} | ||||
| \begin{tabular}{|l|l|l|l|l|l|} | |||||
| \hline | |||||
| Feature & Dependees & Tests & Risk & Time & Risk/Time \\ \hline | |||||
| \ac{scara} & - & 2 & 50\% & 12 days & 4.2 \\ \hline | |||||
| \ac{cdc} & - & 2 & 30\% & 10 days & 3 \\ \hline | |||||
| \rowcolors{2}{white!100}{lightgray} | |||||
| \begin{tabular}{llrrrr} | |||||
| \toprule | |||||
| Feature & Dependees & Tests & \ac{cof} & \multicolumn{1}{l}{Time} & \ac{cof}/Time \\ | |||||
| \midrule | |||||
| \ac{scara} & $-$ & $2$ & $50\%$ & $12$ days & $4.2$ \\ | |||||
| \ac{cdc} & $-$ & $2$ & $30\%$ & $10$ days & $3$ \\ | |||||
| \bottomrule | |||||
| \end{tabular} | \end{tabular} | ||||
| \end{table} | \end{table} | ||||
| @@ -26,7 +29,8 @@ | |||||
| The feature selection for the second cycle is an updated selection process of the first cycle (\autoref{sec:case_feature_selection_1}). | The feature selection for the second cycle is an updated selection process of the first cycle (\autoref{sec:case_feature_selection_1}). | ||||
| This resulted in a quick and effortless feature selection process, as most of the work was already done. | This resulted in a quick and effortless feature selection process, as most of the work was already done. | ||||
| \subsection{Rapid Development for SCARA} | |||||
| \subsection{Rapid Development for \acs{scara}} | |||||
| \label{sec:rdfs} | |||||
| The goal is to present a functional model of the \ac{scara}. | The goal is to present a functional model of the \ac{scara}. | ||||
| The requirements state that it must be able to write three characters within two seconds. | The requirements state that it must be able to write three characters within two seconds. | ||||
| And to pass \autoref{test1} it must draw a \SI{50}{\milli\meter} by \SI{70}{\milli\meter} rectangle within one second. | And to pass \autoref{test1} it must draw a \SI{50}{\milli\meter} by \SI{70}{\milli\meter} rectangle within one second. | ||||
| @@ -34,33 +38,33 @@ | |||||
| For the lowest detail level of the design, I decided on a kinematics model. | For the lowest detail level of the design, I decided on a kinematics model. | ||||
| The model is very simple as it does not implement any physics. | The model is very simple as it does not implement any physics. | ||||
| However, the model enables me to tinker with the design parameters, such as the lengths of the linkages and joint angles. | However, the model enables me to tinker with the design parameters, such as the lengths of the linkages and joint angles. | ||||
| In the following steps, the level of detail is gradually increased to arrive at a competent model. | |||||
| In the following steps, the level of detail is gradually increased to arrive at an elaborate model. | |||||
| Planning all the different steps in advance is difficult as design decisions still need to be made. | Planning all the different steps in advance is difficult as design decisions still need to be made. | ||||
| Nonetheless, I can describe at least the following levels of detail for the model: | Nonetheless, I can describe at least the following levels of detail for the model: | ||||
| \begin{enumerate} | \begin{enumerate} | ||||
| \item Basic kinematics model, no physics. | |||||
| \item Basic physics model, ideal 2D physics. | |||||
| \item Basic Motor behavior, 2D physics with non-ideal DC-motor. | |||||
| \item Basic control law, path planning. | |||||
| \item \textbf{Basic kinematics model:} forward and inverse kinematics, no physical behavior. | |||||
| \item \textbf{Basic physics model:} ideal 2D physics, ideal joints and rigid bodies with mass and inertia. | |||||
| \item \textbf{Basic motor behavior:} joint actuation with non-ideal DC motor. | |||||
| \item \textbf{Basic control law:} path planning. | |||||
| \end{enumerate} | \end{enumerate} | ||||
| After these steps the optimal order of implementation for the levels of detail becomes vague. | After these steps the optimal order of implementation for the levels of detail becomes vague. | ||||
| However, the following elements are required to make a competent model: | |||||
| However, the following elements are required to make an elaborate model: | |||||
| \begin{itemize} | \begin{itemize} | ||||
| \item Improved motor model | \item Improved motor model | ||||
| \item 3D physics model | \item 3D physics model | ||||
| \end{itemize} | \end{itemize} | ||||
| When the first design decisions made, the succeeding levels of detail for these and other elements are laid out. | |||||
| When the first design decisions are made, the succeeding levels of detail for these and other elements are laid out. | |||||
| \subsubsection{Evaluation} | \subsubsection{Evaluation} | ||||
| The current steps in the rapid development are difficult to perform. | The current steps in the rapid development are difficult to perform. | ||||
| There is, unsurprisingly, lack of a clear vision of the end-product. | |||||
| Which makes an explicit description of every level of detail not realistic. | |||||
| However, it was still possible to describe the initial steps in the level of detail of the design. | |||||
| There is, unsurprisingly, lack of a clear vision of the end-product, which makes an explicit description of every level of detail not realistic. | |||||
| However, it was still possible to describe steps for the initial levels of detail in the design. | |||||
| The remaining elements, that are essential to the design, take shape in a later stage of the development. | The remaining elements, that are essential to the design, take shape in a later stage of the development. | ||||
| Apart from this small deviation, the deliverables of this step are a good start of this development cycle. | Apart from this small deviation, the deliverables of this step are a good start of this development cycle. | ||||
| \subsection{Variable Detail Approach} | |||||
| \subsection{Variable-Detail Approach} | |||||
| The following steps is to increase the level of detail of the model. | The following steps is to increase the level of detail of the model. | ||||
| The initial model together with the set of steps in the detail level is inherited from the previous design step. | The initial model together with the set of steps in the detail level is inherited from the previous design step. | ||||
| To start, I implement the basic model and implement the different levels of detail. | To start, I implement the basic model and implement the different levels of detail. | ||||
| @@ -68,7 +72,7 @@ | |||||
| The decisions make it possible to plan the subsequent levels of detail. | The decisions make it possible to plan the subsequent levels of detail. | ||||
| Implementing these details results in a competent model. | Implementing these details results in a competent model. | ||||
| \subsubsection{Basic Kinematics Model} | |||||
| \subsubsection{Basic Design Implementation} | |||||
| \begin{marginfigure} | \begin{marginfigure} | ||||
| \centering | \centering | ||||
| \includegraphics[width=0.9\linewidth]{graphics/scara_arm_kinematics.pdf} | \includegraphics[width=0.9\linewidth]{graphics/scara_arm_kinematics.pdf} | ||||
| @@ -81,13 +85,13 @@ | |||||
| I tested if the \ac{scara} reaches the required operating area, to satisfy system requirement 14. | I tested if the \ac{scara} reaches the required operating area, to satisfy system requirement 14. | ||||
| The operating area is a couple of centimeters away from the base of the \ac{scara}. | The operating area is a couple of centimeters away from the base of the \ac{scara}. | ||||
| This is to avoid the singularity point that lies at the base of the \ac{scara}. | This is to avoid the singularity point that lies at the base of the \ac{scara}. | ||||
| Resulting in longer arms than strictly necessary but reducing the operating angles of the joints, allowing for simpler construction. | |||||
| Resulting in the arms being longer than strictly necessary but it reduces the operating range for the angles of the joints, allowing for simpler construction. | |||||
| At this point, there are already multiple design decisions made about the position of the operating area and the arm lengths. | At this point, there are already multiple design decisions made about the position of the operating area and the arm lengths. | ||||
| As second detail iteration the basic physics of the model are implemented. | As second detail iteration the basic physics of the model are implemented. | ||||
| The model is in the form of a double pendulum, with two actuated joints. | The model is in the form of a double pendulum, with two actuated joints. | ||||
| The ideal motors in the joints made give the \ac{scara} unlimited acceleration. | |||||
| As the one of the goals is to get an indication on what the required torque for these joints is, the ideal motors are replaced with basic DC-motors. | |||||
| The ideal motors in the joints give the \ac{scara} unlimited acceleration. | |||||
| Replacing the ideal motors with a DC-motor gives an indication about the torque required for operation. | |||||
| Implementing a simple PID-controller allows the \ac{scara} to follow the rectangular path as described in \autoref{test1}. | Implementing a simple PID-controller allows the \ac{scara} to follow the rectangular path as described in \autoref{test1}. | ||||
| The simulation allowed me to determine the minimum requirements of the motors. | The simulation allowed me to determine the minimum requirements of the motors. | ||||
| The motors must be able to deliver at least \SI{0.2}{\newton\meter} of torque and reach an angular velocity of at least \SI{12}{\radian\per\second}. | The motors must be able to deliver at least \SI{0.2}{\newton\meter} of torque and reach an angular velocity of at least \SI{12}{\radian\per\second}. | ||||
| @@ -97,13 +101,14 @@ | |||||
| However, the current configuration is very simple but requires a motor in the joint. | However, the current configuration is very simple but requires a motor in the joint. | ||||
| In \autoref{fig:scaradesign}, this setup is shown as configuration 1. | In \autoref{fig:scaradesign}, this setup is shown as configuration 1. | ||||
| The disadvantage is that a motorized joint is heavy, which has to be accelerated with the rest of the arm. | The disadvantage is that a motorized joint is heavy, which has to be accelerated with the rest of the arm. | ||||
| Other configurations in \autoref{fig:scaradesign} move the motor to a static position. | Other configurations in \autoref{fig:scaradesign} move the motor to a static position. | ||||
| Configuration 2 is a double arm setup, but has quite limited operating range, caused by a singularity region in the system when both arms at the top are in line with each other. | |||||
| Configuration 2 is a double arm setup, but has a limited operating range, caused by a singularity region in the system when both arms at the top are in line with each other. | |||||
| Configuration 3 also has such a singularity, but due to the extended top arm this point of singularity is located outside of the operating range. | Configuration 3 also has such a singularity, but due to the extended top arm this point of singularity is located outside of the operating range. | ||||
| However, this configuration requires one axis with two motorized joints on it. | However, this configuration requires one axis with two motorized joints on it. | ||||
| Even though this is possible, it does increase the complexity of the construction. | Even though this is possible, it does increase the complexity of the construction. | ||||
| By adding an extra linkage, the actuation is split as shown in configuration 4. | By adding an extra linkage, the actuation is split as shown in configuration 4. | ||||
| Configuration 4 is the preferred option for the \ac{scara} | |||||
| Configuration 4 is the preferred option for the \ac{scara}. | |||||
| \begin{figure} | \begin{figure} | ||||
| \centering | \centering | ||||
| \includegraphics[width=0.875\linewidth]{graphics/scara_design.pdf} | \includegraphics[width=0.875\linewidth]{graphics/scara_design.pdf} | ||||
| @@ -111,30 +116,38 @@ | |||||
| \label{fig:scaradesign} | \label{fig:scaradesign} | ||||
| \end{figure} | \end{figure} | ||||
| The actuation of the arm is done with stepper motors, which have a strong advantage over DC-motors with their holding torque. | |||||
| The holding torque removes the need for a feedback controller that compensates for external forces. | |||||
| Allowing the stepper motors to be fully operated with a feedforward controller. | |||||
| However, they are heavier and more expensive but the additional mass is beneficial as increased inertia of the base. | |||||
| The extra inertia reduces the displacement which is caused by the reaction force of the \ac{scara} accelerating. | |||||
| The extra costs are easily compensated as it saves development time due to the simplified control law, and the removed need for extra angle sensors used in feedback control. | |||||
| The current implementation with DC-motors require a feedback controller that compensates for external forces. | |||||
| Such feedback control requires a position sensor for each motor. | |||||
| A simpler solution is to use stepper motors instead. | |||||
| The advantage of a stepper motor is that it is designed to maintain a specific angle. | |||||
| The stepper motors make it possible to use a feedforward controller. | |||||
| This removes the need for a position sensor. | |||||
| The stepper motors are havier than the DC-motors | |||||
| However, as the new configuration places the motors on the \ac{cdc}, the additional mass is benificial. | |||||
| The rapid movement of the \ac{scara} creates a reaction force on the \ac{cdc}. | |||||
| With a heavier \ac{cdc}, the reaction force results in less movement of the \ac{cdc} | |||||
| Unfortunately, the stepper motors are more expensive than simple DC-motors. | |||||
| Nonetheless, the extra costs are easily compensated as it saves development time due to the simplified control law, and the removed need for extra angle sensors used in feedback control. | |||||
| Due to the aborted implementation of the end-effector, the \ac{scara} must also lift the marker of the board. | Due to the aborted implementation of the end-effector, the \ac{scara} must also lift the marker of the board. | ||||
| With the fourth configuration (\autoref{fig:scaradesign}), it is possible to add an extra joint in the linkage. | With the fourth configuration (\autoref{fig:scaradesign}), it is possible to add an extra joint in the linkage. | ||||
| As the marker only needs to be moved a couple of millimeters from the board, a simple hobby servo suffices. | As the marker only needs to be moved a couple of millimeters from the board, a simple hobby servo suffices. | ||||
| \subsubsection{Advanced Detail Design} | |||||
| \subsubsection{Advanced Detail Implementation} | |||||
| The design decisions made in the previous sections, make it possible to plan the next steps of adding detail. | The design decisions made in the previous sections, make it possible to plan the next steps of adding detail. | ||||
| The following steps are an addition to the steps as described in the previous section: | |||||
| The following steps are an addition to the steps as described in \autoref{sec:rdfs}: | |||||
| \begin{enumerate} | \begin{enumerate} | ||||
| \setcounter{enumi}{4} | \setcounter{enumi}{4} | ||||
| \item Stepper motor behavior. | |||||
| \item Updating physics model to 3D physics. | |||||
| \item Marker lifting behavior, servo lifts marker of the board. | |||||
| \item \textbf{Advanced motor behavior:} Stepper motor behavior. | |||||
| \item \textbf{Advanced physics model:} Updating physics model to 3D physics. | |||||
| \item \textbf{Advanced marker lifting:} Marker lifting behavior, servo lifts marker of the board. | |||||
| \end{enumerate} | \end{enumerate} | ||||
| Starting by replacing the DC-motor with a stepper motor model, which is based on a model by \textcite{karadeniz_modelling_2018}. | Starting by replacing the DC-motor with a stepper motor model, which is based on a model by \textcite{karadeniz_modelling_2018}. | ||||
| The controller is updated as well, to accommodate for the behavior of the steppers. | The controller is updated as well, to accommodate for the behavior of the steppers. | ||||
| The next step is to implement a dynamic model of configuration 4 in \autoref{fig:scaradesign}. | The next step is to implement a dynamic model of configuration 4 in \autoref{fig:scaradesign}. | ||||
| The dynamics of the \ac{scara} are based on a serial link structure \autocite{dresscher_modeling_2010}. | |||||
| The dynamics of the \ac{scara} are based on a serial link structure \autocite{stramigioli_geometry_2001}. | |||||
| This serial link structure makes it easy to add and extend joints, bodies and mass points to the system. | This serial link structure makes it easy to add and extend joints, bodies and mass points to the system. | ||||
| Therefore, the last detail, the marker lifting, was added without any difficulty. | Therefore, the last detail, the marker lifting, was added without any difficulty. | ||||
| The servo is connected via a linkage with the marker such that it rotates away from the board. | The servo is connected via a linkage with the marker such that it rotates away from the board. | ||||
| @@ -143,12 +156,15 @@ | |||||
| At this point the development has reached a detailed design together with a dynamic model representing that design. | At this point the development has reached a detailed design together with a dynamic model representing that design. | ||||
| The dynamic model is a useful tool to test and evaluate the system behavior. | The dynamic model is a useful tool to test and evaluate the system behavior. | ||||
| However, it does not include the shapes of the components and can therefore not be used to evaluate clearance or collision between components. | However, it does not include the shapes of the components and can therefore not be used to evaluate clearance or collision between components. | ||||
| By implementing the design using CAD software, it is possible to inspect for collisions. | By implementing the design using CAD software, it is possible to inspect for collisions. | ||||
| Furthermore, this model is than also used to print the custom parts. | |||||
| Furthermore, this model is then also used to print the custom parts. | |||||
| For the mechanical part I used OpenSCAD as CAD software, based on prior experience with the software. | For the mechanical part I used OpenSCAD as CAD software, based on prior experience with the software. | ||||
| With this it was possible to implement all the custom components as well as the \ac{ots}-components. | With this it was possible to implement all the custom components as well as the \ac{ots}-components. | ||||
| Using the inverse kinematics model from the basic design of the \ac{scara}, the angles were directly applied on the components in system. | |||||
| Allowing me to change the configuration of the \ac{scara} and inspect the clearance between each component. | |||||
| To inspect how the components moved, the inverse kinematics model is implemented in the CAD drawing as well. | |||||
| The inverse kinematics made it possible to insert cartesian coordinates, resulting in a dynamic CAD design. | |||||
| Using different orientations of the end-effector allowed me to inspect the clearance between the different components. | |||||
| Following the rectangular path as defined in \autoref{test1} revealed that collisions occurred between parts. | Following the rectangular path as defined in \autoref{test1} revealed that collisions occurred between parts. | ||||
| These collisions were resolved by adding an indentation in one linkage and moving another linkage. | These collisions were resolved by adding an indentation in one linkage and moving another linkage. | ||||
| These changes are shown in \autoref{fig:scad_clearance} | These changes are shown in \autoref{fig:scad_clearance} | ||||
| @@ -157,7 +173,7 @@ | |||||
| \centering | \centering | ||||
| \includegraphics[width=0.8\linewidth]{graphics/scad_scara_circles.png} | \includegraphics[width=0.8\linewidth]{graphics/scad_scara_circles.png} | ||||
| \caption{ | \caption{ | ||||
| CAD of the \ac{scara} configuration, with the end-effector orientated in the lower left corner of the operating area. | |||||
| CAD of the \ac{scara} configuration, with the end-effector oriented in the lower left corner of the operating area. | |||||
| The configuration has been adapted at the two circled points, to resolve collisions in this orientation. | The configuration has been adapted at the two circled points, to resolve collisions in this orientation. | ||||
| An indentation was made to ensure that the arm can make the required angle. | An indentation was made to ensure that the arm can make the required angle. | ||||
| The bottom linkage was located above the joints as depicted in the fourth configuration in \autoref{fig:scaradesign}. | The bottom linkage was located above the joints as depicted in the fourth configuration in \autoref{fig:scaradesign}. | ||||
| @@ -180,19 +196,21 @@ | |||||
| Prior to the design, it was possible to plan 4 levels of detail. | Prior to the design, it was possible to plan 4 levels of detail. | ||||
| After implementing these levels of detail, the design decisions taken made it possible to define additional levels of detail. | After implementing these levels of detail, the design decisions taken made it possible to define additional levels of detail. | ||||
| In total there are seven predefined levels of detail in the design. | |||||
| Meaning that there must also be seven test cycles. | |||||
| However, I noticed that this number was significantly higher. | |||||
| In total there are seven predefined levels of detail in the design, meaning that there must also be seven test cycles. | |||||
| However, I noticed that testing occurred more often than seven times. | |||||
| During the design, running the simulation of the dynamics is easy. | During the design, running the simulation of the dynamics is easy. | ||||
| Resulting in extremely short feedback loops, sometimes even minutes. | Resulting in extremely short feedback loops, sometimes even minutes. | ||||
| For example, changing the arm lengths and evaluate the new behavior. | For example, changing the arm lengths and evaluate the new behavior. | ||||
| Did it improve? Is this as expected? | Did it improve? Is this as expected? | ||||
| Implicitly, the system was very often tested and changed based on test results. | |||||
| \subsection{Conclusion} | |||||
| With the development of the \ac{scara} completed. | |||||
| Following the design plan, the development has to be repeated for the design of the \ac{cdc}. | |||||
| These small intermediate tests were often implicitly created and are not the tests as specified in the test protocol (\label{app:test_specification}). | |||||
| Nonetheless, they provide insight that is valuable for the design process. | |||||
| The interesting question here is whether these small tests should be part of the design process and what it would add to the design process. | |||||
| \subsection{Conclusion of Development} | |||||
| At this point, the development of the \ac{scara} is completed. | |||||
| According to the design plan, the next step for the development is the implementation of the \ac{cdc} feature. | |||||
| However, the evaluation of the development until this point resulted in enough information to draw conclusions about the design plan. | However, the evaluation of the development until this point resulted in enough information to draw conclusions about the design plan. | ||||
| I expect that executing this development a third time is not beneficial to the case study, given the additional effort. | I expect that executing this development a third time is not beneficial to the case study, given the additional effort. | ||||
| Time is better spent on the realization of a prototype and improving the current design method. | |||||
| Time is better spent on the realization of a prototype and evaluating the current design method. | |||||
| Therefore, the next section goes into the construction of the prototype instead of the development of the \ac{cdc}. | Therefore, the next section goes into the construction of the prototype instead of the development of the \ac{cdc}. | ||||
| @@ -1,25 +1,24 @@ | |||||
| %&tex | %&tex | ||||
| \subsection{Specifications} | |||||
| \subsection{Requirements} | |||||
| \label{sec:specifications} | \label{sec:specifications} | ||||
| The next step is to create specifications based on the problem description. | |||||
| The goal is to write and remove a tweet on the whiteboard. | |||||
| The next step is to create requirements based on the problem description. | |||||
| The goal is to write and erase a tweet on the whiteboard. | |||||
| Originally a tweet had a character limit of 140, but this was doubled to 280\autocite{rosen_tweeting_2017}. | Originally a tweet had a character limit of 140, but this was doubled to 280\autocite{rosen_tweeting_2017}. | ||||
| However, the decision is made to keep the limit at 140, as it does not improve the case study but can increase the construction cost. | However, the decision is made to keep the limit at 140, as it does not improve the case study but can increase the construction cost. | ||||
| The text is limited to fifty characters per line, with a total of three lines. | The text is limited to fifty characters per line, with a total of three lines. | ||||
| This results in ten extra characters that are used for word wrapping. | |||||
| For the readability, the distance to a whiteboard in a meeting room is taken as \SI{4}{\meter}. | |||||
| For the readability, the distance to a whiteboard in a meeting room is taken as four meters. | |||||
| The operating speed must allow the tweet to be written within three minutes. | The operating speed must allow the tweet to be written within three minutes. | ||||
| Therefore, the goal is to write one character per second. | Therefore, the goal is to write one character per second. | ||||
| The last requirement is that the dynamics of the system must be sophisticated. | The last requirement is that the dynamics of the system must be sophisticated. | ||||
| Meaning that a solution with complex or non-trivial behavior is preferred. | Meaning that a solution with complex or non-trivial behavior is preferred. | ||||
| Using \ac{ears} to define these specifications gives: | |||||
| Using \ac{ears} to define these requirements gives: | |||||
| \begin{specification} | \begin{specification} | ||||
| \begin{enumerate} | \begin{enumerate} | ||||
| \setlength{\itemsep}{10pt} | \setlength{\itemsep}{10pt} | ||||
| \input{content/input/speclista.tex} | \input{content/input/speclista.tex} | ||||
| \end{enumerate} | \end{enumerate} | ||||
| \end{specification} | \end{specification} | ||||
| Some other specifications that are related to the operation of the system are: | |||||
| Some other requirements that are related to the operation of the system are: | |||||
| \begin{specification} | \begin{specification} | ||||
| \begin{enumerate} | \begin{enumerate} | ||||
| \setcounter{enumi}{8} | \setcounter{enumi}{8} | ||||
| @@ -48,12 +47,12 @@ | |||||
| \end{itemize} | \end{itemize} | ||||
| \end{specification} | \end{specification} | ||||
| \subsubsection{Evaluation} | \subsubsection{Evaluation} | ||||
| The specifications step was performed without problems. | |||||
| Defining the specifications for the problem description did not present any difficulty. | |||||
| Due to the simplicity of the problem description, there were no contradictory requirements, which would complicate the specifications. | |||||
| The requirements step was performed without problems. | |||||
| Defining the requirements for the problem description did not present any difficulty. | |||||
| Due to the simplicity of the problem description, there were no contradictory requirements, which would complicate the requirements step. | |||||
| Furthermore, a single stakeholder takes away any negotiation between stakeholders. | Furthermore, a single stakeholder takes away any negotiation between stakeholders. | ||||
| Where the stakeholders are a combination of engineers on the design team and/or the project client. | Where the stakeholders are a combination of engineers on the design team and/or the project client. | ||||
| Although the specifications itself are not difficult to define, ensuring that they are complete is difficult. | |||||
| Team members and stakeholders help to spot any ambiguity or problems with the validity. | |||||
| Although the requirements itself are not difficult to define, ensuring that they are complete is difficult. | |||||
| Discussion between team members and stakeholders helps to spot any ambiguity or problems with the validity. | |||||
| \ac{ears} was very useful in this case as it gives a strong template to help avoid ambiguity. | \ac{ears} was very useful in this case as it gives a strong template to help avoid ambiguity. | ||||
| @@ -3,21 +3,23 @@ | |||||
| \label{sec:test_protocol} | \label{sec:test_protocol} | ||||
| The last step of the preparation phase is to implement a test protocol. | The last step of the preparation phase is to implement a test protocol. | ||||
| The tests are designed to validate if the system meets its requirements. | The tests are designed to validate if the system meets its requirements. | ||||
| While defining the tests, it became clear that part of the requirements was not sufficiently defined. | While defining the tests, it became clear that part of the requirements was not sufficiently defined. | ||||
| The current requirements apply to the complete system and is not updated for the design choices made in the initial design. | The current requirements apply to the complete system and is not updated for the design choices made in the initial design. | ||||
| If the tests are made based on the current requirements, they can only be performed when the complete design is implemented. | If the tests are made based on the current requirements, they can only be performed when the complete design is implemented. | ||||
| To create tests that apply to specific features or compoments, the requirements had to be updated. | To create tests that apply to specific features or compoments, the requirements had to be updated. | ||||
| This update adds order of operations and additional requirements and is explained in the following two sections. | |||||
| This update adds order of operations and additional requirements, which are explained in the following two sections. | |||||
| The third section explains how the tests are formed based on the up-to-date requirements. | The third section explains how the tests are formed based on the up-to-date requirements. | ||||
| %%% Reviewed tot hier. | |||||
| \subsubsection{Defining the Order of Operation} | \subsubsection{Defining the Order of Operation} | ||||
| There are two modes of operation: writing and erasing. | There are two modes of operation: writing and erasing. | ||||
| Defining the order of operation also distributes the responsibility between the different components. | |||||
| The writing operation consists of performing the following steps: | |||||
| In these situations, the end-effector holds a writing or erasing tool respectively. | |||||
| By defining the order of operation for each mode, specific requirements are assigned to the \ac{scara} and the \ac{cdc}. | |||||
| The current design uses the \ac{scara} to write characters on the board at a static position. | |||||
| When these characters are written the \ac{cdc} moves to the next position: | |||||
| \begin{order}{Writing} | \begin{order}{Writing} | ||||
| \emph{Precondition:} Marker as tool in end-effector. | |||||
| \emph{Precondition:} Board marker as tool in end-effector. | |||||
| \begin{enumerate} | \begin{enumerate} | ||||
| \item Move \ac{cdc} to position of characters. | \item Move \ac{cdc} to position of characters. | ||||
| \item Write three characters with the \ac{scara}. | \item Write three characters with the \ac{scara}. | ||||
| @@ -26,10 +28,11 @@ | |||||
| \end{enumerate} | \end{enumerate} | ||||
| \end{order} | \end{order} | ||||
| The second order of operation is about the erasing. | The second order of operation is about the erasing. | ||||
| Removing text from the board is done by the following steps: | Removing text from the board is done by the following steps: | ||||
| \begin{order}{Erasing} | \begin{order}{Erasing} | ||||
| \emph{Precondition:} Wiper as tool in end-effector. | |||||
| \emph{Precondition:} Board eraser as tool in end-effector. | |||||
| \begin{enumerate} | \begin{enumerate} | ||||
| \item Move \ac{cdc} to position of characters. | \item Move \ac{cdc} to position of characters. | ||||
| \item Clear the area in reach of the \ac{scara}. | \item Clear the area in reach of the \ac{scara}. | ||||
| @@ -37,13 +40,18 @@ | |||||
| \end{enumerate} | \end{enumerate} | ||||
| \end{order} | \end{order} | ||||
| A possible third order of operation can be defined for tool switching. | |||||
| This order of operation depends on how end-effector grabs and releases the tools. | |||||
| A possible third order of operation is tool switching using the end-effector. | |||||
| At this point, the design of the end-effector is not definitive enough to determine an order of operation. | At this point, the design of the end-effector is not definitive enough to determine an order of operation. | ||||
| Additionally, not having an order of operation for the end-effector did not hinder the definition of tests. | Additionally, not having an order of operation for the end-effector did not hinder the definition of tests. | ||||
| \subsubsection{Improving Requirements} | \subsubsection{Improving Requirements} | ||||
| Based on the order of operations, the following requirements were added to the lists in \autoref{sec:specifications}: | |||||
| The defined order of operations add more requirements to the system. | |||||
| Two of the new requirements specify the operational behavior of the \ac{scara} and \ac{cdc}, based on the order specified above. | |||||
| To ensure that the overall system can still write one character per second, the \ac{scara} and \ac{cdc} must both complete their task in three seconds. | |||||
| Therefore, two seconds are assigned to the \ac{scara} to write three characters and the \ac{cdc} gets one second to move the \ac{scara} to the new position. | |||||
| A fifth requirement is added because it was overlooked during the previous steps. | |||||
| The five system requirements are in addition to those in \autoref{sec:specifications}: | |||||
| \begin{specification} | \begin{specification} | ||||
| \begin{enumerate} | \begin{enumerate} | ||||
| \setcounter{enumi}{12} | \setcounter{enumi}{12} | ||||
| @@ -51,10 +59,10 @@ | |||||
| \end{enumerate} | \end{enumerate} | ||||
| \end{specification} | \end{specification} | ||||
| These additional requirements take into account that the current design consists of a \ac{scara}, end-effector and \ac{cdc}. | These additional requirements take into account that the current design consists of a \ac{scara}, end-effector and \ac{cdc}. | ||||
| Where each of these components have a different role and thus a different responsibility in the system. | |||||
| Where each of these components has a different role and thus a different responsibility in the system. | |||||
| \subsubsection{Setting up the tests} | \subsubsection{Setting up the tests} | ||||
| Using the updated requirements, set of test cases is created. | |||||
| Based on the updated requirements, a set of test cases is created. | |||||
| In total there are five small and five large test cases. | In total there are five small and five large test cases. | ||||
| The small tests cover a single compoment or feature and the large tests combine multiple features. | The small tests cover a single compoment or feature and the large tests combine multiple features. | ||||
| Each test specifies for which requirements they apply and include a description that explains the test. | Each test specifies for which requirements they apply and include a description that explains the test. | ||||
| @@ -75,7 +83,7 @@ | |||||
| \subsubsection{Evaluation} | \subsubsection{Evaluation} | ||||
| This step was completed without many difficulties. | This step was completed without many difficulties. | ||||
| Which includes the revision of the earlier requirements and definition of orders of operation. | |||||
| Eventhough this step included an unexpected revision of the earlier requirements and definition of order of operations. | |||||
| Indicating that I overlooked details while defining the requirements in \autoref{sec:specifications}. | Indicating that I overlooked details while defining the requirements in \autoref{sec:specifications}. | ||||
| According to the design plan as described in \autoref{chap:analysis}, I have to go back and review those requirements. | According to the design plan as described in \autoref{chap:analysis}, I have to go back and review those requirements. | ||||
| Followed by reviewing all steps after the requirements. | Followed by reviewing all steps after the requirements. | ||||
| @@ -1,5 +1,5 @@ | |||||
| \item While writing, the SCARA must 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 three characters at that position. | |||||
| \item When the SCARA finished writing at their current position, the Cable bot 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 Cable bot shall perform this movement within one second. | |||||
| \item When the system changes from writing to wiping or vice-versa, the SCARA and End-effector should change the tool within ten seconds. | |||||
| \item While writing, the \ac{scara} must have a writing speed of at least 1.5 characters per second. | |||||
| \item When the \ac{cdc} is at a static position, the \ac{scara} must be able to write at least three characters at that position. | |||||
| \item When the \ac{scara} finished writing at their current position, the \ac{cdc} shall move the \ac{scara} to it's next position where it can write the subsequent characters. | |||||
| \item When the \ac{scara} has to be moved to a new position, the \ac{cdc} shall perform this movement within one second. | |||||
| \item When the system changes from writing to erasing or vice-versa, the \ac{scara} and End-effector should change the tool within ten seconds. | |||||
| @@ -5,7 +5,7 @@ | |||||
| \tcbline | \tcbline | ||||
| \begin{description} | \begin{description} | ||||
| \item[Features:] SCARA | \item[Features:] SCARA | ||||
| \item[Specifications:] 3, 7, 11, 13, 14 | |||||
| \item[Requirements:] 3, 7, 11, 13, 14 | |||||
| \item[Results:] The test passes when: | \item[Results:] The test passes when: | ||||
| \begin{itemize} | \begin{itemize} | ||||
| \item Rectangle height is at least \SI{50}{\milli\meter} | \item Rectangle height is at least \SI{50}{\milli\meter} | ||||
| @@ -7,7 +7,7 @@ | |||||
| \tcbline | \tcbline | ||||
| \begin{description} | \begin{description} | ||||
| \item[Features:] SCARA, Cable Bot | \item[Features:] SCARA, Cable Bot | ||||
| \item[Specifications:] 3, 4, 9, 11, (12) | |||||
| \item[Requirements:] 3, 4, 9, 11, (12) | |||||
| \item[Results:] | \item[Results:] | ||||
| The test passes when: | The test passes when: | ||||
| \begin{itemize} | \begin{itemize} | ||||
| @@ -30,7 +30,7 @@ draw=black!50, thick, font=\footnotesize, fill=white}, | |||||
| \node (ss)[below=1 of tp] {Feature Selection}; | \node (ss)[below=1 of tp] {Feature Selection}; | ||||
| \node (a1)[below=0.8 of ss,draw=none, fill=none] {}; | \node (a1)[below=0.8 of ss,draw=none, fill=none] {}; | ||||
| \node (rd)[below=0.8 of a1] {Rapid Development}; | \node (rd)[below=0.8 of a1] {Rapid Development}; | ||||
| \node (va)[right=1 of a1] {Variable Approach}; | |||||
| \node (va)[right=1 of a1] {Variable-detail Approach}; | |||||
| \path[->] (pd) edge (sp) | \path[->] (pd) edge (sp) | ||||
| (sp) edge (id) | (sp) edge (id) | ||||
| (id) edge (fs) | (id) edge (fs) | ||||
| @@ -18,7 +18,7 @@ draw=black!50, thick, font=\footnotesize, fill=white}, | |||||
| \node (ss)[below=1 of tp] {Feature Selection}; | \node (ss)[below=1 of tp] {Feature Selection}; | ||||
| \node (a1)[below=0.8 of ss,draw=none, fill=none] {}; | \node (a1)[below=0.8 of ss,draw=none, fill=none] {}; | ||||
| \node (rd)[below=0.8 of a1] {Rapid Development}; | \node (rd)[below=0.8 of a1] {Rapid Development}; | ||||
| \node (va)[right=1 of a1] {Variable Approach}; | |||||
| \node (va)[right=1 of a1] {Variable-detail Approach}; | |||||
| \node (pp)[above=0.8 of pd,draw=none,fill=none] {Preparation Phase}; | \node (pp)[above=0.8 of pd,draw=none,fill=none] {Preparation Phase}; | ||||
| \node (dc)[below=1.6 of va,draw=none,fill=none] {Development Cycle}; | \node (dc)[below=1.6 of va,draw=none,fill=none] {Development Cycle}; | ||||
| \path[->] (pd) edge (sp) | \path[->] (pd) edge (sp) | ||||
| @@ -11,7 +11,7 @@ draw=black!50, thick, font=\footnotesize, fill=white}, | |||||
| \node (mc) {Micro Controller}; | \node (mc) {Micro Controller}; | ||||
| \node (ha)[left=0.5 of mc,draw=none,fill=none]{}; | \node (ha)[left=0.5 of mc,draw=none,fill=none]{}; | ||||
| \node (hb)[right=0.5 of mc,draw=none,fill=none]{}; | \node (hb)[right=0.5 of mc,draw=none,fill=none]{}; | ||||
| \node (sc)[below=1 of hb] {Stepper Controller}; | |||||
| \node (sc)[below=1 of hb] {Hardware Stepper Driver}; | |||||
| \node (sm)[below=1 of sc] {Stepper Motor}; | \node (sm)[below=1 of sc] {Stepper Motor}; | ||||
| \node (sv)[below=1 of ha] {Servo Motor}; | \node (sv)[below=1 of ha] {Servo Motor}; | ||||
| \path[->] (mc) edge (sc) | \path[->] (mc) edge (sc) | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit 100951d197953549c8fa1d3d143b4e714c4525df | |||||
| Subproject commit 5704aebb08b0f65f0d389aa82d29a891c71c2aae | |||||