From c663cbcdd825ab74236ce384cab517eab3220fa6 Mon Sep 17 00:00:00 2001 From: Wouter Horlings Date: Mon, 28 Sep 2020 18:03:21 +0200 Subject: [PATCH] Continued writing --- content/casestudy.tex | 272 ++++++++++++++++++++++-- graphics/8564503-fig-1-source-large.png | Bin 0 -> 37236 bytes graphics/robmosys.tex | 38 ++++ report.tex | 51 +---- 4 files changed, 294 insertions(+), 67 deletions(-) create mode 100644 graphics/8564503-fig-1-source-large.png create mode 100644 graphics/robmosys.tex diff --git a/content/casestudy.tex b/content/casestudy.tex index 3610fdc..160b34b 100644 --- a/content/casestudy.tex +++ b/content/casestudy.tex @@ -19,6 +19,7 @@ \autoref{tab:prepost} contains the set of paired questions. One question prior to the step and one question that reflects on that answer after the step. \autoref{tab:questionsmethod} is a list of questions that reflect on the design method itself. + \rrot{Add the additional questions} \begin{table*} \caption{Table with questions to evaluate the steps. With corresponding questions ordered in pre and post step columns.} @@ -111,32 +112,209 @@ \begin{itemize} \item The system shall write a twitter message on the board. \end{itemize} - + + \subsubsection{Evaluation} + The problem definition within this case study does not represent a conventional design process. + Therefore, the problem definition was not evaluated in this case study. \subsection{Specifications} - \rro{Present Specifications for Case} + \label{sec:specifications} + %\rro{Present Specifications for Case} + During this step the goal is to setup a document with concrete specifications of the system. + This resulted in a document that had a short description and a list of specifications. + The description described in short the general operating procedure. + As the writer has to write and update a tweet on the whiteboard, it must be able to write and wipe the board. + Furthermore, it should be able to draw 140 characters of readable text on the board. + For readability, the result has to be readable from 4 meters distance. + + The specifications itself are written with \ac{ears} and are as follows: + \begin{itemize} + \item The Writer shall be able to write at least 50 characters per line. + \item The Writer shall be able to write at least 5 lines of text. + \item The Writer shall display the author, time, content, and number of retweets, favorites and replies in plain-text. + \item The Writer shall plot characters with a size that is readable from 4 meters for a person with good eyesight. + \item The Writer shall plot in a regular used font with corresponding character spacing. + \item When a new tweet is send to the Writer, the Writer, shall wipe the existing tweet and write down a new tweet. + \item If the Writer is not wiping or writing then the Writer shall not obstruct the view of the whiteboard. + \item While writing, the Writer shall have a writing speed of at least 1 character per second. + \item If the Writer is tasked to wipe the tweet, the Writer shall wipe the tweet within 60 seconds + \item When a reset-signal is send to the Writer, the Writer shall recalibrate its position on the board. + \item When a wipe-signal is send to the Writer, the Writer shall wipe the board clean. + \item The Writer shall not damage itself. + \end{itemize} + + Additionally there are some restrictions on construction. + The tooling in limited to some hobby/DIY tools. + As the rapid prototyping facilities at the university are closed due to the Covid-19 pandemic. + \begin{itemize} + \item The Writer shall not exceed a total cost in materials and/or tools of €200. + \item The Writer shall be constructed with simple tools in the following list: + \begin{itemize} + \item Screwdrivers (Hex/Inbus, Torx, Philips, etc) in a, although limited, wide variation of size. + \item Drill + \item Screwtap set + \item Jigsaw + \item Wrenches + \item Soldering iron + \item Various Pliers + \item PLA 3D printer + \end{itemize} + \end{itemize} \subsubsection{Evaluation} - \rro{EARS is a good method} - \rro{Expected walk in the park} - \rro{Was difficult to validate} + While performing this step it became clear that big improvements can be made. + The focus of this case is at the actual hardware implementation. + This caused the steps in the preliminary design to be overlooked. + The lack of a good problem description and not having an experienced design team makes the specifications even more difficult. + An extensive specification document would benefit the design process. + However, it would also be very time consuming and would not fit in the time frame of this thesis. + A conclusion similar to the evaluation of the problem description is that this unique case study is not a good basis for defining specifications. + + Some concrete points from this step are: + \begin{itemize} + \item \ac{ears} is very useful during for the specifications. + \item Being thorough and complete is difficult without a team. + \item Difficult to avoid ambiguity. + \item Difficult to validate the specifications. + \end{itemize} + + The latter point was reason to add additional questions to the evaluation form: + \begin{itemize} + \item What is the method of testing? + \item How did you test/validate the step? + \end{itemize} + \subsection{Initial Design} \rro{Research on Existing Systems} - \rroi{Cable bot} - \rroii{Cable Tensioning, helps avoid oscillations} - \rroi{Cartesian-coordinate robot} - \rroi{SKARA} - \rroi{Polar-coordinate robot} - \rroi{Combination of the different systems} - \rro{Choice of system} - \rroi{Combine Cable bot with SCARA} - \rroii{Combination gives more dimensions of freedom to system} - \rroii{Otherwise it is expected that modeling is too easy} + 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. + These robots can be sorted in four different configurations + Each configuration is worked out and will be discussed here. + + \subsubsection{Cable Driven} + The cable driven robot is suspended with multiple cables. + The end-effector that contains the markers is moved along a board by changing the length of the cables. + The cable based positioning systems result in a end-effector with large range and high velocities. + A possible setup can be seen in \autoref{fig:cablebotdrawing} + \begin{figure} + \centering + \includegraphics[width=0.9\linewidth]{graphics/8564503-fig-1-source-large.png} + \caption{Planar view of cable driven robot. \autocite{aguas_sliding_2018}} + \label{fig:cablebotdrawing} + \end{figure} + Each of the cables can be motorized. + Unfortunately, this does make the system over-constrained. + However, it is possible to only motorize two of the four cables and pretension the other two. + This makes the system exactly constrained. + Furthermore, the lower cables could be completely left out of the design. + This makes the design even simpler but the pretensions could help dampening the system. + + \subsubsection{Cartesian-coordinate robot} + This configuration is a very common design for plotters. + This setup is also known as a gantry robot or linear robot. + 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 very simple. + For the dimensions the length of the sliders define the limits. + + \subsubsection{Polar-coordinate robot} + This robot is a combination of a prismatic and a revolute joint. + Where the rotational joint can rotate the prismatic joint. + With this it can reach any point within a radius from rotational joint. + This is a little more complex design than the Cartesian robot. + + This robot has some disadvantages. + The range of the robot is defined by the length of the prismatic joint. + However, if the prismatic joint is fully retracted, the joint does not get shorter. + In that case the arm still protrudes on the other side. + Therefore the complete radius around the revolute joint cannot have any obstacles. + This makes required space of the setup very inefficient. + Another disadvantage is that a long arm increases the moment of inertia and the gravitational torque quadratic. + Moreover, the longer arm also introduces stiffness problems. + + \subsubsection{SCARA} + The SCARA robot is a configuration with two linkages that are via with rotational joints. + It can be compared to a human arm drawing on a table. + Similar to the Polar robot it can reach all points within a radius from the base of the robot. + However, the arm only protrudes half the radius. + Furthermore, depending on the configuration the of the arm the area where it protrudes can be significantly smaller. + However, the additional joint and extra arm length does add to the moment of inertia and gravitational torque similar to the polar robot. + The SCARA robot is therefore not a robot that is convenient with large working areas. + However, it can be really quick and precise in relative small areas. + + \subsubsection{Choice of system} + Similar to the previous steps. + The type of design has to aid the evaluation of this design method. + Where normally it would be beneficial to keep a design simple. + This implementation has to be complex enough. + + Based on the complexity the cartesian and polar coordinate robots are excluded. + Especially at higher speeds the SCARA becomes dynamically interesting due to the torque of both joints. + However, it is unlikely that the SCARA provides enough features to implement multiple features. + It was therefore decided to combine a small SCARA with a cable driven robot. + Where the SCARA can write a couple of characters at high speed from a fixed position. + The cables can than move the complete SCARA to the next position. + + The combined system introduces sufficient complexity for the design method. + The cable robot and SCARA are both sub-systems of the complete writing robot that can be implemented separately. + \subsubsection{Evaluation} - \rro{Difficult to validate if the system is working} - \rro{Design stays very rough} - \rroi{Not sufficient detail to communicate to other engineers} - \rroi{Lack in experience.} - \rro{Tested: Discussed and reviewed with daily-supervisor} + The initial design step felt like an actual start of the design process. + Looking at multiple solutions resulted in new insight of the systems. + However, this knowledge would have more useful when defining the specifications in \autoref{sec:specifications}. + Furthermore, the specifications were written with the whiteboard writer in mind. + This step was used to select the robot that would evaluate the design method. + Similar to the previous step it became more evident that the complete preliminary design phase was not adequate. + + Validation of the decision was also lacking. + The combining both systems was discussed as the best option. + However, a simple model of the different proposed systems is needed to verify that decision. + And again, there was a lack of an experience to make a good trade-off. + \subsection{Feature Definition} + At this point there are specifications and an initial design for the system. + In the following steps of the design method features will be implemented one by one. + The goal of this step is then to define these features. + During this step it became clear that this approach was not feasible. + Prior to this step the expectation was that this step would produce three features that could be implemented. + These three features were the SCARA, the cable suspended carriage, and the end-effector. + However, independent of the interpretation of this step, the result was not the three expected features. + + Why were those three features expected in the first place? + During the previous steps a useful evaluation was to anticipate for the subsequent steps. + Where one of the following steps is to implement an individual feature. + Therefore, it must be possible to implement the feature. + Separating the initial design into the smallest components that could still be implemented, resulted in the SCARA, carriage and end-effector. + + The problem is that these three components do not describe the complete system. + Some functions of the system (feature) is performed by a combination of the components. + Therefore can the components in the system not be seen as features of the system. + Defining the components as features of the system is not a solution. + The relations between the components and features is still required. + + %As the features describe the behavior of the components, it is not a solution to replace the features with components. + + A solution to organize the relations between features and components was found in RobMoSys\footnote{\url{https://robmosys.eu/approach/}}. + RobMoSys defines a separation of levels in a design. + Where the levels start functional and moves via software to hardware implementation. + Although not all levels of RobMoSys are used, it was very useful to define the features of the system. + The definition can be seen in \autoref{fig:robmosys} + The current definition of features allows to start the implementation with a component. + When the component is finished features can be implemented by following the tree upwards. + \begin{figure*} + \centering + \includegraphics[width=0.8\linewidth]{graphics/robmosys} + \caption{Feature Definition based on the separation of levels introduced by RobMoSys} + \label{fig:robmosys} + \end{figure*} + + + + + %In the design method by \textcite{broenink_rapid_2019} the features describe software components. + %Theoretically, each function in software can be implemented and tested individually. + %However, in a dynamic system, a single component + %The SCARA, carriage and end-effector were selected as the smallest + %Although. + \rro{Goal: define features that can be implemented one by one} \rroi{Additionally, division of system requirements} \rro{Expected: A list of features, with corresponding dependencies} @@ -156,6 +334,13 @@ \rroi{The mission, task, skill etc separation helped a lot in structuring} \rroi{For now, this solution suffices to continue the case study} \rro{Mid-way Conclusion: Preliminary requires large changes} + 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 really strong border between features and components. + And the single level of components makes it impossible to depict the dependencies between components. + Developing larger and complexer systems will have sub-components in the system, introducing even more dependencies. + Therefore, this is not a valid solution for feature definition. + Fortunately the current solution suffices to continue the case study. + \subsection{System Test Specification} \rro{Specify tests for the different specifications} \rro{Made a document with tests} @@ -168,3 +353,50 @@ \rro{Tested by peer-review} \rroi{Found that a review without all the project information is difficult} + \section{Detail Design} + \subsection{Feature Selection: First Iteration} + \subsubsection{Selection} + \rro{Compared: Dependency, tests coverage and risk/time ratio} + \rroi{First Feature/system to implement is End-effector.} + \rroii{Due to dependency and high risk/time} + \subsubsection{Implementation} + \rro{Plan: Model a gripper} + \rroi{Result: Underestimated Complexity} + \rroii{No debugging options for collisions in 3D-ME} + \rroii{Crash with software resulted in corrupted model} + \rro{Conclusion: not feasible in scope of case study} + \subsubsection{Evaluation} + \rro{Result is not as expected} + \rro{Risk/time factor proofed itself useful} + \subsection{Feature Selection: Second Iteration} + \subsubsection{Selection} + \rro{Scara is next in selection} + \rroi{Covers more tests and has higher risk/time factor than carriage} + \subsubsection{Implementation} + \rrot{Should this be here? Maybe in an appendix?} + \rro{Starting with very abstract model} + \rroi{Forward and inverse kinematics} + \rro{Increasing model detail} + \rroi{2D physics model} + \rroi{Simple Motor model} + \rroi{Path planning} + \rroi{Stepper motor} + \rroi{3D physics arm} + \rroi{Marker lift (torque on joint)} + \rroi{Marker lift (Servo)} + \rro{Used 20-sim for dynamic behavior} + \rroi{Could determine physical limits} + \rro{Used openSCAD for geometric design} + \rroi{Could easily avoid collision between parts} + + \rro{Implementation went smooth} + \rroi{Order of increase in detail more in line with Koen den Hollander.} + \rroi{Stepwise detail increase gives loads of feedback} + \rroi{Dynamics model gave feedback on required stepper torque} + \section{Testing} + \rro{Testing was difficult with only one finished component, however} + \rroi{Able to run draw three characters in 2 seconds} + \rroi{Able to draw a square in 1 second} + \section{Result} + \rro{Created a model in 20-sim and openscad} + \rro{Build a physical prototype} diff --git a/graphics/8564503-fig-1-source-large.png b/graphics/8564503-fig-1-source-large.png new file mode 100644 index 0000000000000000000000000000000000000000..87f20dd22caf23ff2ca6360cf812e1aad780bfb6 GIT binary patch literal 37236 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[round,sep]}, rounded corners, semithick] + +\graph [layered layout, level distance=1.5cm, sibling sep=.5em, sibling distance=1.5cm, sweep crossing minimization] { + "Mission" -> "Task" -> "Skill" -> "Function" -> "Component"; + + "Draw a tweet on a board" -> "Writing"; + "Writing" -> { "Write a char at position", "Hold Marker", "Move to position" }; + "Write a char at position" -> { "Move marker on board", "Lift Marker" }; + "Hold Marker" -> "Switch Tools"; + "Move marker on board" -> "SCARA"; + "Lift Marker" -> "End-effector"; + + "Draw a tweet on a board" -> "Wiping"; + "Wiping" -> { "Wipe Area", "Hold Wiper", "Move to position" }; + "Hold Wiper" -> "Switch Tools"; + "Move Wiper on Board" -> SCARA; + "Wipe Area" -> "Move Wiper on Board"; + + "Move to position" -> "Move carriage" -> "Cable driven Carriage"; + "Switch Tools" -> {"End-effector", "SCARA"}; +}; + + % \graph [layered layout] { + % 1 -> 2 -> 3 -> 4; + % }; + + + +\end{tikzpicture} +\end{document} diff --git a/report.tex b/report.tex index 72a08f1..3187cd9 100644 --- a/report.tex +++ b/report.tex @@ -161,57 +161,14 @@ Daaruit komt eingelijk ook het discussiestuk aan het einde waarbij ik best een a \include{content/designcycle} \include{content/casestudy} - \section{Detail Design} - \subsection{Feature Selection: First Iteration} - \subsubsection{Selection} - \rro{Compared: Dependency, tests coverage and risk/time ratio} - \rroi{First Feature/system to implement is End-effector.} - \rroii{Due to dependency and high risk/time} - \subsubsection{Implementation} - \rro{Plan: Model a gripper} - \rroi{Result: Underestimated Complexity} - \rroii{No debugging options for collisions in 3D-ME} - \rroii{Crash with software resulted in corrupted model} - \rro{Conclusion: not feasible in scope of case study} - \subsubsection{Evaluation} - \rro{Result is not as expected} - \rro{Risk/time factor proofed itself useful} - \subsection{Feature Selection: Second Iteration} - \subsubsection{Selection} - \rro{Scara is next in selection} - \rroi{Covers more tests and has higher risk/time factor than carriage} - \subsubsection{Implementation} - \rrot{Should this be here? Maybe in an appendix?} - \rro{Starting with very abstract model} - \rroi{Forward and inverse kinematics} - \rro{Increasing model detail} - \rroi{2D physics model} - \rroi{Simple Motor model} - \rroi{Path planning} - \rroi{Stepper motor} - \rroi{3D physics arm} - \rroi{Marker lift (torque on joint)} - \rroi{Marker lift (Servo)} - \rro{Used 20-sim for dynamic behavior} - \rroi{Could determine physical limits} - \rro{Used openSCAD for geometric design} - \rroi{Could easily avoid collision between parts} - - \rro{Implementation went smooth} - \rroi{Order of increase in detail more in line with Koen den Hollander.} - \rroi{Stepwise detail increase gives loads of feedback} - \rroi{Dynamics model gave feedback on required stepper torque} - \section{Testing} - \rro{Testing was difficult with only one finished component, however} - \rroi{Able to run draw three characters in 2 seconds} - \rroi{Able to draw a square in 1 second} - \section{Result} - \rro{Created a model in 20-sim and openscad} - \rro{Build a physical prototype} \chapter{Improvements} \label{chap:improvements} \section{Specifications} + \rro{In general, I underestimated the importance of the preliminary research} + \rroi{\textcite{broenink_rapid_2019} also skips this part.} + \rroi{As the focus of that paper was on the actual implementation, the preliminary phase was over looked} + \rroii{However, bringing a system into being, the preliminary design phase is extremely important} \rro{For validation \textcite{garrett_322_2000} suggests:} \rroi{Looking at comparable systems' specifications} \rroi{Use of best engineering judgements}