-
Notifications
You must be signed in to change notification settings - Fork 0
/
intro.tex
89 lines (68 loc) · 7.18 KB
/
intro.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
\chapter{Inledning}
\label{cha:introduction}
%% Vad är det för spännande projekt ni gjort?
%% Varför skall jag forsätta läsa rapporten?
\section{Motivering}
\label{sec:motivation}
Tekniken för att kunna skriva ut 3D-objekt har funnits i många år men först på 2010-talet har 3D-skrivare blivit tillgängliga även för vanliga konsumenter. Även i industrin har det blivit allt vanligare att använda 3D-skrivare för att skapa prototyper. Det finns dock ett problem: för att kunna använda 3D-skrivaren måste man antingen kunna CAD-mjukvara eller förlita sig på andra människors 3D-modeller. Även om man kan CAD-mjukvara kan det vara svårt eller tidsödande att rita upp ett komplicerat objekt från grunden. Genom att använda ett system för 3D-kopiering kan ett verkligt objekt istället kopieras.
%% Vad skall rapporten leda till? (Beskriva projekt, samla
%% erfarenheter, speciella djupdykningar)
\section{Syfte}
\label{sec:aim}
Nedan beskrivs två syften med detta projekt. Det första syftet som beskrivs, vidareutveckling av TreeD, var syftet med projektet innan projektet reviderades medan det andra syftet, 3DCopy, var syftet med projektet efter revidering.
\subsection{Vidareutveckling av TreeD}
Syftet med detta projekt var till en början att konstruera en mjukvara för att styra ett system som kopierar tredimensionella objekt. Projektet skulle bygga vidare på ett tidigare kandidatarbete som utfördes våren 2016 och som kallas TreeD. Det kandidatarbetet resulterade i en mjukvara, också kallad TreeD, som styr ett rotationsbord och en linjärenhet. På denna linjärenhet finns det en avståndskamera som används för att generera punktmoln.
Syftet med projektet var alltså att bygga vidare på TreeD till ett system som kan kopiera ett tredimensionellt objekt. Tanken var att detta skulle göras genom att ett flertal skanningar tas med olika rotationer och lutningar. De genererade punktmolnen skulle sedan registreras till ett komplett punktmoln som sedan skulle omvandlas till en 3D-mesh. Denna 3D-mesh skulle sedan kunna skrivas ut med hjälp av en 3D-skrivare.
\subsection{3DCopy}
Med revideringen av projektet reviderades även syftet till att inte bero på TreeD. Det nya syftet var att utveckla ett mindre automatiserat system, framförallt med hänsyn till att skanna objekt. Systemet skulle kunna läsa in färdiga punktmoln som sparats på datorn. Genom att endast läsa in punktmoln från filer är programmet inte beroende av att det underliggande systemet för att styra hårdvaran är stabilt.
Efter att punktmolnen lästs in skulle de sedan behandlas genom att registrera alla punktmoln till ett komplett punktmoln och sedan generera en mesh utifrån detta. Den genererade meshen kan sedan skrivas ut med hjälp av en 3D-skrivare. På detta sätt skulle mjukvaran kunna användas till att kopiera tredimensionella objekt även om processen inte skulle vara helt automatiserad.
\section{Frågeställning}
\label{sec:research-questions}
De generella samt specifika frågeställningar som denna rapport kommer att behandla listas nedan.
\subsection{Generella frågeställningar}
\begin{enumerate}
\item Hur kan ett system för 3D-kopiering implementeras så att man skapar värde för kunden?
\item Vilka erfarenheter kan dokumenteras från ett 3D-kopieringsprojekt som kan vara intressanta för framtida projekt?
\item Vilket stöd kan man få genom att skapa och följa upp en systemanatomi?
\end{enumerate}
\subsection{Specifika frågeställningar}
\begin{enumerate}
\item [4.] Hur påverkas projektet av en helt reviderad kravspecifikation efter hälften av projektets gång?
\item [5.] Hur har gruppen anpassat sitt tillvägagångssätt vid vidareutvecklingen av ett system?
\end{enumerate}
\section{Avgränsningar}
\label{sec:delimitations}
Denna rapport hade innan projektets revidering avgränsningar att systemet inte skulle utveckla det tidigare systemet TreeD även om behov skulle finnas. Det visade sig att behov fanns och därför reviderades projektet istället.
De nya avgränsningarna till projektet var att systemet enbart kommer behandla punktmoln tagna med den tillgängliga hårdvaran. Systemet ska enbart klara av att registrera dessa punktmoln och sedan generera en 3D-mesh för utskrift. Systemet ska inte behandla punktmolnen på något annat vis.
\section{Definitioner}
\label{sec:definitions}
Här definieras vissa begrepp och förkortningar som används senare i rapporten.
\begin{itemize}
\item Iterative Closest Point (ICP) - En optimeringsalgoritm för att minimera avståndet mellan punkterna i två mängder av punkter. Vanligt använd för att registrera punktmoln.
\item Point Cloud Library (PCL) - Ett C++-bibliotek för hantering av punktmoln.
\item Robot Operating System (ROS) - Ett ramverk för att utveckla mjukvara för robotar.
\item CLI - Förkortning för det engelska uttrycket \textit{command line interface}, kommandoradsgränssnitt på svenska.
\item GUI - Förkortning för det engelska uttrycket \textit{graphical user interface}, grafiskt användargränssnitt på svenska.
\item Pipe and filter-modellen - En vanlig modell inom mjukvaruutveckling. Går ut på att programmet är uppdelat i moduler där varje modul har strikt in- och utdata och där utdata från en modul kan skickas som indata i nästa modul.
\item 3DCopy - Namnet på detta projekt samt namnet på den slutgiltiga produkten. En mjukvara som registrerar och meshar punktmoln.
\item TreeD - Namnet på det tidigare projekt 3DCopy skulle bygga vidare på. Även namnet på en mjukvara för att styra ett rotationsbord och en linjärenhet med avståndskamera.
\item Slack - Ett kommunikationsverktyg där kommunikationen kan delas in i kanaler. Används ofta av företag för att underlätta kommunikation inom projektgrupper.
\item Trello - Ett onlineverktyg för att hantera listor. Användes i projektet för hålla reda på och följa upp aktiviteter som skulle utföras.
\item Git - Ett distribuerat versionshanteringssystem.
\item 3D-mesh - En vattentät modell av ett objekt som är uppbyggd av polygoner. Kallas även för bara mesh.
\item Meshning - Att generera en 3D-mesh utifrån ett punktmoln.
\item PCD-fil - Ett vanligt filformat för att spara punktmoln är PCD.
\item STL-fil - Ett vanligt filformat för att spara en 3D-mesh är STL.
\item CAD-mjukvara - Programvara för att designa fysiska objekt i datorn.
\item Voxel - Ett punktmoln kan delas in i så kallade voxels vilket kan ses som kuber.
\item Rotationsbord - En hårdvaruenhet som används för att rotera ett objekt.
\item Linjärenhet - En hårdvaruenhet som används för att förflytta en avståndskamera eller annat föremål längs en axel.
\item ROS-nod - En enskild process som kommunicerar med andra noder inom ramverket ROS.
\item Nedsampling - Metod för att minska antalet punkter i ett punktmoln med så liten förlust av information som möjligt.
\item Parvis registrering - En teknik för att registrera punktmoln där man tar två punktmoln och registrerar de till ett resultatmoln.
\item Styrkort - Ett kretskort som används för att styra hårdvara av något slag.
\end{itemize}
%\nocite{scigen}
%We have included Paper \ref{art:scigen}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Intro.tex ends here