| @@ -16,7 +16,7 @@ | |||
| \tcbline | |||
| \begin{description} | |||
| \item[Features:] Cable Bot | |||
| \item[Specifications:] 1, 2, 6, 11, (12) | |||
| \item[Requirements:] 1, 2, 6, 11, (12) | |||
| \item[Results:] The test passes when: | |||
| \begin{itemize} | |||
| \item The Cable bot moved along the edge of the text area. | |||
| @@ -33,7 +33,7 @@ | |||
| \tcbline | |||
| \begin{description} | |||
| \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: | |||
| \begin{itemize} | |||
| \item At the start and end of the test, the Cable bot does not move relative to the board. | |||
| @@ -52,7 +52,7 @@ | |||
| \tcbline | |||
| \begin{description} | |||
| \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: | |||
| \begin{itemize} | |||
| \item The SCARA wrote three characters on the whiteboard within \SI{2}{\second}. | |||
| @@ -68,7 +68,7 @@ | |||
| \tcbline | |||
| \begin{description} | |||
| \item[Features:] SCARA, End-Effector | |||
| \item[Specifications:] (5), (12), 17 | |||
| \item[Requirements:] (5), (12), 17 | |||
| \item[Results:] The test passes when: | |||
| \begin{itemize} | |||
| \item A tool is released from the end-effector and stored for later use. | |||
| @@ -90,7 +90,7 @@ | |||
| \tcbline | |||
| \begin{description} | |||
| \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: | |||
| \begin{itemize} | |||
| \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 | |||
| \begin{description} | |||
| \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: | |||
| \begin{itemize} | |||
| \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 | |||
| \begin{description} | |||
| \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: | |||
| \begin{itemize} | |||
| \item The system cleaned the board within \SI{60}{\second}. | |||
| @@ -147,7 +147,7 @@ the quick brown fox jumps over the lazy dog!?@,.- | |||
| \tcbline | |||
| \begin{description} | |||
| \item[Features:] SCARA, End-Effector, Cable Bot | |||
| \item[Specifications:] 8 | |||
| \item[Requirements:] 8 | |||
| \item[Results:] The test passes when: | |||
| \begin{itemize} | |||
| \item The developer can motivate that the system is complex enough to evaluate the case study. | |||
| @@ -1,15 +1,6 @@ | |||
| %&tex | |||
| \chapter{Case Study: 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. | |||
| This chapter focusses on the evaluation of the development during the case study. | |||
| 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. | |||
| 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} | |||
| 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. | |||
| 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}. | |||
| 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}. | |||
| \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} | |||
| \includegraphics[width=96mm]{graphics/prototype.JPG} | |||
| \caption{Assembled prototype of the \ac{scara}.} | |||
| @@ -4,23 +4,23 @@ | |||
| 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}. | |||
| 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}. | |||
| 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. | |||
| 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}). | |||
| The questions regarding the design method itself are discussed in \autoref{chap:reflection}. | |||
| \section{Preparation Phase} | |||
| The preparation phase contains four design steps. | |||
| 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. | |||
| \input{content/case_experiment_problem_description.tex} | |||
| @@ -1,49 +1,52 @@ | |||
| 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. | |||
| 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. | |||
| 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} | |||
| \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} | |||
| \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{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. | |||
| 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. | |||
| 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 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. | |||
| 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. | |||
| The end-effector has the most dependees, and is therefore chosen above the other two. | |||
| \subsubsection{Evaluation} | |||
| 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. | |||
| \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. | |||
| 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. | |||
| Eventually, the implementation was unfeasible and was therefore cut short. | |||
| Nonetheless did it result in useful evaluation points on the design method. | |||
| 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} | |||
| 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. | |||
| 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. | |||
| 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. | |||
| 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. | |||
| 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. | |||
| 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*} | |||
| \centering | |||
| \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. | |||
| 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. | |||
| 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. | |||
| 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. | |||
| 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} | |||
| 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. | |||
| 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. | |||
| 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 | |||
| \subsection{Feature Definition} | |||
| \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. | |||
| 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. | |||
| 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. | |||
| 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. | |||
| % There is still a clear separation between features and components. | |||
| @@ -1,25 +1,25 @@ | |||
| %&tex | |||
| \subsection{Initial design} | |||
| \subsection{Initial Design} | |||
| \label{sec:initialdesign} | |||
| The initial design started with a design space exploration. | |||
| The goal was to collect possible solutions and ideas for the implementation. | |||
| 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. | |||
| 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} | |||
| 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 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. | |||
| The big advantage of this system is that it scales well, as the cables can have almost any length. | |||
| \begin{figure} | |||
| \centering | |||
| \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} | |||
| \end{figure} | |||
| \begin{marginfigure} | |||
| @@ -47,9 +47,8 @@ | |||
| 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. | |||
| 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} | |||
| \centering | |||
| \includegraphics[width=8.74cm]{graphics/plotter.pdf} | |||
| @@ -59,7 +58,7 @@ | |||
| \subsubsection{Polar-coordinate robot} | |||
| 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. | |||
| This is a little more complex design than the Cartesian robot. | |||
| \begin{figure} | |||
| @@ -82,28 +81,47 @@ | |||
| Therefore, the complete radius around the revolute joint cannot have any obstacles. | |||
| \autoref{fig:polar_protrude} gives an impression of the required area. | |||
| 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. | |||
| Furthermore, the long arm introduces stiffness problems and it amplifies any inaccuracy in the joint. | |||
| \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. | |||
| 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. | |||
| 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} | |||
| \centering | |||
| \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} | |||
| \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} | |||
| The previous sections have shown four different configurations. | |||
| These configurations are compared in \autoref{tab:initial_design}. | |||
| @@ -111,8 +129,8 @@ | |||
| \begin{description} | |||
| \item{\emph{Range}}\\ | |||
| 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}}\\ | |||
| 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. | |||
| @@ -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. | |||
| \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. | |||
| 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. | |||
| \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 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}}\\ | |||
| 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}}\\ | |||
| The last metric, scores the system on the complexity of the dynamics. | |||
| 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. | |||
| 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} | |||
| \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} | |||
| \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{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} | |||
| 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. | |||
| 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. | |||
| 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. | |||
| 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? | |||
| This is also known as the \emph{requirement versus design paradox} \autocite{fitzgerald_collaborative_2014}. | |||
| @@ -2,7 +2,8 @@ | |||
| \subsection{Problem Description} | |||
| 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. | |||
| 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: | |||
| \begin{itemize} | |||
| \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. | |||
| 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}. | |||
| 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. | |||
| @@ -1,49 +1,62 @@ | |||
| %&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. | |||
| 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 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} | |||
| 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. | |||
| 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. | |||
| This was possible because the bolts were not included in the CAD-model. | |||
| 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} | |||
| \centering | |||
| \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} | |||
| \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} | |||
| \centering | |||
| \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} | |||
| \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. | |||
| This means that only two features are left. | |||
| \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. | |||
| 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}.} | |||
| \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{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}). | |||
| 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 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. | |||
| @@ -34,33 +38,33 @@ | |||
| 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. | |||
| 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. | |||
| Nonetheless, I can describe at least the following levels of detail for the model: | |||
| \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} | |||
| 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} | |||
| \item Improved motor model | |||
| \item 3D physics model | |||
| \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} | |||
| 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. | |||
| 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 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. | |||
| @@ -68,7 +72,7 @@ | |||
| The decisions make it possible to plan the subsequent levels of detail. | |||
| Implementing these details results in a competent model. | |||
| \subsubsection{Basic Kinematics Model} | |||
| \subsubsection{Basic Design Implementation} | |||
| \begin{marginfigure} | |||
| \centering | |||
| \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. | |||
| 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}. | |||
| 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. | |||
| 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 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}. | |||
| 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}. | |||
| @@ -97,13 +101,14 @@ | |||
| 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. | |||
| 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. | |||
| 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. | |||
| 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. | |||
| 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} | |||
| \centering | |||
| \includegraphics[width=0.875\linewidth]{graphics/scara_design.pdf} | |||
| @@ -111,30 +116,38 @@ | |||
| \label{fig:scaradesign} | |||
| \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. | |||
| 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. | |||
| \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 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} | |||
| \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} | |||
| 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 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. | |||
| 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. | |||
| @@ -143,12 +156,15 @@ | |||
| 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. | |||
| 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. | |||
| 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. | |||
| 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. | |||
| These collisions were resolved by adding an indentation in one linkage and moving another linkage. | |||
| These changes are shown in \autoref{fig:scad_clearance} | |||
| @@ -157,7 +173,7 @@ | |||
| \centering | |||
| \includegraphics[width=0.8\linewidth]{graphics/scad_scara_circles.png} | |||
| \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. | |||
| 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}. | |||
| @@ -180,19 +196,21 @@ | |||
| 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. | |||
| 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. | |||
| Resulting in extremely short feedback loops, sometimes even minutes. | |||
| For example, changing the arm lengths and evaluate the new behavior. | |||
| 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. | |||
| 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}. | |||
| @@ -1,25 +1,24 @@ | |||
| %&tex | |||
| \subsection{Specifications} | |||
| \subsection{Requirements} | |||
| \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}. | |||
| 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. | |||
| 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. | |||
| Therefore, the goal is to write one character per second. | |||
| 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. | |||
| Using \ac{ears} to define these specifications gives: | |||
| Using \ac{ears} to define these requirements gives: | |||
| \begin{specification} | |||
| \begin{enumerate} | |||
| \setlength{\itemsep}{10pt} | |||
| \input{content/input/speclista.tex} | |||
| \end{enumerate} | |||
| \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{enumerate} | |||
| \setcounter{enumi}{8} | |||
| @@ -48,12 +47,12 @@ | |||
| \end{itemize} | |||
| \end{specification} | |||
| \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. | |||
| 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. | |||
| @@ -3,21 +3,23 @@ | |||
| \label{sec: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. | |||
| 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. | |||
| 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. | |||
| 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. | |||
| %%% Reviewed tot hier. | |||
| \subsubsection{Defining the Order of Operation} | |||
| 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} | |||
| \emph{Precondition:} Marker as tool in end-effector. | |||
| \emph{Precondition:} Board marker as tool in end-effector. | |||
| \begin{enumerate} | |||
| \item Move \ac{cdc} to position of characters. | |||
| \item Write three characters with the \ac{scara}. | |||
| @@ -26,10 +28,11 @@ | |||
| \end{enumerate} | |||
| \end{order} | |||
| The second order of operation is about the erasing. | |||
| Removing text from the board is done by the following steps: | |||
| \begin{order}{Erasing} | |||
| \emph{Precondition:} Wiper as tool in end-effector. | |||
| \emph{Precondition:} Board eraser as tool in end-effector. | |||
| \begin{enumerate} | |||
| \item Move \ac{cdc} to position of characters. | |||
| \item Clear the area in reach of the \ac{scara}. | |||
| @@ -37,13 +40,18 @@ | |||
| \end{enumerate} | |||
| \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. | |||
| Additionally, not having an order of operation for the end-effector did not hinder the definition of tests. | |||
| \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{enumerate} | |||
| \setcounter{enumi}{12} | |||
| @@ -51,10 +59,10 @@ | |||
| \end{enumerate} | |||
| \end{specification} | |||
| 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} | |||
| 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. | |||
| 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. | |||
| @@ -75,7 +83,7 @@ | |||
| \subsubsection{Evaluation} | |||
| 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}. | |||
| 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. | |||
| @@ -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 | |||
| \begin{description} | |||
| \item[Features:] SCARA | |||
| \item[Specifications:] 3, 7, 11, 13, 14 | |||
| \item[Requirements:] 3, 7, 11, 13, 14 | |||
| \item[Results:] The test passes when: | |||
| \begin{itemize} | |||
| \item Rectangle height is at least \SI{50}{\milli\meter} | |||
| @@ -7,7 +7,7 @@ | |||
| \tcbline | |||
| \begin{description} | |||
| \item[Features:] SCARA, Cable Bot | |||
| \item[Specifications:] 3, 4, 9, 11, (12) | |||
| \item[Requirements:] 3, 4, 9, 11, (12) | |||
| \item[Results:] | |||
| The test passes when: | |||
| \begin{itemize} | |||
| @@ -30,7 +30,7 @@ draw=black!50, thick, font=\footnotesize, fill=white}, | |||
| \node (ss)[below=1 of tp] {Feature Selection}; | |||
| \node (a1)[below=0.8 of ss,draw=none, fill=none] {}; | |||
| \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) | |||
| (sp) edge (id) | |||
| (id) edge (fs) | |||
| @@ -18,7 +18,7 @@ draw=black!50, thick, font=\footnotesize, fill=white}, | |||
| \node (ss)[below=1 of tp] {Feature Selection}; | |||
| \node (a1)[below=0.8 of ss,draw=none, fill=none] {}; | |||
| \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 (dc)[below=1.6 of va,draw=none,fill=none] {Development Cycle}; | |||
| \path[->] (pd) edge (sp) | |||
| @@ -11,7 +11,7 @@ draw=black!50, thick, font=\footnotesize, fill=white}, | |||
| \node (mc) {Micro Controller}; | |||
| \node (ha)[left=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 (sv)[below=1 of ha] {Servo Motor}; | |||
| \path[->] (mc) edge (sc) | |||
| @@ -1 +1 @@ | |||
| Subproject commit 100951d197953549c8fa1d3d143b4e714c4525df | |||
| Subproject commit 5704aebb08b0f65f0d389aa82d29a891c71c2aae | |||