summaryrefslogtreecommitdiffstats
path: root/Dokument
diff options
context:
space:
mode:
authorMattias Uvesten <matuv053@student.liu.se>2019-12-02 21:27:21 +0100
committerMattias Uvesten <matuv053@student.liu.se>2019-12-02 21:27:21 +0100
commitcf76f528129877b94988c38d14daced605cbaa71 (patch)
tree832985d93d096caa9faf5a24839cbe6c88d9c062 /Dokument
parent34d01a5dc128f3a1819c36b7f9e93d07532fcbdb (diff)
parentdfe52de86d600654343968fea54a189f1ec9e8cc (diff)
downloadtfyy51-cf76f528129877b94988c38d14daced605cbaa71.tar.gz
Merge branch 'master' of https://gitlab.liu.se/vehsys/tfyy51/yc4_2019
Diffstat (limited to 'Dokument')
-rw-r--r--Dokument/Teknisk Dokumentation/Albins txt filer/anteckningar från genomläsning av dok.txt64
-rw-r--r--Dokument/Teknisk Dokumentation/Albins txt filer/missade givare.txt26
-rw-r--r--Dokument/Teknisk Dokumentation/Albins txt filer/mötesanteckningar.txt15
-rw-r--r--Dokument/Teknisk Dokumentation/Albins txt filer/vad ska göras.txt8
-rw-r--r--Dokument/Teknisk Dokumentation/Alexander txt filer/bakgrund.txt1
-rw-r--r--Dokument/Teknisk Dokumentation/Davids txt filer/Forecasts.txt6
-rw-r--r--Dokument/Teknisk Dokumentation/Davids txt filer/Kartan.txt5
-rw-r--r--Dokument/Teknisk Dokumentation/Davids txt filer/Syfte och mål.txt6
-rw-r--r--Dokument/Teknisk Dokumentation/Davids txt filer/Tankar om TD.txt18
-rw-r--r--Dokument/Teknisk Dokumentation/Davids txt filer/Testproceduren.txt3
-rw-r--r--Dokument/Teknisk Dokumentation/Davids txt filer/Testprotokoll 12-11-2019.docxbin0 -> 12935 bytes
-rw-r--r--Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt12
-rw-r--r--Dokument/Teknisk Dokumentation/Figures/BanaModell.pdfbin0 -> 226411 bytes
-rw-r--r--Dokument/Teknisk Dokumentation/Figures/flow.pdfbin0 -> 30430 bytes
-rw-r--r--Dokument/Teknisk Dokumentation/Figures/lap_times_with_calibration.pngbin0 -> 75980 bytes
-rw-r--r--Dokument/Teknisk Dokumentation/Figures/lap_times_without_calibration.pngbin0 -> 95074 bytes
-rw-r--r--Dokument/Teknisk Dokumentation/Figures/segment_times.pngbin0 -> 119760 bytes
-rw-r--r--Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex24
-rw-r--r--Dokument/Teknisk Dokumentation/appendix/02-funktion.tex120
-rw-r--r--Dokument/Teknisk Dokumentation/appendix/03-material.tex11
-rw-r--r--Dokument/Teknisk Dokumentation/appendix/04-tester.tex (renamed from Dokument/Teknisk Dokumentation/appendix/03-testprocedur.tex)0
-rw-r--r--Dokument/Teknisk Dokumentation/appendix/04-testprotokoll.tex0
-rw-r--r--Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex141
-rw-r--r--Dokument/Teknisk Dokumentation/ekvationer-referenser.pdfbin0 -> 113030 bytes
-rw-r--r--Dokument/Teknisk Dokumentation/lips-no_customer.cls2
-rw-r--r--Dokument/Teknisk Dokumentation/root.tex63
-rw-r--r--Dokument/Teknisk Dokumentation/stats/lap.csv16
-rw-r--r--Dokument/Teknisk Dokumentation/stats/seg-1.csv16
-rw-r--r--Dokument/Teknisk Dokumentation/stats/seg-2.csv16
-rw-r--r--Dokument/Teknisk Dokumentation/text/01-inledning.tex32
-rw-r--r--Dokument/Teknisk Dokumentation/text/02-metod.tex3
-rw-r--r--Dokument/Teknisk Dokumentation/text/02-system.tex54
-rw-r--r--Dokument/Teknisk Dokumentation/text/03-system.tex12
-rw-r--r--Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex33
-rw-r--r--Dokument/Teknisk Dokumentation/text/04-events.tex24
-rw-r--r--Dokument/Teknisk Dokumentation/text/04-resultat.tex3
-rw-r--r--Dokument/Teknisk Dokumentation/text/05-diskussion.tex4
-rw-r--r--Dokument/Teknisk Dokumentation/text/05-end.tex17
-rw-r--r--Dokument/Teknisk Dokumentation/text/06-resultat.tex84
-rw-r--r--Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex11
-rw-r--r--Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex48
-rw-r--r--Dokument/Teknisk Dokumentation/text/system/03-korning.tex86
-rw-r--r--Dokument/Teknisk Dokumentation/text/system/04-gas.tex1
-rw-r--r--Dokument/Teknisk Dokumentation/text/system/05-display.tex6
44 files changed, 939 insertions, 52 deletions
diff --git a/Dokument/Teknisk Dokumentation/Albins txt filer/anteckningar från genomläsning av dok.txt b/Dokument/Teknisk Dokumentation/Albins txt filer/anteckningar från genomläsning av dok.txt
new file mode 100644
index 0000000..6190af3
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Albins txt filer/anteckningar från genomläsning av dok.txt
@@ -0,0 +1,64 @@
+Allmänt
+ Ska funktioner skrivas do_car() eller do_car?
+
+Bakgund
+ "Detta projeket"
+ Vad är en givare?
+Begrepp och systemöversikt
+ Tom
+Systembeskrivning
+ Innan start
+ "displayenm"
+ "0,x" är inte fint
+ Uppstart
+ automatisk eller autonom?
+ Funktioner och variabler inte kursiva
+ Är höjningen värkligen kontinuelig? Mattematiskt nej, språkligt ja
+ Stor bokstav ny mening (rad 4, -2)
+ Körning
+ Position
+ snyggare matte
+ Governor
+ hänvisa till forcasts?
+ Förändringar är större ju mer ifrån tiden är
+ Avslut
+ Hur avslutas programmet?
+Händelser
+Liten beskrivning av vad som medas med händelser?
+ Avslutning av körning
+ "avslutas (först) när båda bilarna står stilla"
+Programslut
+ kursiv stil
+Handhavande
+ bättre beskrivning av sökvägen.
+ "Dyker upp" lite informellt
+ "När koden körs i Matlab är dags att" Va?
+ Ställ bilarna på banan?
+ "välja antalet banor" Borde bara "välja de banor"
+ inte punkt före "Samt knappen Avsluta." Citattecken runt knappnamn?
+ "varvtid" Ska vara referenstid (car.ref_time)
+ "skriv in" informellt
+Funktioner och filer
+ System
+ Format behöver göras om
+ kursiv stil på funktioner?
+ Mellanslag efter komma?
+ main.m lite mer förklaring
+ Display
+ format för koordinater?
+ Används alla dessa? Typ flashing_area_with_pattern
+Kravbeskrivning
+ Referera till kravspecen
+ Gör om till tabell
+ Referera till var i Tekniska dokumentationen detta beskrivs
+ Ibland stämmer det inte, tex krav 7
+ 8 Vad är en styrsignal?
+ 9 typo
+ 17 är inte intervallet slutet?
+ 21 typo
+ 36 typo
+ 38 inte gjord
+ 43 inte gjord
+ 44 fel adress, inte ida
+ 47 ?
+ \ No newline at end of file
diff --git a/Dokument/Teknisk Dokumentation/Albins txt filer/missade givare.txt b/Dokument/Teknisk Dokumentation/Albins txt filer/missade givare.txt
new file mode 100644
index 0000000..f22436b
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Albins txt filer/missade givare.txt
@@ -0,0 +1,26 @@
+Missade givare
+
+Programmet gör redan en uppskattning av bilens position (\emph{get\_position})
+ och justerar denna vid ny givare (lägg till referens här).
+Eftersom \emph{get\_new_v} utgår ifrån denna uppskattning, kommer ingen
+anpassning behöva göras ifall en givare inte ger utslag. Däremot måste det
+kompenseras nästa gång en givare detekteras. Detta görs med funktionen
+\emph{choose\_position}. Den funktionen jämför positionen beräknad av
+\emph{get\_position} och positionen vald av nuvarande givare.
+
+Vid varje givare kollar \emph{choose\_position} vilken givare som
+\emph{get\_position} ligger närmast. Funktionen beräknar skillnaden mellan denna
+och den givare som valdes med givardetektionen. Denna kallas \emph{seg\_plus}.
+I normala fall är \emph{seg\_plus0} = 0 (ingen
+missad givare) eller 1 (en missad givare), men den kan också bli högre. Eftersom
+programmet inte ska behöva hantera för många givarsignaler ska \emph{seg\_plus}
+aldrig kunna bli lägre än 0. I så fall ändras denna till 0. \emph{seg\_plus}
+retuneras av funktionen och används sedan för att höja \emph{car.segment} så att
+programmet har koll på var bilen är.
+
+Dessutom behöver den insamlade datan justeras när en eller flera givare har
+missats. Annars kommer \emph{car.seg\_times} spara tiden för flera segment som
+om det vore ett enda. Lösningen är att skriva över denna tid med 0. Alla
+funktioner som använder denna data behöver kolla ifall den är noll eller inte,
+om den är noll används den ifrån varvet innan i stället. Om den också är noll
+används den från två varv tidigare osv.
diff --git a/Dokument/Teknisk Dokumentation/Albins txt filer/mötesanteckningar.txt b/Dokument/Teknisk Dokumentation/Albins txt filer/mötesanteckningar.txt
new file mode 100644
index 0000000..c3249d2
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Albins txt filer/mötesanteckningar.txt
@@ -0,0 +1,15 @@
+Alla referenser till kod skall skrvas
+ ex: ...vilket höjer \texttt{car.constant} med...
+
+funktioner ska skrivar med parantes tex \texttt{get\_position()}
+
+variabler i structen skrivs (med texttt och \_) car.seg_times
+
+autonom i ställset för automatisk körning
+
+Behövs en subsection om tidsgrejer. I slutet av system
+
+Snyggare matte och hänvisningar, se gustavs pdf (i mappen "Teknisk
+Dokumentation")
+
+Flytta 4.1 till 3.5
diff --git a/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska göras.txt b/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska göras.txt
new file mode 100644
index 0000000..18d6e88
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Albins txt filer/vad ska göras.txt
@@ -0,0 +1,8 @@
+Inledning - kolla igenom
+Funktioner och filer - format - Gustav
+Displayfunktioner - rensa - Gustav
+Material - utveckla - Alex
+
+gör figurer
+\texttt{} fortsätter efter radbrytning
+forcasts!
diff --git a/Dokument/Teknisk Dokumentation/Alexander txt filer/bakgrund.txt b/Dokument/Teknisk Dokumentation/Alexander txt filer/bakgrund.txt
new file mode 100644
index 0000000..bcd9bbf
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Alexander txt filer/bakgrund.txt
@@ -0,0 +1 @@
+Detta projektet har utförts med hjälp av en bilbana samt flera bilar, givare, spänningsaggregat och en dator inkopplad till givarna på banan. Via datorn har spänning tillförts till bilbanan. Med hjälp av givarna är det möjligt att veta när en bil har passerat en givare. Programvaran utvecklas i Matlab, vilket ligger till grund för styrning av bilarna.
diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/Forecasts.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/Forecasts.txt
new file mode 100644
index 0000000..2089418
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Davids txt filer/Forecasts.txt
@@ -0,0 +1,6 @@
+Forecasts beräknar den approximerade varvtiden utifrån tid fram tills senast
+passerad givare samt hastighet i tidigare segment. Genom att veta en
+genomsnittlig hasftighet går det med kvarvarande sträcka att räkna ut en
+ungefärlig kvarvarande tid. Adderas tiden fram tills senaste segment med
+den uträknade approximerade tiden kvar så fås det en uppskattad varvtid som
+används för att avgöra om en bil behöver åka snabbare eller långsammare. \ No newline at end of file
diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/Kartan.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/Kartan.txt
new file mode 100644
index 0000000..32a7339
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Davids txt filer/Kartan.txt
@@ -0,0 +1,5 @@
+Till systemet har det tagits fram en spänningkarta som är indelat i delsegment.
+Dessa delsegment är helt enkelt varje del av banan som använts för att sätta
+ihop bilbanan. Delarna är uppmätta och placerade i en lista där det sedan
+gjorts tester där delsegmenten blivit tilldelade en spänning utifrån banans
+och bilarnas egenskaper. \ No newline at end of file
diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/Syfte och mål.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/Syfte och mål.txt
new file mode 100644
index 0000000..7d1cd8b
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Davids txt filer/Syfte och mål.txt
@@ -0,0 +1,6 @@
+Syftet med projektet var att konstruera ett system som kör bilar runt en bilbana
+%(Se figur~\ref{fig:track_modell}).
+Med hjälp av informationen som har kunnat läsas av från givarna så skulle det
+skapas ett system som skulle få diverse bilar att köra runt på de 2 olika
+banorna på en vald referenstid. Huvudmålet är indelat i flera olika krav.
+Se avsnitt 3.2. \ No newline at end of file
diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/Tankar om TD.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/Tankar om TD.txt
new file mode 100644
index 0000000..daaf081
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Davids txt filer/Tankar om TD.txt
@@ -0,0 +1,18 @@
+Något mer än "Teknisk dokumentation" som titel
+
+1.1
+- "dator inkopplad till givarna på banan" -> "en dator som styrenhet"?
+
+3.2
+- "autonom" istället för "automatisk"?
+- Kanske göra grafen på den upptrappade konstanthöjning för bootstrapen i latex?
+
+3.3.1
+- Överflödigt att skriva hur koden ser ut "car.new_check_point ..."
+
+En tanke är att skippa skriva alla funktioner och variabler helt och hållet när
+vi beskriver vad vår kod gör. Att istället få läsaren att förstå vad som händer
+med bilen på banan och kanske inte så mycket vad som händer med våra konstanter
+och variabler i koden. Det görs väl någon annanstans?
+
+Lite stavfel här och där \ No newline at end of file
diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/Testproceduren.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/Testproceduren.txt
new file mode 100644
index 0000000..82bb9ce
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Davids txt filer/Testproceduren.txt
@@ -0,0 +1,3 @@
+Inför en delleverans skrevs det upp krav och funktioner som skulle testas.
+I testet kördes de funktioner som skulle uppfylla kraven och utfallet
+av körningarna dokumenterades i ett testprotokoll. \ No newline at end of file
diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/Testprotokoll 12-11-2019.docx b/Dokument/Teknisk Dokumentation/Davids txt filer/Testprotokoll 12-11-2019.docx
new file mode 100644
index 0000000..2b8f821
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Davids txt filer/Testprotokoll 12-11-2019.docx
Binary files differ
diff --git a/Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt b/Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt
new file mode 100644
index 0000000..98e70f8
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Davids txt filer/highToc.txt
@@ -0,0 +1,12 @@
+För att garantera att givarna läses av minst tio gånger i sekunden så körs det
+en for-loop i slutet av varje cykel som tillfälligt pausar programmet.
+For-loopen gör en paus på 0.001 sekunder och gör det tills programmet totalt har
+pausat i över 0.07 sekunder. Den totala paustiden mäts och en if-sats sparar den högsta
+uppmätta paustiden i \texttt{highToc}.
+
+I slutet av varje cykel körs det en loop som tillfälligt pausar programmet.
+För att få avläsningen att ske minst en gång var tionde sekund så pausas
+programmet kontinuerligt 0.001 sekunder tills den totala paustiden överskrider
+0.07 sekunder då nästa cykel börjar. Då pausen på 0.001 sekunder är så pass
+kort och marginalen till kravet är rätt stor så sker avläsningen mellan
+0.07 och 0.1 sekunder. \ No newline at end of file
diff --git a/Dokument/Teknisk Dokumentation/Figures/BanaModell.pdf b/Dokument/Teknisk Dokumentation/Figures/BanaModell.pdf
new file mode 100644
index 0000000..8e003e9
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Figures/BanaModell.pdf
Binary files differ
diff --git a/Dokument/Teknisk Dokumentation/Figures/flow.pdf b/Dokument/Teknisk Dokumentation/Figures/flow.pdf
new file mode 100644
index 0000000..f853546
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Figures/flow.pdf
Binary files differ
diff --git a/Dokument/Teknisk Dokumentation/Figures/lap_times_with_calibration.png b/Dokument/Teknisk Dokumentation/Figures/lap_times_with_calibration.png
new file mode 100644
index 0000000..b4ab83a
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Figures/lap_times_with_calibration.png
Binary files differ
diff --git a/Dokument/Teknisk Dokumentation/Figures/lap_times_without_calibration.png b/Dokument/Teknisk Dokumentation/Figures/lap_times_without_calibration.png
new file mode 100644
index 0000000..d7059c0
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Figures/lap_times_without_calibration.png
Binary files differ
diff --git a/Dokument/Teknisk Dokumentation/Figures/segment_times.png b/Dokument/Teknisk Dokumentation/Figures/segment_times.png
new file mode 100644
index 0000000..c73c9b6
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/Figures/segment_times.png
Binary files differ
diff --git a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex
index e69de29..668a1c3 100644
--- a/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex
+++ b/Dokument/Teknisk Dokumentation/appendix/01-handhavande.tex
@@ -0,0 +1,24 @@
+\section{Handhavande}
+\label{app:handhavande}
+Starta Matlab 2015b. Observera att användaren måste använda datorn som finns
+inne i bilbanerummet och som är inkopplade till bilbanan. Inne i Matlab ska användaren navigera sig till ''Kod'' mappen (som finns tillgängliga för alla i projektet). Börja med att högerklicka på mappen ''Kod'' och välj alternativet ''Add To Path''. Klicka på ''Select Folders And Subfolders'' som dyker upp när musen pekar på ''Add To Path''. Därefter expandera bilbana mappen följt av yc4 mappen. Öppna sedan main.m och starta systemet genom att klicka på Run i Editorn i Matlab.
+
+Därefter välj vilka banor som ska köras via den externa touch displayen. Justera också referenstiden genom att klicka på plusstecknet eller minustecknet (notera att referenstiden ändras med 0.5 s intervall). Kryssa även i om någon av banorna ska köras manuellt. Starta genom att trycka på knappen nere i det högra hörnet på displayen. Observera att bilarna måste placeras några decimeter innan målgivaren före start.
+
+När programmet ska avslutas klickar användaren i kommentar fönstret i Matlab och
+klickar på q om bilen ska stanna direkt. Om användaren istället vill att
+bilen/bilarna ska stanna precis innan målgivaren klickar användaren på s
+(observera att detta fungerar endast efter varv ett).
+
+När programmet avslutas finns möjligheterna att se varvtiden/varvtiderna,
+segmentstiden/segmentstiderna samt att avsluta. Detta väljs utifrån de tre
+knapparna längst ner på displayen. Dessa knappar är Varv för att se varvtid,
+Segment för att se segmentstider. Samt knappen Avsluta.
+
+Om knappen Varv väljs kommer information såsom ''target'' vilket är vald varvtid.
+“mean” som är genomsnittlig varvtid och “stdev” är standardavvikelsen. För att
+se varvtiden för den andra banan klicka på knappen uppe i högra hörnet.
+
+Om programmet kraschar öppna main.m. Därefter skriv in
+ctrl och enter i avgränsningen som heter ''\%\% END OF RACE'' som finns i slutet av
+koden main.m.
diff --git a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex
index e69de29..20313af 100644
--- a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex
+++ b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex
@@ -0,0 +1,120 @@
+\section{Funktioner och filer}
+
+\subsection{System}
+\label{app:funktioner och filer:system}
+
+\texttt{choose\_position(position, segment, track, track\_len)} - Körs när en
+givare passerats. Gör en bedömning om en givare (eller flera) har missats genom
+att kontrollera vilken givare som är närmast den nuvarande uppskattade position
+och kompenserar om en givare bedöms ha missats. Se \ref{sec:missade givare}
+
+\texttt{clamp(n, m, M)} - En hjälpfunktion som returnerar $n$ om $m < n < M$,
+$m$ om $n < m$ och $M$ om $n > M$.
+
+\texttt{detect\_missed(position, segment, track, track\_len)} - Returnerar true
+om position ligger utanför det nuvarande segmentet.
+
+\texttt{do\_boot(car, boot)} - Anropas en gång per programcykel i den så kallade
+boostrap-fasen. Se \ref{sec:systembeskrivning:uppstart} för information.
+
+\texttt{do\_car(car, t, displa\_data, boot)} - Anropas en gång per programcykel.
+Se \ref{sec:systembeskrivning:korning} och EN ANNAN DEL AV TEXTEN (vadå?) för
+information om hur en programcykel ser ut och NÅGOT MER (vadå?).
+
+\texttt{do\_gov(car)} - Anropas varje gång en givare passerats. Vid målgivaren
+jämförs referenstiden och den förra varvtiden och car.constant anpassas efter
+differensen mellan dem. Om differensen är högre ändras car.constant mer, och
+vice versa om differensen är låg. Vid givare 5 och 8 jämförs referenstiden och
+en uppskattning av hur lång tid det nuvarande varvet troligen kommer ta. Se
+\ref{sec:systembeskrivning:governor} för mer information.
+
+\texttt{fit\_percents(percents, lap\_time, seg\_times)} - Anropas vid varje nytt
+varv. Räknar ut den procentuella tiden varje segment tog det förra varvet och
+sparar medelvärdet mellan den förra procentsatsen och den nya, uträknade
+procentsatsen. Procentsatsen normeras sedan så summan är 1 (100%).
+
+\texttt{format\_seg\_times(car)} - Anropas när körningen avslutas. Returnerar
+den genomsnittliga tiden för varje segment.
+
+\texttt{get\_aprox\_v(cur\_seg, car)} - Anropas varje programcykel. Uppskattar
+bilens nuvarande hastighet genom att dividera den senast uppmätta segmentstiden
+med segmentets längd.
+
+% \texttt{get\_new\_u(new\_v, seg\_constant} - FLYTTA BERÄKNINGEN TILL DO\_CAR,
+% BEHÖVER INTE VARA EN EGEN FUNKTION
+
+\texttt{get\_new\_v(position, list)} - Anropas varje programcykel. Söker igenom
+bankartan och returnerar värdet v som matchar position.
+
+\texttt{get\_position(aprox\_v, prev\_p, delta\_t)} - Anropas varje
+programcykel. Räknar ut hur långt bilen rört sig sedan senaste programcykeln.
+
+% \texttt{get\_seg\_constant(position, lap\_constants, track, track\_len)} - TA
+% BORT
+
+\texttt{get\_time\_as\_string(millis)} - Omvandlar en mängd millisekunder till
+formatet "mm:ss.s". Till exempel omvandlas 1250 ms till "00:01.3" och 11240 till
+"00:11.2".
+
+\texttt{main.m} - Huvudskriptet som startar hela systemet. Det script som
+programmet ligger i. I main.m ligger alla funktioner. Det är denna fil som ska
+startas vid systemuppstart, se \ref{app:handhavande}
+
+\subsection{Display}
+\label{app:funktioner och filer:display}
+
+\texttt{bar\_graph(direction, no, x1, x2, y1, y2, start\_value, end\_value,
+type, pattern)} - Skapar ett stapeldiagram med ett hörn i \texttt{(x1, y1)} och ett
+diagonellt hörn i \texttt{(x2, y2)}. \texttt{direction} är en av 'O', 'U', 'L' och 'R' och
+bestämmer åt vilket håll "upp" är på stapeln. 'O' står för upp ('oben' på
+tyska), 'U' står för ner ('unter'), 'L' står för vänster ('links') och 'R' står
+för höger ('rechts'). Värdet stapeldiagrammet ska visa specifieras med
+\texttt{update\_bar\_graph}. \texttt{start\_value} och \texttt{end\_value}
+bestämmer vad som ska vara noll- respektive maxvärde för stapeldiagrammet.
+\texttt{no} är stapeldiagrammets nummer och behöver specifieras när
+stapeldiagrammets värde ska uppdateras. \texttt{type} sätts till 0 för en enkel stapel
+och 1 för en stapel inuti en ram.
+
+\texttt{clear\_display()} - Rensar displayen.
+
+\texttt{continue\_line(x2, y2)} - Fortsätter en linje från den senast specifierade
+linjens slut till \texttt{(x2, y2)}.
+
+\texttt{draw\_line(x1, y1, x2, y2)} - Ritar en linje mellan \texttt{(x1, y1)} och
+\texttt{(x2, y2)}.
+
+\texttt{key(x1, y1, x2, y2, down\_code, up\_code, just, text)} - Skapar en
+tryckbar knapp (till skillnad från en omkopplare, se \texttt{toggle()}) med
+diagonella hörn i \texttt{(x1, y1)} och \texttt{(x1, y1)} och texten \texttt{text}. Hur
+texten justeras beror på \texttt{just} där 'R' gör texten högerjusterad ('right'), 'C'
+gör texten centerjusterad och 'L' gör texten vänsterjusterad ('left'). Om
+knappen trycks ned läggs \texttt{down\_code} i displayens interna minne och om knappen
+släpps läggs \texttt{up\_code} i displayens interna minne.
+
+\texttt{point(x1, y1)} - Ritar en punkt i \texttt{(x1, y1)}. Punktens storlek kan
+anpassas med \texttt{set\_point\_size}.
+
+\texttt{put\_text(x, y, justification, text)} - Skriver texten \texttt{text} i
+\texttt{(x, y)}. Hur texten justeras beror på \texttt{justification} där 'R' gör
+texten högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör texten
+vänsterjusterad ('left'). Om \texttt{justification} är 'R' bestämmer \texttt{x}
+och \texttt{x} textens övre högra koordinat, om \texttt{justification} är 'C'
+bestämmer \texttt{x} och \texttt{x} textens mittre koordinat och om
+\texttt{justification} är 'L' bestämmer \texttt{x} och \texttt{y} textens övre
+vänstra koordinat.
+
+set\_point\_size(n1, n2) - Sätter storleken på punkter och linjer som ritas ut.
+\texttt{n1} är storleken i x-led (mellan 1 och 15 pixlar) och \texttt{n2} är
+storleken i y-led (mellan 1 och 15 pixlar).
+
+\texttt{toggle(x1, y1, x2, y2, down\_code, up\_code, just, text)} - Skapar en
+tryckbar omkopplare (till skillnad från en knapp, se \texttt{key()}) med
+diagonella hörn i \texttt{(x1, y1)} och \texttt{(x1, y1)} och texten
+\texttt{text}. Hur texten justeras beror på *just* där 'R' gör texten
+högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör texten
+vänsterjusterad ('left'). Om knappen aktiveras läggs \texttt{down\_code} i
+displayens interna minne och om knappen avaktiveras läggs \texttt{up\_code} i
+displayens interna minne.
+
+\texttt{update\_bar\_graph(num, val)} - Skickar värdet \texttt{val} till
+stapeldiagram *num*.
diff --git a/Dokument/Teknisk Dokumentation/appendix/03-material.tex b/Dokument/Teknisk Dokumentation/appendix/03-material.tex
new file mode 100644
index 0000000..cd266f6
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/appendix/03-material.tex
@@ -0,0 +1,11 @@
+\section{Material}
+
+Projektgruppen har av beställaren tillhandahållits ett lab med följande utrustning:
+
+\begin{itemize}
+ \item En bilbana med två banor som är utrustad med givare vars funktion är att detektera passerade bilar.
+ \item Två datorer.
+ \item En display med touchfunktionallitet.
+ \item Ett antal bilar.
+ \item Handkontroller för manuellkörning av bilarna.
+\end{itemize}
diff --git a/Dokument/Teknisk Dokumentation/appendix/03-testprocedur.tex b/Dokument/Teknisk Dokumentation/appendix/04-tester.tex
index e69de29..e69de29 100644
--- a/Dokument/Teknisk Dokumentation/appendix/03-testprocedur.tex
+++ b/Dokument/Teknisk Dokumentation/appendix/04-tester.tex
diff --git a/Dokument/Teknisk Dokumentation/appendix/04-testprotokoll.tex b/Dokument/Teknisk Dokumentation/appendix/04-testprotokoll.tex
deleted file mode 100644
index e69de29..0000000
--- a/Dokument/Teknisk Dokumentation/appendix/04-testprotokoll.tex
+++ /dev/null
diff --git a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex
index e69de29..e5a06c7 100644
--- a/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex
+++ b/Dokument/Teknisk Dokumentation/appendix/05-kravbeskrivning.tex
@@ -0,0 +1,141 @@
+\section{Kravbeskrivning}
+\label{app:kravbeskrivning}
+För fullständig beskrivning av kraven, se kravspecifikationen.
+\begin{requirements}
+ \requirementno & Programmet är skrivet i Matlab. & Ja \\\hline
+
+ \requirementno & Systemet går att köra autonomt & Ja \\\hline
+
+ \requirementno & Systemet hanterar missade givare. Verifieras dels med en inprogrammerad
+ inställbar sannolikhet att en given givare hoppas över, dels av beställaren
+ under BP5. & Ja \\\hline
+
+ \requirementno & När ett varv har körts visar displayen varvnummer och varvtid.
+ & Ja \\\hline
+
+ \requirementno & Det nuvarande gaspådraget visas kontinuerligt på displayen. &
+ Ja \\\hline
+
+ \requirementno & Statistik om körningen visas vid avslutad körning på displayen.
+ Se \ref{sec:programslut}. & Ja \\\hline
+
+ \requirementno & Systemet anpassar automatiskt spänningstillförseln beroende på
+ egenskaperna för bilen och banan. & Ja \\\hline
+
+ \requirementno & Systemet anpassar automatiskt spänningstillförseln beroende på
+ egenskaperna för bilen och banan. & Ja \\\hline
+
+ \requirementno & Om en givare inte passeras inom nio sekunder pausas systemet och
+ användaren får frågan om programmet ska fortsätta eller avsluta. & Ja \\\hline
+
+ \requirementno & Vid uppstart väljer användaren vilken av banorna som ska köras eller om
+ båda ska köras samtidigt. & Ja \\\hline
+
+ \requirementno & Struket av beställaren. & N/A \\\hline
+
+ \requirementno & Vid uppstart väljer användaren om en bana ska köras autonomnt eller
+ manuellt. Banorna kan köras i alla kombinationer av autonomt och manuellt styre.
+ & Ja \\\hline
+
+ \requirementno & Systemet startas genom att enbart köra filen \texttt{main.m}.
+ Se \ref{app:handhavande}. & Ja \\\hline
+
+ \requirementno & Se krav 10 och 12. Delen om gemensam målgång är struken av
+ beställaren. & Ja \\\hline
+
+ \requirementno & All inmatning vid uppstart sker via displayen. & Ja \\\hline
+
+ \requirementno & På redovisingen åkte bilarna antingen av banan efter ett varv eller
+ inte alls. & Nej \\\hline
+
+ \requirementno & Referenstiden går att välja på displayen i intervallet 12 till 15
+ sekunder med steg om 0,5 sekunder. & Ja \\\hline
+
+ \requirementno & På redovisningen stannade inte bilarna någon gång. & Ja \\\hline
+
+ \requirementno && \\\hline
+
+ \requirementno & På redovisnigen slutfördes två körningar om 15 varv varav fem
+ kalibreringsvarv. Standardavvikelsen låg på 0,22 sekunder respektive 0,24
+ sekunder. & Nej \\\hline
+
+ \requirementno & Under de två testkörningarna överskreds gränsen om $\pm$ 0,5 sekunder
+ ett antal gånger. & Nej \\\hline
+
+ \requirementno & Krav 20 och 21 mäter endast varvtider från varv 6 och framåt. &
+ Ja \\\hline
+
+ \requirementno & Struket av beställaren. & N/A \\\hline
+
+ \requirementno & Statistik från körningarna vid redovisingen har delats med beställaren
+ via e-post. & Ja \\\hline
+
+ \requirementno & Vid avslutad körning visas grafer över varvtid och genomsnittlig tid
+ per segment. & Delvis \\\hline
+
+ \requirementno & Vid avslutad körning sparas statistik om körningen i en
+ \texttt{.mat}-fil. & Ja \\\hline
+
+ \requirementno & Se \ref{sec:system:korning:cykel}. & \\\hline
+
+ \requirementno & & \\\hline
+
+ \requirementno & Gruppmedlemmarna har tidsrapporterat under hela projektet och håller
+ sig på ett ungefär till tidsgränsen. Se externt tidsrapporteringsdokument. & Ja
+ \\\hline
+
+ \requirementno & Handledaren har inte bidragit med hjälp i mer än 25h. & Ja \\\hline
+
+ \requirementno & Vid avslutad körning visas den det längsta mellanrummet mellan två
+ avläsningar av banan. Se \ref{sec:system:korning:cykel}. & Ja \\\hline
+
+ \requirementno & Krav 32. Projektplanen var godkänd två veckor efter
+ beställarmötet. & Ja \\\hline
+
+ \requirementno & Designspecifikationen godkändes under projektvecka 4. & Ja \\\hline
+
+ \requirementno & BP4a redovisades under projektvecka 5. & Ja \\\hline
+
+ \requirementno & BP4b redovisades under projektvecka 6. & Ja \\\hline
+
+ \requirementno & BP5 redovisades under projektvecka 9. & Ja \\\hline
+
+ \requirementno & Programvaran kommer levereras under projektvecka 10. & -- \\\hline
+
+ \requirementno & Den tekniska dokumentationen kommer levereras under
+ projektvecka 10. & -- \\\hline
+
+ \requirementno & En slutleverans kommer hållas under projektvecka 10. Vid slutleveransen
+ kommer projektgruppen gå igenom samtliga krav och i övrigt presentera arbetets
+ gång. & -- \\\hline
+
+ \requirementno & Inför varje beslutspunkt har önskade dokument varit beställaren
+ tillhanda innan 09:00 arbetsdagen innan mötet. & Ja \\\hline
+
+ \requirementno & Projektledaren har delat tidsrapportering samt eventuella
+ mötesprotokoll vid rätt tid de flesta projektveckor. & Delvis \\\hline
+
+ \requirementno & Alla dokument och all programvara har funnits tillgänglig på
+ \url{https://gitlab.liu.se/} sedan projektvecka 2. & Ja \\\hline
+
+ \requirementno & Projektplan, designspecifikation, mötesprotokoll, testprotokoll och teknisk
+ dokumentation har framställts. Efterstudie kommer framställas vid ett senare
+ tillfälle. & Ja \\\hline
+
+ \requirementno & Se krav 42. & Ja \\\hline
+
+ \requirementno & Alla dokument framtagna av projektgruppen har levererats som
+ PDF-dokument. & Ja \\\hline
+
+ \requirementno & Alla framtagna dokument är skrivna på formell och korrekt
+ svenska. & Ja \\\hline
+
+ \requirementno & Dokumentationen innehåller följande figurer: varvtid mot varvnummer och
+ genomsnittlig tid för varje segment. & Delvis \\\hline
+
+ \requirementno & Programmet är uppdelat i funktioner. & Ja \\\hline
+
+ \requirementno & Projektgruppen har samtlats på minst ett möte i veckan där alla
+ medlemmar har närvarat. Handledaren har inte närvarat. & Delvis \\\hline
+
+\end{requirements}
diff --git a/Dokument/Teknisk Dokumentation/ekvationer-referenser.pdf b/Dokument/Teknisk Dokumentation/ekvationer-referenser.pdf
new file mode 100644
index 0000000..49fd7f6
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/ekvationer-referenser.pdf
Binary files differ
diff --git a/Dokument/Teknisk Dokumentation/lips-no_customer.cls b/Dokument/Teknisk Dokumentation/lips-no_customer.cls
index 3ccaa3d..e002545 100644
--- a/Dokument/Teknisk Dokumentation/lips-no_customer.cls
+++ b/Dokument/Teknisk Dokumentation/lips-no_customer.cls
@@ -90,7 +90,7 @@ dottedtoc
\def\name@Email{E-post}
\def\name@Requirement{Krav}
\def\name@Description{Beskrivning}
- \def\name@Priority{Prioritet}
+ \def\name@Priority{Uppfyllt}
\def\name@contprev{forts. från föregående sida}
\def\name@contnext{forts. på nästa sida}
\def\name@Author{Författare}
diff --git a/Dokument/Teknisk Dokumentation/root.tex b/Dokument/Teknisk Dokumentation/root.tex
index 89fa89c..5accf7f 100644
--- a/Dokument/Teknisk Dokumentation/root.tex
+++ b/Dokument/Teknisk Dokumentation/root.tex
@@ -2,12 +2,18 @@
%\usepackage[square]{natbib}\bibliographystyle{plainnat}\setcitestyle{numbers}
\usepackage[round]{natbib}\bibliographystyle{plainnat}
+\usepackage{parskip}
+%\usepackage{subfigure}
+%\usetikzlibrary{decorations.pathreplacing,angles,quotes}
+
+\usepackage{pgfplots}
+\usepackage{pgfplotstable}
% Configure the document
\title{Teknisk dokumentation}
\author{Yc4}
\date{\today}
-\version{0.1}
+\version{0.4}
\reviewed{}{}
\approved{}{}
@@ -23,7 +29,7 @@
\orderer{Erik Frisk, Linköpings universitet}
\ordererphone{+46(0)13-285714}
-\ordereremail{ordere@liu.se}
+\ordereremail{erik.frisk@liu.se}
%\customer{Kund, Företag X}
%\customerphone{+46 xxxxxx}
@@ -31,7 +37,7 @@
\courseresponsible{Urban Forsberg}
\courseresponsiblephone{+46(0)13-281350}
-\courseresponsibleemail{urban.frsberg@liu.se}
+\courseresponsibleemail{urban.forsberg@liu.se}
\supervisor{Viktor Leek}
\supervisorphone{+46(0)13-284493}
@@ -53,46 +59,69 @@
\begin{center}
\begin{tabular}{|l|l|l|}
\hline
- \textbf{Namn} & \textbf{Ansvar} & \textbf{E-post}\\
+ \textbf{Namn} & \textbf{Ansvar} & \textbf{Kontaktinformation}\\
+ \hline
+ Mattias Uvesten & Projektledare (PL) & 0768697559\\
+ && \url{matvu053@student.liu.se} \\
+ \hline
+ Gustav Sörnäs & Dokument, display (DOK, DSP) & 0703279113\\
+ && \url{gusso230@student.liu.se} \\
+ \hline
+ Alexander Tuneskog & Hastighet (SPD) & 0725559873 \\
+ && \url{aletu130@student.liu.se} \\
+ \hline
+ David Thorén & Tester, gemensam målgång (TST, GML) & 0721838605 \\
+ && \url{davth346@student.liu.se} \\
+ \hline
+ Albin Wahlén & Kalibrering, positionering (KLB, POS) & 0762016054 \\
+ && \url{albwa833@student.liu.se} \\
\hline
\end{tabular}
\end{center}
\section*{Dokumenthistorik}
-\begin{tabular}{p{.06\textwidth}|p{.1\textwidth}|p{.45\textwidth}|p{.13\textwidth}|p{.13\textwidth}}
- \multicolumn{1}{c}{\bfseries Version} &
+\begin{tabular}{|p{.06\textwidth}|p{.1\textwidth}|p{.45\textwidth}|p{.13\textwidth}|p{.13\textwidth}|}
+ \hline
+ \multicolumn{1}{|c}{\bfseries Version} &
\multicolumn{1}{|c}{\bfseries Datum} &
\multicolumn{1}{|c}{\bfseries Utförda förändringar} &
\multicolumn{1}{|c}{\bfseries Utförda av} &
- \multicolumn{1}{|c}{\bfseries Granskad}\\
+ \multicolumn{1}{|c|}{\bfseries Granskad}\\
\hline
+ \hline
+ 0.1 & 2019-11-28 & Struktur & Alla & \\
\hline
- 0.1 & 2019-11-26 & Förberedande struktur & Albin & \\
+ 0.2 & 2019-11-30 & Första utkast & Alla & \\
\hline
+ 0.3 & 2019-12-01 & Andra utkast & Alla & 2019-12-02 \\
+ \hline
+ 0.4 & 2019-12-02 & Tredje utkast & Alla & \\
+ \hline
+
\end{tabular}
\cleardoublepage
\pagenumbering{arabic}\cfoot{\thepage}
-\input{text/00-sammanfattning}
+% \input{text/00-sammanfattning}
\cleardoublepage
\tableofcontents
\cleardoublepage
\input{text/01-inledning}
-\input{text/02-metod}
-\input{text/03-system}
-\input{text/04-resultat}
-\input{text/05-diskussion}
-
-\bibliography{references}
+\input{text/02-system}
+\input{text/03-systembeskrivning}
+\input{text/04-events}
+\input{text/05-end}
+\input{text/06-resultat}
\cleardoublepage
\appendix
\input{appendix/01-handhavande}
\input{appendix/02-funktion}
-\input{appendix/03-testprocedur}
-\input{appendix/04-testprotokoll}
+\input{appendix/03-material}
+\input{appendix/04-tester}
\input{appendix/05-kravbeskrivning}
+
\end{document}
diff --git a/Dokument/Teknisk Dokumentation/stats/lap.csv b/Dokument/Teknisk Dokumentation/stats/lap.csv
new file mode 100644
index 0000000..6383233
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/stats/lap.csv
@@ -0,0 +1,16 @@
+x, y1, y2
+1, 17.06, 18.32
+2, 13.14, 15.37
+3, 12.89, 14.28
+4, 12.66, 13.83
+5, 13.28, 14.13
+6, 12.81, 14.14
+7, 13.23, 14.49
+8, 13.17, 14.60
+9, 13.46, 14.81
+10, 12.96, 14.13
+11, 13.22, 14.77
+12, 13.07, 14.23
+13, 13.54, 14.48
+14, 13.18, 14.77
+15, 13.52, 14.30
diff --git a/Dokument/Teknisk Dokumentation/stats/seg-1.csv b/Dokument/Teknisk Dokumentation/stats/seg-1.csv
new file mode 100644
index 0000000..08f126d
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/stats/seg-1.csv
@@ -0,0 +1,16 @@
+2.580456602,0.409669224,1.976335036,2.737245161,1.019580692,1.789976648,2.688915463,2.480555998,1.371502818
+1.089008528,0.149070629,1.823282438,2.123671979,0.729764343,1.629769304,2.599892906,1.779746636,1.220484317
+1.200847511,0.319677008,1.249760579,1.999967153,0.789989992,1.71983782,2.399997263,1.919820712,1.299999145
+1.038647472,0.302946102,1.2001112,1.980000855,0.809882727,1.669918482,2.539808908,1.859977589,1.260176037
+1.281575954,0.469836708,1.199740649,1.949955435,0.859910869,1.759379678,2.460436073,1.939817804,1.360279538
+1.039605841,0.230003678,1.189114766,1.869710111,0.860537008,1.749956119,2.599539121,1.950342751,1.329626797
+1.16859076,0.419928319,1.204048346,1.949035387,0.869844235,1.720143362,2.599659901,1.939470177,1.360757867
+1.121544133,0.39011214,1.289853987,2.049963817,0.870024892,1.699752111,2.529774949,1.980001882,1.248476823
+1.231378788,0.391820849,1.320045164,2.029754249,0.860246179,1.750283901,2.649455037,1.950136091,1.280097171
+1.119519276,0.330008297,1.20004927,2.039708144,0.859411669,1.780598253,2.509887346,1.919954152,1.200445824
+1.251549351,0.390007442,1.30961602,2.060152429,0.879480613,1.740401174,2.479751597,1.900060732,1.216561198
+1.095326713,0.339268649,1.280894386,1.919514828,0.810552662,1.809252141,2.559926779,1.959983235,1.300340613
+1.171503161,0.369915232,1.299916002,2.020044651,0.879948677,1.809843722,2.599910698,2.049844406,1.340514768
+1.061439606,0.31006287,1.229839445,2.199930201,0.859931398,1.779992302,2.589838076,1.959917199,1.190440264
+1.351117042,0.39039818,1.299802407,2.060047388,0.869752538,1.780013173,2.529908389,1.980175011,1.25987289
+1.253474049,0.347515022,1.338160646,2.065913453,0.855257233,1.745941213,2.555780167,1.971320292,1.282638405
diff --git a/Dokument/Teknisk Dokumentation/stats/seg-2.csv b/Dokument/Teknisk Dokumentation/stats/seg-2.csv
new file mode 100644
index 0000000..9c794a8
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/stats/seg-2.csv
@@ -0,0 +1,16 @@
+2.2904,0.3995,2.3366,3.0478,1.1897,2.1393,2.9396,2.5199,1.4514
+1.1477,0.2381,2.5374,2.3695,0.9699,2.0597,2.7598,2.0899,1.2003
+1.3086,0.3299,1.3698,2.12,0.9399,2.0598,2.7903,2.0896,1.2803
+1.1695,0.2499,1.22,2.0698,0.9399,2.04,2.7099,2.08,1.3601
+1.2126,0.2454,1.2807,1.9226,0.9997,2.15,2.8398,2.1399,1.3402
+1.1695,0.25,1.2797,1.9799,1.0299,2.1697,2.7298,2.1803,1.359
+1.2808,0.3397,1.3303,1.9593,1,2.2297,2.9003,2.0796,1.3703
+1.1415,0.25,1.2898,1.9999,1.0899,2.3699,2.96,2.1098,1.3905
+1.2896,0.3192,1.2906,2.0799,1.0306,2.2692,2.9701,2.1999,1.3697
+1.1099,0.3099,1.25,2.09,0.9798,2.2,2.7798,2.1501,1.2603
+1.3314,0.3097,1.2802,2.0861,1.0437,2.4099,2.9288,2.0311,1.3505
+1.0813,0.31,1.2299,2.0799,0.9501,2.2599,2.7787,2.1712,1.3702
+1.1796,0.3198,1.3399,2.1,1.05,2.3401,2.8897,2.09,1.1803
+1.3416,0.4099,1.3399,2.0599,1.0398,2.3299,2.82,2.1099,1.321
+1.1289,0.25,1.2601,0,0,2.3102,2.7898,2.0898,1.3105
+1.27886,0.302066667,1.442326667,2.140328571,1.018064286,2.222486667,2.839093333,2.142066667,1.32764
diff --git a/Dokument/Teknisk Dokumentation/text/01-inledning.tex b/Dokument/Teknisk Dokumentation/text/01-inledning.tex
index b6a469a..0b38944 100644
--- a/Dokument/Teknisk Dokumentation/text/01-inledning.tex
+++ b/Dokument/Teknisk Dokumentation/text/01-inledning.tex
@@ -1,16 +1,24 @@
\section{Inledning}
-\subsection{Bakgrund}
-Detta projektet har utförts med hjälp av en bilbana samt flera bilar, givare, spänningsaggregat och en dator inkopplad till givarna på banan. Via datorn har spänning tillförts till bilbanan. Med hjälp av givarna är det möjligt att veta när en bil har passerat en givare. Programvaran utvecklas i Matlab, vilket ligger till grund för styrning av bilarna.
+\begin{figure}
+ \centering
+ \includegraphics[width=\linewidth] {Figures/BanaModell}
+ \caption{En modell av bilbanan.}
+ \label{fig:bilbanan}
+\end{figure}
+
+\subsection{Bakgrund} Projektet har utförts med hjälp av en bilbana samt
+flera bilar, givare, spänningsaggregat och två datorer inne i bilbanerummet. Via datorn har spänning tillförts till bilbanan. Med hjälp av givarna är
+det möjligt att veta när en bil har passerat en givare. Programvaran har utvecklats
+i Matlab.
\subsection{Syfte och mål}
-Syftet med projektet var att konstruera ett system som kör bilar runt en bilbana
-%(Se figur~\ref{fig:track_modell}).
-Till bilbanan finns det 9 ``givare'' som när
-de passeras skickar en signal till en dator. Genom att mäta tidsskillnaden
-mellan signalerna kan man räkna ut hur lång tid det tog för en bil att åka
-mellan två givare. Bilbanan är även kopplad till en dator där det finns
-möjlighet att justera bilarnas gaspådrag med en spänningstillförsel. Med hjälp
-av denna information ska ett system skapas som kör en eller två bilar runt
-bilbanan på en inställbar varvtid mellan 12 och 15 sekunder, samt gör att
-bilarna åker i mål så nära varandra i tiden som möjligt.
+
+Syftet med projektet är att lära sig att arbeta i projekt utifrån
+projektmodellen Lips. Målet med projektet är att konstruera ett system som bland
+annat ska få bilarna att köra runt en bilbana på en vald referenstid mellan 12
+och 15 sekunder. Detta ska uppfyllas för båda banor, för flera bilar med olika
+egenskaper och med maximalt 5 kalibreringsvarv. Fler krav som ska klaras av
+finns i kravspecifikationen. Se kravspecifikationen \ref{app:kravbeskrivning}
+samt kursmål.
+
diff --git a/Dokument/Teknisk Dokumentation/text/02-metod.tex b/Dokument/Teknisk Dokumentation/text/02-metod.tex
deleted file mode 100644
index 8efb181..0000000
--- a/Dokument/Teknisk Dokumentation/text/02-metod.tex
+++ /dev/null
@@ -1,3 +0,0 @@
-\section{Metod}
-Tillvägagångssätt för utvecklign av systemet. Skriv massa positiva saker om git.
-
diff --git a/Dokument/Teknisk Dokumentation/text/02-system.tex b/Dokument/Teknisk Dokumentation/text/02-system.tex
new file mode 100644
index 0000000..71eefd5
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/text/02-system.tex
@@ -0,0 +1,54 @@
+\section{Begrepp och systemöversikt}
+\label{sec:begrepp och systemöversikt}
+
+Runt om bilbanan finns 9 givare som skickar en signal när
+en bil passerar under dem. En av givarna är målgivaren som går att skilja från de andra givarna då den ger ut en annan signal som defineras som nytt varv. Givarna delar in banan i nio delar, kallade segment. Dessa segment har i sin tur delats in i delsegment. Banan består av totalt 80 delsegment. Delsegementen har indelats utifrån längden på ban-bitarna från banan.
+För vardera bana och delsegment har ett värde på önskad spänningstillförsel till
+banan tagits fram. Detta värde varierar dels eftersom bilarna vid olika delar av
+banan behöver olika mycket spänningstillförsel för samma hastighet och dels
+eftersom bilarna vid vissa delar av banan inte kan åka lika snabbt som vid andra
+delar av banan.
+
+Värden som är relevanta för styrningen av vardera bil är i systemet sparad i
+två så kallade \emph{structs} med samma struktur. Att de båda banorna beskrivs
+av samma typ av objekt gör att funktionerna (som beskrivs nedan) kan utformas
+oberoende av vilken bana som hanteras. Dessa variabler hänvisas till som
+\texttt{car.value}. Om två bilar körs finns det således två värden sparade för
+varje variabel som är specifierad nedan, en för bana 1 och en för bana 2.
+
+\begin{itemize}
+
+\item \texttt{car.num} - Om bilen är på bana ett eller två.
+\item \texttt{car.running} - Om bilen körs eller inte.
+\item \texttt{car.stopping} - Om bilen för tillfället letar efter ett ställe att stanna på.
+\item \texttt{car.stopped} - Om bilen har hittat ett ställe att stanna på.
+\item \texttt{car.automatic} - Om bilen ska köras autonomt.
+\item \texttt{car.segment} - Bilens nuvarande segment.
+\item \texttt{car.lap} - Bilens nuvarande varv.
+\item \texttt{car.lap\_times} - En lista över bilens varvtider.
+\item \texttt{car.seg\_times} - En matris över bilens segmentstider per varv.
+\item \texttt{car.position} - Bilens position i meter efter målgivaren.
+\item \texttt{car.pos\_at} - En lista över hur långt det är kvar till målgivaren från de olika segmenten.
+\item \texttt{car.seg\_len} - En lista över längden för varje segment.
+\item \texttt{car.percents} - En lista över hur stor andel av varvtiden varje segment förväntas ta.
+\item \texttt{car.map} - Kartan över alla subsegment och önskad spänningstillförsel.
+\item \texttt{car.miss\_probability} - Sannolikheten att bilen vid en given givare inte får en signal. Används för att testa krav 3.
+\item \texttt{car.constant} - Multipliceras med den önskade spänningstillförseln för att
+ kompensera för olika bilars olika påverkan av samma spänningstillförsel.
+
+\end{itemize}
+
+
+Utöver dessa värden sparas ett antal värden för själva systemet.
+
+\begin{itemize}
+
+ \item \texttt{display.data} - En kö av kommandon som ska skickas till displayen.
+ \item \texttt{bootN.status} - Om den så kallade ''bootstrapen'' är aktiv för bana N. Se \ref{sec:systembeskrivning:uppstart}
+ \item \texttt{bootN.time} - Den tid som passerat sedan förra gången ''bootstrapen'' höjde \texttt{car.constant} för bana N. Se
+ \ref{sec:systembeskrivning:uppstart}
+ \item \texttt{halt} - Om någon av bilarna åkt av och användaren valt att avbryta körningen.
+ \item \texttt{t} - Hur lång tid den nuvarande programcykeln tagit.
+ \item \texttt{highToc} - Längden på den längsta programcykeln. Används för att kontrollera krav 31.
+
+\end{itemize}
diff --git a/Dokument/Teknisk Dokumentation/text/03-system.tex b/Dokument/Teknisk Dokumentation/text/03-system.tex
deleted file mode 100644
index b39a995..0000000
--- a/Dokument/Teknisk Dokumentation/text/03-system.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-\section{System}
- Nån text
- \subsection{Delsystem}
- \subsubsection{Bana}
- \subsubsection{Display}
- \subsection{Funktioner och scripts}
- \subsubsection{main}
- \subsubsection{get\_postition}
- % osv.
-
-% \input{system/a}
-% \input{system/b}
diff --git a/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex
new file mode 100644
index 0000000..5236af7
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/text/03-systembeskrivning.tex
@@ -0,0 +1,33 @@
+\section{Systembeskrivning}
+
+\begin{figure}
+ \centering
+ \includegraphics [height=0.8\textheight] {Figures/flow}
+ \caption{Flödesschema över systemet.}
+ \label{fig:flow}
+\end{figure}
+
+\input{text/system/01-innan-start}
+\input{text/system/02-uppstart}
+\input{text/system/03-korning}
+\input{text/system/05-display}
+
+\subsection{Avslut}
+
+För att avbryta programmet manuellt kan användaren när som helst trycka på q
+eller s på datorns tangentbord. Trycker användaren på q avslutas programmet
+direkt. Trycker användaren på s stoppas varje bil var för sig och fordonet
+stoppas när programmet uppskattar att bilen befinner sig 80~cm innan målgivaren.
+Därefter avslutas programmet när båda bilarna stannat.
+
+Om det har gått mer än nio sekunder sedan en givare passerades pausas programmet
+och användaren informeras på styrdatorn att en bil misstänkts ha fastnat eller
+åkt av banan.
+
+När körningen avslutas slutar systemet skicka spänning till banan.
+Om en bil kört fler än två varv sparas statistik från körningen i en
+\texttt{.mat}-fil med nuvarande datum och tid som filnamn.
+
+Vid programslut visas statistik om varvtid och genomsnittlig segmenttid på
+displayen. Se figurer xx-xx.
+
diff --git a/Dokument/Teknisk Dokumentation/text/04-events.tex b/Dokument/Teknisk Dokumentation/text/04-events.tex
new file mode 100644
index 0000000..e302ae3
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/text/04-events.tex
@@ -0,0 +1,24 @@
+\subsection{Missade givare}
+\label{sec:missade givare}
+
+Programmet gör redan en uppskattning av bilens position (\texttt{get\_position()})
+ och justerar denna vid ny givare, se \ref{sec:system:korning:position}.
+Eftersom \texttt{get\_new\_v()} utgår ifrån denna uppskattning, behövs ingen
+anpassning göras ifall en givare inte ger utslag. Däremot måste det
+kompenseras nästa gång en givare detekteras. Detta görs med funktionen
+\texttt{choose\_position()}.
+
+Vid varje givare kontrollerar \texttt{choose\_position()} vilken givare
+\texttt{car.position} ligger närmast genom att jämföra den \emph{beräknade} positionen med de kända positionerna varje givare befinner sig på.
+Funktionen beräknar skillnaden i antalet givare mellan denna och den givare som
+valdes med givardetektionen. I normala fall är skillnaden 0 (ingen missad givare) eller 1 (om en
+givare missats), men systemet kan hantera att flera givare i rad missas.
+(Systemet kan inte hantera en givare som skickar dubbla signaler). Om
+\texttt{choose\_position()} bedömer att en givare missats flyttas
+\texttt{car.segment} till den givare som matchar.
+
+Den insamlade datan behöver justeras när en eller flera givare har missats. Om
+datan inte justeras kommer \texttt{car.seg\_times} spara tiden för flera segment
+som om det vore ett enda. För att undvika detta sätts både den nuvarande och den
+förra segmentstiden till 0. Om en annan del av systemet vill räkna på
+segmentstiderna ansvarar den själv för att hoppa över segmentstider som är noll.
diff --git a/Dokument/Teknisk Dokumentation/text/04-resultat.tex b/Dokument/Teknisk Dokumentation/text/04-resultat.tex
deleted file mode 100644
index ea11986..0000000
--- a/Dokument/Teknisk Dokumentation/text/04-resultat.tex
+++ /dev/null
@@ -1,3 +0,0 @@
-\section{Resultat}
-Det gick åt skogen
-Kanske visa lite grafer.
diff --git a/Dokument/Teknisk Dokumentation/text/05-diskussion.tex b/Dokument/Teknisk Dokumentation/text/05-diskussion.tex
deleted file mode 100644
index f26ef6e..0000000
--- a/Dokument/Teknisk Dokumentation/text/05-diskussion.tex
+++ /dev/null
@@ -1,4 +0,0 @@
-\section{Diskussion}
-Undrar varför
-\subsection{Problem med hårdvaran}
-Här skyller vi ifrån oss.
diff --git a/Dokument/Teknisk Dokumentation/text/05-end.tex b/Dokument/Teknisk Dokumentation/text/05-end.tex
new file mode 100644
index 0000000..25d1503
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/text/05-end.tex
@@ -0,0 +1,17 @@
+\section{Programslut}
+\label{sec:programslut}
+display\_post\_race\_graphs(seg\_times1, seg\_times2, lap\_times1, lap\_times2,
+ref\_time) hanterar knapptryck för att byta mellan de två vyerna. Varje 0,4
+sekunder skickas ett kommando till displayen som kopierar det interna minnet
+till minnet som delas med styrdatorn. Minnet som delas med styrdatorn läses av
+och eventuella knapptryck hanteras genom anrop till antingen
+draw\_lap\_graph(...) eller draw\_segment\_graph(...).
+
+draw\_lap\_graph(lap\_times1, lap\_times2, ref\_time) ritar varvtider för
+ena bilen i taget och skriver ut medelvärde och standardavvikelse, se figur xx.
+
+Hur mycket ska jag skriva om implementationen här?
+
+draw\_segment\_graph(seg\_times1, seg\_times2)
+
+Samma fråga här som raden ovanför.
diff --git a/Dokument/Teknisk Dokumentation/text/06-resultat.tex b/Dokument/Teknisk Dokumentation/text/06-resultat.tex
new file mode 100644
index 0000000..5813682
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/text/06-resultat.tex
@@ -0,0 +1,84 @@
+\section{Resultat}
+
+Vid redovisningstillfället slutfördes två körningar på 15 varv vardera där de
+fem första var kalibreringsvarv (enligt krav 20 och 22). Vid den första
+körningen var referenstiden inställd på 13 sekunder och vid den andra var
+referenstiden inställd på 14 sekunder. De två körningarna finns uppritade i
+figur~\ref{fig:laptimes-calibration} med kalibreringsvarven och i figur~
+\ref{fig:laptimes-no-calibration} utan kalibreringsvarven med vald referenstid
+och den maximalt tillåtna avvikelsen på 0,5 sekunder (enligt krav 21) inritat.
+Figur~\ref{fig:segtimes} visar den genomsnittliga segmentstiden vid vardera
+körning.
+
+Vid den första körningen höll bilen en genomsnittlig varvtid på 13,22~sekunder
+med en standardavvikelse på 0,24~sekunder. $\pm$0,5~sekunder överträddes vid två
+av varven med varvtider på 13,54 och 13,52~sekunder.
+
+Vid den andra körningen höll bilen en genomsnittlig varvtid på 14,47~sekunder
+med en standardavvikelse på 0,26~sekunder. $\pm$0,5~sekunder överträddes vid
+fyra av varven med en maximal överträdelse på 0,31~sekunder långsammare än
+maximal tillåten varvtid (14,5~sekunder).
+
+Ingen av dessa körningar uppfyllde kraven på prestanda, alltså krav 20, 21 och
+23.
+
+Givarna lästes av mer än 10 gånger per sekund. Se REF för information om hur
+detta mäts.
+
+\begin{figure}
+ \centering
+ \begin{tikzpicture}
+ \begin{axis} [
+ ylabel=Tid (s),
+ legend pos = outer north east,
+ ybar interval=0.75
+ ]
+ \addplot+ [] coordinates {(1, 1.25) (2, 0.34) (3, 1.33) (4, 2.06) (5, 0.85)
+ (6, 1.74) (7, 2.55) (8, 1.97) (9, 1.28) (10, 1)};
+ \addlegendentry{Körning 1}
+ \addplot+ [] coordinates {(1, 1.27) (2, 0.30) (3, 1.44) (4, 2.14) (5, 1.01)
+ (6, 2.22) (7, 2.83) (8, 2.14) (9, 1.32) (10, 1)};
+ \addlegendentry{Körning 2}
+ \end{axis}
+ \end{tikzpicture}
+ \caption{Genomsnittlig segmentstid för de två körningarna från redovisningen.}
+ \label{fig:segtimes}
+\end{figure}
+
+\begin{figure}
+ \centering
+ \begin{tikzpicture}
+ \begin{axis} [xmin=0, xmax=15.5,ymin=10,ymax=20, xlabel=Varv, ylabel={Tid (s)},
+ legend pos=outer north east]
+ \addplot+ [blue, mark options={blue}, mark=square*] table [col sep=comma, x index=0, y index = 1] {stats/lap.csv};
+ \addlegendentry{Körning 1}
+ \addplot+ [red, mark options={red}, mark=*] table [col sep=comma, x index=0, y index = 2] {stats/lap.csv};
+ \addlegendentry{Körning 2}
+ \end{axis}
+ \end{tikzpicture}
+ \caption{Varvtider för de två körningarna från redovisningen, inklusive
+ kalibreringsvarven.}
+ \label{fig:laptimes-calibration}
+
+ \vspace*{\floatsep}% https://tex.stackexchange.com/q/26521/5764
+
+ \begin{tikzpicture}
+ \begin{axis} [xmin=5.5, xmax=15.5,ymin=12,ymax=16, xlabel=Varv, ylabel={Tid (s)},
+ legend pos=outer north east]
+ \addplot+ [blue, mark options={blue}, mark=square*] table [col sep=comma, x index=0, y index = 1] {stats/lap.csv};
+ \addlegendentry{Körning 1}
+ \addplot[blue, domain=0:20] {13};
+ \addlegendentry{Referenstid körning 1}
+ \addplot+ [red, mark options={red}, mark=*] table [col sep=comma, x index=0, y index = 2] {stats/lap.csv};
+ \addlegendentry{Körning 2}
+ \addplot [red, domain=0:20] {14};
+ \addlegendentry{Referenstid körning 2}
+ \draw[dotted] (axis cs:0,12.5) -- (axis cs:16,12.5);
+ \draw[dotted] (axis cs:0,13.5) -- (axis cs:16,13.5);
+ \draw[dotted] (axis cs:0,14.5) -- (axis cs:16,14.5);
+ \end{axis}
+ \end{tikzpicture}
+ \caption{Varvtider för de två körningarna från redovisningen, exklusive
+ kalibreringsvarven.}
+ \label{fig:laptimes-no-calibration}
+\end{figure}
diff --git a/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex b/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex
new file mode 100644
index 0000000..19e3003
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/text/system/01-innan-start.tex
@@ -0,0 +1,11 @@
+\subsection{Innan start}
+
+Vid uppstart ritas knappar ut på displayen, se figur x. Med dessa knappar går
+det att välja om en eller två banor ska vara aktiva och om de ska styras
+autonomt av systemet eller manuellt med handkontroll. Det går också att ställa
+in en referenstid mellan 12 och 15 sekunder med 0,5 sekunders intervall genom
+att trycka på + och - på displayen. För att reagera på knapptryck skickas varje
+0,4 sekunder ett kommando till displayen som instruerar displayen att lägga
+information om alla knapptryck som skett i dess interna minne. Detta interna
+minne läses sedan av och händelserna bearbetas i den kronologiska ordning de
+gjordes i.
diff --git a/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex
new file mode 100644
index 0000000..02b8869
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/text/system/02-uppstart.tex
@@ -0,0 +1,48 @@
+\subsection{Uppstart}
+\label{sec:systembeskrivning:uppstart}
+Vid autonom körning utgår systemet ifrån en bootstrap som är systemet för uppstarten av bilarna. Då körs funktionen \texttt{do\_boot()} som arbetar fram en
+initial \texttt{car.constant}. Detta sker i tre steg. Innan bilen börjar rulla
+höjs \texttt{car.constant} varje 0,7 sekunder. När bilen börjar rulla och åker
+under målgivaren höjs \texttt{car.constant} långsammare tills bilen åkt under
+den första givaren varpå \texttt{car.constant} inte längre ändras. Vid den
+tredje givaren jämförs hur lång tid det senaste segmentet tog att köra och en
+sista \texttt{car.constant} räknas ut som förväntas ge en varvtid på 15
+sekunder. Om den förväntade varvtiden är längre än 15 sekunder höjs
+\texttt{car.constant} och om den förväntade varvtiden är lägre sänks
+\texttt{car.constant}.
+
+\begin{figure}
+ \centering
+ \begin{tikzpicture}
+ \draw
+ (0,0) --
+ (1,0) --
+ (1,1) --
+ (2,1) --
+ (2,2) --
+ (3,2) --
+ (3,3) --
+ (4,3) --
+ (4,5) --
+ (7,5) --
+ (7,5.5) --
+ (10,5.5);
+ \draw [dotted] (10, 5.5) -- (14, 5.5);
+ \draw [->] (0,0) -- (15, 0) node[right]{$t$};
+ \draw [->] (0,0) -- (0, 8) node[above]{Spänning};
+ \draw [dotted] (4, 0) -- (4, 0.5) node[right]{Målgivarutslag} -- (4,3);
+ \draw [dotted] (10,0) -- (10, 3) node[right]{Bootstrap slut} -- (10, 5.5);
+ \draw [decoration={brace, raise=2pt}, decorate] (1,1) -- (2,1); % dt
+ \node at (1.5, 1.5) {$dt_1$};
+ \draw [decoration={brace, raise=2pt}, decorate] (1,0) -- (1,1);
+ \node at (0.5, 0.5) {$dU_1$};
+ \draw [decoration={brace, raise=2pt}, decorate] (4,3) -- (4,5);
+ \node at (3.5, 4) {$dU_2$};
+ \draw [decoration={brace, raise=2pt}, decorate] (4,5) -- (7,5);
+ \node at (5.5, 5.5) {$dt_2$};
+ \draw [decoration={brace, mirror, raise=2pt}, decorate] (7,5) -- (7,5.5);
+ \node at (7.55,5.25) {$dU_3$};
+ \end{tikzpicture}
+ \caption{Metod för start av bil.}
+ \label{fig:bootstrap}
+\end{figure}
diff --git a/Dokument/Teknisk Dokumentation/text/system/03-korning.tex b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
new file mode 100644
index 0000000..24d58ee
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/text/system/03-korning.tex
@@ -0,0 +1,86 @@
+\subsection{Körning}
+\label{sec:systembeskrivning:korning}
+
+Huvudloopen körs åtminstonde 10 gånger i sekunden. Den beräknar var bilen
+befinner sig, hur snabbt bilen ska köra, justerar \texttt{car.constant} och sätter det
+nya gaspådraget till banan.
+
+Majoriteten av förändringarna i structen \texttt{car} görs i funktionen \texttt{do\_car()}.
+I \texttt{do\_car()} beräknas först positionen (\texttt{car.position}),
+sedan motsvarande hastighetsparameter (\texttt{car.v}) och därefter det gaspådrag
+(\texttt{car.u}) som ska sättas till banan.
+
+\subsubsection{Position}
+\label{sec:system:korning:position}
+Det finns två fall när positionen ska beräknas. När en givare har passerats sedan förra positionsberäkningen och när ingen givare har passerats. Under första varvet hanteras endast det första fallet
+och från varv 2 och frammåt görs båda parallellt.
+
+Om en ny givare har passerats, \texttt{car.new\_check\_point == true}, ökar
+programmet nuvarande segment (\texttt{car.segment}) med 1. \texttt{car.segment}, som
+alltid ligger mellan 1 och 9, används som index för att välja position i en
+lista (\texttt{car.pos\_at}). Vi kallar den positionen för \emph{givarpositionen}.
+
+Om ingen givare har passerars och första varvet är avslutat kallas först på funktionen \texttt{get\_approx\_v()}. Denna utgår ifrån
+förra varvets segmentstider (\texttt{car.seg\_times}) och segmentslängder
+(\texttt{car.seg\_len}) och beräknar med $v = \frac{s}{t}$, där \texttt{s} är segmentslängden och \texttt{t} segmentstiden, \texttt{v} som är medelhastigheten för nuvarnade
+segment, men förra varvet. Denna antas vara ungefär samma som nuvarande
+hastiget och kallas \emph{car.v}.
+
+Sedan beräknas positionen, i meter från målgivaren, med funktionen
+\texttt{get\_position()}. Den använder den ungefärliga hastigheten \texttt{v} beräknad av
+\texttt{approx\_v()} och tiden \texttt{t} sedan denna beräkning gjordes senast (en programcykel, se \ref{sec:system:korning:cykel})
+och beräknar med $s = v \cdot t$ den sträcka som bilen har åkt. Sedan adderas denna
+med förra kända positionen och returneras i \texttt{car.position}. Denna
+\emph{beräknade} position tas också fram när en givare har passerats, då skrivs den över med \emph{givarpositionen} men används i stället för att detektera missade givare. Se \ref{sec:missade givare}.
+
+\subsubsection{Gaspådrag}
+
+Efter positionsberäkningen beräknas det gaspådrag som skall sättas till banan. Detta görs i två
+funktioner, \texttt{get\_new\_v} och \texttt{get\_new\_u}.
+
+I \texttt{get\_new\_v} används bilens nuvarande postition (\texttt{car.postition})
+och hastighetskartan (\texttt{car.map}). I \texttt{car.map} finns en
+hastighetsparameter för varje \texttt{car.position} (Se \ref{sec:begrepp och systemöversikt}.), denna retuneras av funktionen
+och sparas i \texttt{car.v}.
+
+I \texttt{get\_new\_u} används denna hastighetsparameter tillsammans med
+\texttt{car.constant}. Dessa multipliceras och deras produkt retuneras och sparas
+i \texttt{car.u}.
+
+\subsubsection{Governor}
+\label{sec:systembeskrivning:governor}
+Om bootstrap är avslutad, körs den del av koden vars ända uppgift är att
+anpassa \texttt{car.constant}.
+
+Detta görs med funktionen \texttt{do\_gov}. Först görs en uppskattning av
+varvtiden utifrån hur lång tid varvet har tagit än
+så länge. Detta görs med forecasts som beräknar den approximerade varvtiden utifrån tid fram tills senast
+passerad givare samt hastighet i tidigare segment. Genom att veta en
+genomsnittlig hastighet går det med kvarvarande sträcka att räkna ut en
+ungefärlig kvarvarande tid. När tiden från mål till senaste passerade givare adderas med
+den uträknade approximerade tiden kvar, så erhålls det en uppskattad varvtid som
+används för att avgöra om en bil behöver åka snabbare eller långsammare. Om bilen dock är inne på sitt första varv görs uppskattningen endast
+utifrån förra segmentet \texttt{car.forcasts\_naive} och om första varvet är
+avslutat så används \texttt{car.forcasts} som vanligt. Detta görs efter segment 4 och 8. Dessutom används den
+faktiska varvtiden när bilen passerar mål (från varv 2 och frammåt).
+
+Sedan jämförs denna uppskattade varvtid med referenstiden (\texttt{car.ref\_time})
+och \texttt{car.constant} justeras.
+\begin{verbatim}
+car.constant = car.constant + (status - 1) * 0.08;
+\end{verbatim}
+Där \texttt{status} är den uppskattade varvtidens förhållande till \texttt{car.ref\_time}.
+D.v.s om de är exakt lika blir \texttt{status~ =~ 1}, om uppskattningen är högre blir
+den större än 1 och om den är lägre blir den mindre än 1. Således kommer \texttt{car.constant}
+höjas eller sänkas proportionellt mot hur långt ifrån \texttt{car.ref\_time} uppskattningen
+av varvtiden ligger.
+
+\subsubsection{Hantering av cykellängd}
+\label{sec:system:korning:cykel}
+I slutet av varje cykel körs det en loop som tillfälligt pausar programmet.
+För att få avläsningen att ske minst en gång var tionde sekund så pausas
+programmet kontinuerligt 0.001 sekunder tills den totala paustiden överskrider
+0.07 sekunder då nästa cykel börjar. Då pausen på 0.001 sekunder är så pass
+kort och marginalen till kravet är rätt stor så sker avläsningen mellan
+0.07 och 0.1 sekunder. I en if-sats sparas den högst
+uppmätta tiden i \texttt{highToc}. \ No newline at end of file
diff --git a/Dokument/Teknisk Dokumentation/text/system/04-gas.tex b/Dokument/Teknisk Dokumentation/text/system/04-gas.tex
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/text/system/04-gas.tex
@@ -0,0 +1 @@
+
diff --git a/Dokument/Teknisk Dokumentation/text/system/05-display.tex b/Dokument/Teknisk Dokumentation/text/system/05-display.tex
new file mode 100644
index 0000000..5b36342
--- /dev/null
+++ b/Dokument/Teknisk Dokumentation/text/system/05-display.tex
@@ -0,0 +1,6 @@
+\subsection{Display}
+
+I varje programcykel skickas värdet på \texttt{car.u} till två stapeldiagram på
+displayen för vardera bil. Se \ref{app:funktioner och filer:display} för information om displayens
+stapeldiagram. Om ett nytt varv inleds skrivs dessutom förra varvnumret och
+varvtiden ut på displayen.